Commit graph

112 commits

Author SHA1 Message Date
Hermet Park
e34ba91ff1 lottie: code refactoring
removed a unused parameter.
2024-12-12 13:38:55 +09:00
Mira Grudzinska
6b416409c3 lottie: add TextCaps property support 2024-12-06 00:40:48 +09:00
Hermet Park
af7dbf2277 lottie: ++parser stability
fixed a parsing failure that occurred
when a desired single value was presented as part of an array.

issue: https://github.com/thorvg/thorvg/issues/2975
2024-11-27 16:54:33 +09:00
Hermet Park
951ea77f5d lottie: compact code++
use constructor to remove unnecessary function call
2024-11-26 01:11:03 +09:00
Hermet Park
e811a513f2 lottie: ++slot overriding
- fixed the ommiting the duplicate keyframe data overriding
- code refactoring

issue: https://github.com/thorvg/thorvg/issues/2988
2024-11-26 01:11:03 +09:00
Mira Grudzinska
a6fb2ef9a7 lottie: easing support in text range selector
@issue: #2178
2024-11-21 01:05:11 +09:00
Hermet Park
b7888c2ff3 lottie: --minor memory leak 2024-11-19 01:55:38 +09:00
Mira Grudzinska
a0f1c2d99d infra: prevent warning on windows
"conversion from 'float' to 'int8_t', possible loss of data"
2024-11-18 19:03:30 +09:00
Jinny You
931d0748bb lottie/slot: Fix incorrect image slot schema
Issue: #2964
2024-11-18 19:01:10 +09:00
Hermet Park
0b0488df82 lottie: corrected an omission in overriding the default slot
issue: https://github.com/thorvg/thorvg/issues/2953
2024-11-18 16:59:17 +09:00
Jinny You
efe7440fa0 lottie/slot: Support image overriding 2024-11-15 17:56:42 +09:00
Hermet Park
d8fa8f364c lottie: improve slots to properly override solid fill opacity 2024-11-09 17:28:56 +09:00
Hermet Park
f84b2331da lottie: support default slot overriding
issue: https://github.com/thorvg/thorvg/issues/2915
2024-11-09 17:28:52 +09:00
Hermet Park
2ad6753680 lottie: support drop shadow effect
issue: https://github.com/thorvg/thorvg/issues/2153
issue: https://github.com/thorvg/thorvg/issues/2718
2024-11-06 00:56:11 +09:00
Hermet Park
87761dc7c7 lottie/slot: revise gradient fill support
Revise gradient fill data parsing by adding support
for the color stop count (p) parameter in slot data.

issue: https://github.com/thorvg/thorvg/issues/2795
2024-11-04 11:43:36 +09:00
Hermet Park
c75ec0f333 lottie: code clean up 2024-11-01 22:44:39 +09:00
Jinny You
4f2e725da0 lottie/text: Support text alignment options
Introduced new properties:
- group alignment
- text grouping (words, line)

Issue: #2178
2024-11-01 22:11:45 +09:00
Hermet Park
f1cd65a876 lottie: corrected a shallow keyframe data copy bug
The previous assignment operator was missed due to a template error,
which has now been corrected.

issue: https://github.com/thorvg/thorvg/issues/2797
2024-11-01 12:40:38 +09:00
Mira Grudzinska
d9bbd433e8 lottie: correct the array reserved size
The color input will contain at least colorStops.count * 4
elements (not including alpha). Since the alpha offset values
don't have to much colorStops, estimation is used.
2024-10-18 12:10:11 +09:00
Hermet Park
0a16152d75 api: renamed the composite with mask.
Since we've separated ClipPath and Masking,
Masking now has a distinct and independent purpose.

API Modification:
 - enum class CompositeMethod -> enum class MaskMethod
 - Result Paint::composite(std::unique_ptr<Paint> target, CompositeMethod method) -> Result Paint::mask(std::unique_ptr<Paint> target, MaskMethod method)
 - CompositeMethod Paint::mask(const Paint** target) const -> MaskMethod Paint::mask(const Paint** target) const

issue: https://github.com/thorvg/thorvg/issues/1372
2024-10-16 14:41:26 +09:00
Mira Grudzinska
3fd095e947 lottie: add support for mask expansion
Implemented the mask attribute 'x' - expand mask.
Enforced rounded lines join according to tests in AE.

@Issue: https://github.com/thorvg/thorvg/issues/2832
2024-10-10 14:39:10 +09:00
Hermet Park
d8f6710c73 lottie: hotfix layer effect parsing
fixed a break in expressions/driving.json
2024-10-03 13:53:45 +09:00
Hermet Park
d038518e6d lottie: ++safety 2024-10-01 11:23:12 +09:00
Mira Grudzinska
2238109ada lottie: fix mem leak
Mem leak was observed in a case the end values
(deprecated feature) were provided for the gradient.

@Issue: https://github.com/thorvg/thorvg/issues/2667
2024-09-30 22:18:51 +09:00
Hermet Park
f08d7aa037 lottie: support layer effect & gaussian blur
issue: https://github.com/thorvg/thorvg/issues/2718
2024-09-29 15:04:22 +09:00
Jinny You
b9b1336817 lottie/text: hotfix for parsing text range issue
If randomize is not enabled, "rn" prop falls into skip()
2024-09-19 14:41:37 +09:00
Jinny You
9c5933a4e5 lottie/text: applied Text Range randomization.
on each parse, if the `randomize` is enabled,
the start and end of the Text Range are redefined
with the same gap as the original range.

issue: https://github.com/thorvg/thorvg/issues/2178
2024-09-19 11:05:24 +09:00
Jinny You
3f67c38c50
lottie/text: Support line spacing
Compute line spacing based on the text range selector, applying the maximum spacing value for each line.
issue: https://github.com/thorvg/thorvg/issues/2178
2024-09-10 11:44:32 +09:00
Hermet Park
a746e1fcd6 renderer: blending refactoring++
- reordered the blending types to align with lottie spec.
- removed source over.
2024-09-09 21:18:13 +09:00
Hermet Park
c1c51fbc10 lottie/parser: ++ null value handling
Note that, only dealt with a obivous case in practice.

issue: https://github.com/thorvg/thorvg/issues/2703
2024-09-03 19:03:54 +09:00
Hermet Park
45358a70ca lottie/parser: enable logs to notify missing features 2024-08-26 20:30:33 +09:00
Mira Grudzinska
87d85047aa lottie: add offsetPath support
Due to the lack of an analytical solution for Bezier
curves offsetting, a simple and computationally cheap
approximation has been implemented. The algorithm shifts
the segments connecting control points and determines
new points based on their intersections.

@issue: https://github.com/thorvg/thorvg/issues/2230
2024-08-23 01:18:50 +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
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
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
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
3181ea660f lottie: ++scene rendering optimization
Apply LottieRenderPooler to texts.
2024-07-22 12:08:27 +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
Hermet Park
22bab117a3 lottie: clarify shape direction.
There are only two options clockwise or counter-clockwise.
2024-07-12 00:39:31 +09:00
Hermet Park
4cb327c9fd lottie: ++ scene composing optimization
retain resuable layer solid paint during animation.
2024-07-11 21:30:31 +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
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
4f354f6d5e lottie/parser: optimization++
Skip the data constructuion if the mask mode
is none. it's not used at all.
2024-07-03 13:21:47 +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