Hermet Park
a5f69a9bbc
lottie: remove useless condition check.
...
lottie is always animatable.
2024-08-09 11:33:38 +09:00
Hermet Park
a85f323425
lottie/expressions: feature enhancement
...
added groupIndex() support
added property (ix) value support
2024-08-09 11:33:38 +09:00
Hermet Park
a70c211409
lottie: code refactoring
...
Access its type from a property instance,
through coherent data structure.
2024-08-09 11:33:38 +09:00
Hermet Park
8c4b9b2772
renderer: code refactoring
...
Replaced the transformation with
a strong associated data field.
This helps to reduce the binary size (-1k).
2024-08-09 10:49:26 +09:00
Hermet Park
84475df8ab
lottie/expressions: hotfix
...
- fixed a memory leak.
- corrected loopIn key value.
2024-07-26 13:05:37 +09:00
Hermet Park
b95ddd3112
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-26 11:37:16 +09:00
Hermet Park
6d97172227
lottie: code refactoring
...
- removed unnecessary variables.
- migrated the composition methods to the precomp layer.
2024-07-26 11:37:16 +09:00
Hermet Park
ac7177127a
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-26 11:37:16 +09:00
Hermet Park
859cac20dd
lottie: hotfix with an intermediate patch merge.
2024-07-26 11:37:16 +09:00
Hermet Park
ecec838006
lottie: ++scene rendering optimization
...
Apply LottieRenderPooler to texts.
2024-07-26 11:37:16 +09:00
Hermet Park
bd0a7725e0
lottie/expressions: ++coverage enhancement
...
Allow to access layer index globally.
2024-07-26 11:21:05 +09:00
Hermet Park
e0b2cc462b
lottie/expressions: added a missing polystar property build.
2024-07-19 08:43:24 +09:00
Hermet Park
cf253dd873
lottie: ++scene rendering optimization
...
Apply LottieRenderPooler to path/rect/ellipse/polystar.
This enhances the animation performance: ~10%
2024-07-19 08:41:38 +09:00
Hermet Park
1131695ce4
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-19 08:39:53 +09:00
Hermet Park
d13606e14b
lottie/parser: tiny binary size reduction
2024-07-19 08:35:18 +09:00
Mira Grudzinska
917917de7a
lottie: support 'direction' in ellipses
2024-07-19 08:35:08 +09:00
Mira Grudzinska
9ebc2045d6
lottie: remove unnecessary cast
2024-07-19 08:35:01 +09:00
Hermet Park
4f2f4dbf26
Revert "Revert "lottie: ++ scene composing optimization""
...
This reverts commit 8c3586a7c4
.
2024-07-19 08:34:25 +09:00
Hermet Park
8c3586a7c4
Revert "lottie: ++ scene composing optimization"
...
This reverts commit bfdc8e4de7
.
hotfix due to a memoy corruption. please see asan test.
2024-07-12 11:28:48 +09:00
Hermet Park
774d366dc2
lottie: clarify shape direction.
...
There are only two options clockwise or counter-clockwise.
2024-07-12 11:18:56 +09:00
Mira Grudzinska
39bc836eef
lottie: apply direction to rect
2024-07-12 11:18:56 +09:00
Hermet Park
3336e85025
lottie: ++ scene composing optimization
...
retain resuable layer solid paint during animation.
2024-07-12 11:18:56 +09:00
Hermet Park
bfdc8e4de7
lottie: ++ scene composing optimization
...
retain reusable precomp clipper shapes during animation.
2024-07-12 11:18:56 +09:00
Hermet Park
e1871f79f8
lottie: ++memory access stability
...
Internal matrix can be null.
This update prevents such cases by using a safer API.
2024-07-12 11:18:56 +09:00
Jinny You
b24e876a67
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-12 11:18:56 +09:00
Hermet Park
318c76119a
common: replace the round() with nearbyint()
...
nearbyint() is 2x faster than round() in our local test.
2024-07-12 11:18:56 +09:00
Mira Grudzinska
29b06e0d9a
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-12 11:18:56 +09:00
Hermet Park
1c8698ce20
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-12 11:18:56 +09:00
Hermet Park
04dbc5f509
lottie: code refactoring
...
- _draw() returns boolean whether merging shape is allowed or not.
- renamed some internal variables.
2024-07-12 11:18:56 +09:00
Mira Grudzinska
0e0c25e873
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-12 11:18:56 +09:00
Mira Grudzinska
c657e53f48
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-12 11:18:56 +09:00
Hermet Park
4bd42ec7b1
lottie: ++thread safety.
...
comp pointer is used for checking if the header is ready.
It can be written in a worker thread and needs a critical
section on the reader side.
This also potentally improve the thread efficiency
from the segment() / marker() function calls.
2024-07-12 11:00:46 +09:00
Hermet Park
a328343dc7
common: Fix a compilation failure on VS 2017
...
issue: https://github.com/thorvg/thorvg/issues/2512
2024-07-05 10:58:04 +09:00
Hermet Park
64a0b84d71
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-05 10:57:56 +09:00
Hermet Park
938d775ae5
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-05 10:57:09 +09:00
Hermet Park
b8b2478572
lottie/parser: optimization++
...
Skip the data constructuion if the mask mode
is none. it's not used at all.
2024-07-05 10:55:56 +09:00
Hermet Park
e4cbee61c8
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-05 10:55:48 +09:00
Hermet Park
10d96b32a0
lottie: remove exception handling
...
don't stop the parsing when the data type is incorrect.
just let it slide.
issue: https://github.com/thorvg/thorvg/issues/2389
2024-07-05 10:54:54 +09:00
Hermet Park
0874116742
lottie/rapidjson: --assert
...
Save binary size about 0.8kb
2024-07-05 10:54:46 +09:00
Vincent Torri
98eb16a61e
json loader: fix warnings in jerryscript on Windows
2024-07-05 10:54:21 +09:00
Hermet Park
f3469350b9
lottie: fix a data-race problem
...
make it sync call before accessing the composition data
from marker and segments.
issue: https://github.com/thorvg/thorvg/issues/2462
2024-06-27 14:42:27 +09:00
Hermet Park
933176e309
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-27 14:42:27 +09:00
Hermet Park
a0c6025132
lottie: fix a compile error on MSC with clang.
...
issue: https://github.com/thorvg/thorvg/issues/2347
2024-06-27 14:42:27 +09:00
Mira Grudzinska
d9326921fa
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-24 14:56:31 +09:00
Jinny You
8a1a3e54ee
lottie: Add exception for lottie doesn't have exported glyph
...
Added handling logic for missing characters to prevent program hang.
2024-06-24 14:42:33 +09:00
Jinny You
2f26dc33a9
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-24 14:42:19 +09:00
Mira Grudzinska
e6f4b5a2a8
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-24 14:37:53 +09:00
Mira Grudzinska
bdd506bbb8
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-24 14:37:29 +09:00
Mira Grudzinska
f14be7c33b
common: fix typos & remove unused var
2024-06-24 14:36:43 +09:00
Mira Grudzinska
5e9b07ea54
lottie: parsing obj property inside this obj
...
Shape's property 'direction' should be parsed
together with other properties specific for
the shape. This solves the issue with direction-
it wasn't working.
2024-06-24 14:36:36 +09:00