Elliott Sales de Andrade
5f08b9ade4
build: Remove redundant comparisons
...
If a Meson option is typed as `boolean`, the `get_option` returns a
boolean, and comparing it with `true` is redundant. Meson also errors if
you try to compare across types, so it couldn't _not_ be a boolean.
Also, Meson is not C, so no need for parentheses around `if` conditions.
2024-08-19 17:42:40 +09:00
Hermet Park
9c36b78140
lottie: ensure a null terminator at the end of the copied data
...
In certain cases, the user might want to set mapped memory directly.
This update ensures that a null terminator is appended to the string data.
Co-Authored-By: Mira Grudzinska <mira@lottiefiles.com>
Issue: https://github.com/thorvg/thorvg/issues/2642
2024-08-17 13:37:10 +09:00
Mira Grudzinska
7c13da461a
lottie: prioritization of roundness in rectangles
...
Added prioritization of rectangle roundness over
rounded corners, in line with AE results.
2024-08-14 11:16:54 +09:00
Mira Grudzinska
e50bf002de
lottie: handle edge case for rounded rect
...
For rounded rectangles the roundness value should
be determined using to the formula:
r = min(r, max(size.x, size.y)/2)
rather than the previous method:
r = min(size.x/2, size.y/2, r)
2024-08-12 18:52:14 +09:00
Hermet Park
290b52198f
lottie: code refactoring
...
getting too many parameters,
migrated static functions to class member functions,
reducing the binary size by 2KB
no logical changes
2024-08-12 17:41:51 +09:00
Hermet Park
7fb0762454
lottie: ++scene rendering optimization
...
Apply LottieRenderPooler to RenderContext propagators.
2024-08-12 13:55:31 +09:00
Hermet Park
62f88ec072
lottie: ++scene rendering optimization
...
Apply LottieRenderPooler to maskings.
2024-08-12 13:55:31 +09:00
Mira Grudzinska
75ed0e4e09
lottie: handle rounded polygons
...
The implementation of rounded polygons was
mistakenly omitted, now has been added.
@Issue: https://github.com/thorvg/thorvg/issues/2624
2024-08-10 13:40:44 +09:00
Hermet Park
3e78a95b57
lottie: support matte+masking combination
...
introduced an intermediate scene for embracing
the matte and maskings
2024-08-08 13:55:16 +09:00
Hermet Park
69dccc326a
lottie/expressions: rectified fill color support
...
Assign the fill color value properly.
2024-08-07 19:27:34 +09:00
Hermet Park
de9da0b93a
lottie: code refactoring
...
Moved common data declarations to tvgLottieCommon.h.
2024-08-07 19:27:34 +09:00
Hermet Park
f7221f7f89
lottie/expressions: revised exception handlings
2024-08-07 14:59:09 +09:00
Hermet Park
33d7425294
lottie/model: implement the missing property() interface
2024-08-07 14:59:04 +09:00
Hermet Park
ee3293401b
renderer/picture: added a method to search for a paint object
...
This utility method allows access to a specific paint instance
by its unique identifier.
Experimental API:
- const Paint* Picture::paint(uint32_t id)
- const Tvg_Paint* tvg_picture_get_paint(Tvg_Paint* paint, uint32_t id)
2024-08-07 12:02:22 +09:00
Hermet Park
45352c9a1f
API: introduce a Paint ID member as a reserved field
...
The "id" is a reserved field to specify a paint instance in a scene.
in this change, it assigns the layer id to the lottie scene as well.
2024-08-07 12:02:22 +09:00
Hermet Park
49f3395631
renderer: newly support the Lighten/Darken Masking options
...
Lighten is applied, where multiple masks intersect,
the highest transparency value is used.
Darken is applied, where multiple masks intersect,
the lowest transparency value is used.
Experimental API:
- CompositeMethod::LightenMask
- CompositeMethod::DarkenMask
issue: https://github.com/thorvg/thorvg/issues/2608
2024-08-07 11:04:38 +09:00
Hermet Park
2edb3abbfb
lottie/expressions: add missing expressions property updates
...
apply expressions to separate x/y transform coordinates.
2024-08-01 19:53:49 +09:00
Hermet Park
b636590bf4
lottie: remove useless condition check.
...
lottie is always animatable.
2024-08-01 12:57:35 +09:00
Hermet Park
c257994d5c
lottie/expressions: feature enhancement
...
added groupIndex() support
added property (ix) value support
2024-07-31 18:26:42 +09:00
Hermet Park
397e33b158
lottie: code refactoring
...
Access its type from a property instance,
through coherent data structure.
2024-07-31 18:26:42 +09:00
Łukasz Pomietło
dc0029a7e1
ttf_loader: Basic support for composite glyphs loading ( #2600 )
...
Adds the ability to load some composite glyphs and prevents an error when a composite glyph is used.
Implementation based on ttf glyf table documentation: https://learn.microsoft.com/en-us/typography/opentype/spec/glyf
There are still some missing features like scaling, parent glyph point based positioning etc. I think this is a topic for future work. Howerever, it looks like implemented features are enough for utf-8 latin subset in major fonts.
issue: #2599
2024-07-31 12:51:22 +09:00
Hermet Park
036ae3c2af
renderer: code refactoring
...
Replaced the transformation with
a strong associated data field.
This helps to reduce the binary size (-1k).
2024-07-29 23:27:19 +09:00
Hermet Park
356b813f79
lottie/expressions: hotfix
...
- fixed a memory leak.
- corrected loopIn key value.
2024-07-26 16:03:55 +09:00
Hermet Park
c8c565df92
lottie/expressions: feature support enhancement
...
- revised the transformation building logic.
- rectified to properly search "this" composition layers.
- rectified the linear interpolation implementation.
- added "pingpong" looping attributes.
2024-07-24 11:26:20 +09:00
Hermet Park
3804bbec57
lottie: code refactoring
...
- removed unnecessary variables.
- migrated the composition methods to the precomp layer.
2024-07-24 11:26:20 +09:00
Hermet Park
c7ae3ae2af
svg: resolve compiler warnings.
...
../src/loaders/svg/tvgSvgLoader.cpp: In function ‘bool _toColor(const char*, uint8_t*, uint8_t*, uint8_t*, char**)’:
../src/loaders/svg/tvgSvgLoader.cpp:108:17: warning: ‘hue’ may be used uninitialized [-Wmaybe-uninitialized]
108 | const char* _end = end ? *end : nullptr;
| ^~~~
../src/loaders/svg/tvgSvgLoader.cpp:713:31: note: ‘hue’ was declared here
713 | const char *content, *hue, *saturation, *brightness;
| ^~~
../src/loaders/svg/tvgSvgLoader.cpp:108:17: warning: ‘saturation’ may be used uninitialized [-Wmaybe-uninitialized]
108 | const char* _end = end ? *end : nullptr;
| ^~~~
../src/loaders/svg/tvgSvgLoader.cpp:713:37: note: ‘saturation’ was declared here
713 | const char *content, *hue, *saturation, *brightness;
| ^~~~~~~~~~
../src/loaders/svg/tvgSvgLoader.cpp:108:17: warning: ‘brightness’ may be used uninitialized [-Wmaybe-uninitialized]
108 | const char* _end = end ? *end : nullptr;
| ^~~~
../src/loaders/svg/tvgSvgLoader.cpp:713:50: note: ‘brightness’ was declared here
713 | const char *content, *hue, *saturation, *brightness;
| ^~~~~~~~~~
2024-07-23 17:09:26 +09:00
Hermet Park
18eb465fe8
lottie: ++optimization with object culling
...
More precisely, culling the render objects by
determining if the group has no renderable objects.
Additionally, check opacity to quickly return
in the rendering process.
2024-07-22 17:17:08 +09:00
Hermet Park
bc30bca366
lottie: hotfix with an intermediate patch merge.
2024-07-22 12:28:17 +09:00
Hermet Park
3181ea660f
lottie: ++scene rendering optimization
...
Apply LottieRenderPooler to texts.
2024-07-22 12:08:27 +09:00
Hermet Park
803dcb3fb9
lottie/expressions: ++coverage enhancement
...
Allow to access layer index globally.
2024-07-19 23:01:29 +09:00
Hermet Park
16cb1020ac
lottie/expressions: added a missing polystar property build.
2024-07-18 20:46:06 +09:00
Hermet Park
f06127ab93
lottie: ++scene rendering optimization
...
Apply LottieRenderPooler to path/rect/ellipse/polystar.
This enhances the animation performance: ~10%
2024-07-14 19:26:51 +09:00
Hermet Park
c20ecbcc58
lottie: introduced LottieRenderPooler
...
LottieRenderPooler is designed to manages rendering
instances(paints) efficiently through a simple pooling
mechanism to resuse among the animations
This replaces the previous individusal paints implemenations
among solidfill, precomp vierport and pictures,
also fix a potential paints corruption problems.
2024-07-13 19:22:06 +09:00
Hermet Park
cfc8f13584
lottie/parser: tiny binary size reduction
2024-07-12 14:43:00 +09:00
Mira Grudzinska
8340c1e1d7
lottie: support 'direction' in ellipses
2024-07-12 14:23:27 +09:00
Mira Grudzinska
bedaa909ad
lottie: remove unnecessary cast
2024-07-12 13:54:49 +09:00
Hermet Park
22bab117a3
lottie: clarify shape direction.
...
There are only two options clockwise or counter-clockwise.
2024-07-12 00:39:31 +09:00
Mira Grudzinska
6025635712
lottie: apply direction to rect
2024-07-12 00:05:08 +09:00
Hermet Park
4cb327c9fd
lottie: ++ scene composing optimization
...
retain resuable layer solid paint during animation.
2024-07-11 21:30:31 +09:00
Hermet Park
d95ec72335
lottie: ++ scene composing optimization
...
retain reusable precomp clipper shapes during animation.
2024-07-11 21:30:31 +09:00
Hermet Park
d6d4839f1a
lottie: ++memory access stability
...
Internal matrix can be null.
This update prevents such cases by using a safer API.
2024-07-11 01:03:50 +09:00
Jinny You
fdc1ad4d2c
lottie/text: Support text range selector (Phase 1)
...
This patch provides initial support for the text range selector. Full support will be added gradually in subsequent steps. This is the first step.
Text range selector with following properties:
1. Text Range Selector (Units)
2. Text Style
- Fill Color
- Fill Opacity
- Stroke Color
- Stroke Width
- Stroke Opacity
- Opacity
- Rotation
- Position
- Scale
2024-07-11 00:49:57 +09:00
Hermet Park
5a2a6fc4a9
common: replace the round() with nearbyint()
...
nearbyint() is 2x faster than round() in our local test.
2024-07-10 23:43:10 +09:00
Mira Grudzinska
e07ff127dd
lottie: improvement 3d rotation
...
For rotation around the X and Y axes, the transformation
matrix was incorrectly created - elements e12 and e21
were omitted. Now fixed.
2024-07-10 16:58:03 +09:00
Hermet Park
69b1fb8208
common/math: code refactoring
...
- migrate tvgLine to tvgMath
- associate line functions with classes.
2024-07-10 00:21:02 +09:00
Hermet Park
44955b704e
common/math: code refactoring
...
Replaced the prefix "math" with "tvg" namespace.
2024-07-10 00:21:02 +09:00
Hermet Park
79cf7ca5af
common/math: introduced custom atan2()
...
the custom atan2 algorithm by Remez.
see: https://en.wikipedia.org/wiki/Remez_algorithm
This improved the Lottie example by ~2ms.
Total atan2 performance time was reduced by 43%
2024-07-09 23:50:37 +09:00
Hermet Park
e0116b90c4
lottie: code refactoring
...
- _draw() returns boolean whether merging shape is allowed or not.
- renamed some internal variables.
2024-07-09 12:27:32 +09:00
Mira Grudzinska
49e58eecc0
lottie: enhance support for ao: 1
...
Adding support for auto-orient=true for frames <= first
and >= last, as well as for positions specified without
outer and inner tangent.
2024-07-09 12:27:21 +09:00
Mira Grudzinska
423e37d4d5
lottie: add support for image size
...
The width and height of the image must
be specified in the Lottie file and must
be taken into account during rendering.
2024-07-08 21:20:34 +09:00