Mira Grudzinska
e4ec2a8a0e
lottie: roundness refactored based on #2295
2024-08-23 01:18:50 +09:00
Mira Grudzinska
09313ae307
lottie: fix text update
...
The occurrence of a 'carriage return' (13) or 'end of text' (3)
caused the skipping of the next character check, immediately
searching for it in the list of available characters.
If the next character was also 13 or 3, it led to incorrect
interpretation; however, if it was the last character in the
sequence, a crash occurred.
2024-08-22 21:27:25 +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
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
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
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
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
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
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
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
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
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
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
Hermet Park
53a570e680
common: Fix a compilation failure on VS 2017
...
issue: https://github.com/thorvg/thorvg/issues/2512
2024-07-03 22:45:29 +09:00
Hermet Park
e8f1790e58
lottie: fix a regression bug of masking
...
InverseAlphaMasking should be applied as intended,
but it was mistakenly reverted to alpha.
regression in v0.14.0 by: 2c7a83406e
2024-07-03 13:21:47 +09:00
Hermet Park
cbf124632f
lottie: allow image asset sharing among LottiePicture instances
...
Previously, the Lottie builder didn't account for image asset sharing
among multiple layers. This update rectifies the situation.
issue: https://github.com/thorvg/thorvg/issues/2428
2024-07-03 13:21:47 +09:00
Hermet Park
269ef22a97
lottie/builder: revise the masking update.
...
Append the mask shape to the previous one, instead of composition,
when it's able by the condition.
issue: https://github.com/thorvg/thorvg/issues/2426
2024-07-03 13:21:47 +09:00
Hermet Park
189b1bf4e7
common: code refactoring
...
replaced min/max with the standard library
2024-07-01 22:10:46 +09:00
Josh Soref
e061fa6628
common: fix 178+ spelling errors
2024-07-01 21:58:46 +09:00
Hermet Park
2c7a83406e
lottie: hotfix for preventing a crash.
...
MaskMode=None is not properly addressed,
Prevent the crash from the use-case.
issue: https://github.com/thorvg/thorvg/issues/2426
2024-06-23 11:57:40 +09:00
Mira Grudzinska
d7ab592fb9
lottie: fix repeater order
...
Assigning numbers 1 or 2 to a bool always
resulted in true. Now fixed and repeated
shapes are drawn in the proper order.
If the repeater had no elements, iterating
shapes from the end would result in a segf.
This issue is now fixed.
2024-06-19 11:02:41 +09:00
Jinny You
e346cbb5ca
lottie: Add exception for lottie doesn't have exported glyph
...
Added handling logic for missing characters to prevent program hang.
2024-06-05 14:43:28 +02:00
Jinny You
97a1aa136a
lottie: Fix invalid font match
...
When Lottie has similar font names, it incorrectly matches fonts due to a logic bug.
This error causes an infinite loop when searching for glyphs.
2024-06-05 12:38:20 +09:00
Mira Grudzinska
33f5ea34c0
common: strokeTrim api introduced
...
New api sets/gets the trim of the stroke
along the defined path segment, allowing
control over which part of the stroke is
visible.
@issue: https://github.com/thorvg/thorvg/issues/2190
2024-06-05 11:55:36 +09:00
Mira Grudzinska
ca92d4a53b
lottie: fix matte layer finding
...
Layer identifiers do not have to be unique within
the entire file - they are unique within a given
group. Searching the entire composition to find
the referenced matte was an incorrect approach.
Error introduced by 1ee79a6c2a
@Issue: https://github.com/thorvg/thorvg/issues/2349
2024-06-04 15:27:44 +03:00
Mira Grudzinska
5b6a774b04
common: fix typos & remove unused var
2024-06-04 11:20:59 +09:00
Hermet Park
9300de2d06
lottie/builder: revise the layer build logic
...
Promote the text/image updates to the layer level.
2024-05-30 13:00:42 +09:00
Hermet Park
309f7b6763
lottie: try packing data compactly.
2024-05-30 13:00:42 +09:00
Hermet Park
80d0f5397a
lottie: optimize the internal data
...
encode the object name with the hash value
to save memory and enable fast data comparison.
2024-05-30 13:00:42 +09:00
Hermet Park
3cd30c3197
lottie: code refactoring & size reduction
...
- introduced a pasing logic for duplicates.
- renamed internal varaible, no logical changes.
- removed null checks after memory alloc fails.
- reduced 1kb size.
2024-05-30 13:00:42 +09:00
Hermet Park
7ce8db4d34
lottie: hotfix memory leaks by a regression
...
A regression bug by a recent change:
1ee79a6c2a
2024-05-30 12:52:39 +09:00