Hermet Park
c89f6253bf
lottie: compatibility++
...
retry image loading with the given candidates,
even if the suggested format is mismatched.
2024-02-01 12:14:42 +09:00
Hermet Park
fb4ad7d239
lottie: corrected text height alignment issues.
...
enhanced support for a wider range of text use cases.
2024-01-30 10:34:12 +09:00
Hermet Park
823b945666
lottie: rectified scene building Logic
...
resolved a corner case where assets were being attached
multiple times during scene building. This issue was causing
a significant performence drop in image animation
in certain scenarios.
2024-01-25 02:06:14 +09:00
Hermet Park
be809b2103
lottie: fixed an issue with missing stroke drawing
...
Resolved a problem where the context was missing in scenarios
involving an overlapped stroke drawing.
issue: https://github.com/thorvg/thorvg/issues/1933
2024-01-24 13:24:32 +09:00
Hermet Park
6944633f41
lottie: Improve feature coverage by correctly handling XOR shapes
...
XOR when the shape's direction property is set to a value of 2.
Currently, the direction property is expected to have
either 1 for clockwise or 3 for counterclockwise orientation.
Just found out the number 2 use-case...
2024-01-18 13:34:14 +09:00
Hermet Park
71cc7c2e30
lottie: Fixed the issue with gradient filling.
...
Previously, multiple gradients within a single group
couldn't be accounted for during rendering.
This fix addresses the scenario by fragmenting the rendering context.
2024-01-18 13:34:14 +09:00
Hermet Park
0335742864
lottie: properly capture the stroking context
...
Each group must determine the stroking rendering contexts
and assess whether context switching has occurred.
Migrate the sequence from the root layer to all groups.
2024-01-18 13:34:14 +09:00
Hermet Park
9109a62819
lottie: Newly added support for the text feature.
...
This enhancement enables embedded glyphs rendering.
The 'fonts' and 'chars' properties are now supported.
2024-01-12 10:57:46 +09:00
Jinny You
2c6c8d3b21
updated copyright date ( #1866 )
2023-12-28 10:43:25 +09:00
Vincent Torri
edf1f56c67
include missing headers for strcmp(), strdup() and realloc()
2023-12-13 10:33:52 +09:00
Hermet Park
0aa39111ad
common/array: code refactoring.
...
Use a default constructor with reservation.
2023-12-13 09:34:44 +09:00
Hermet Park
dd6956a7ac
lottie/builder: revert the clipper cache.
...
This ia a buggy,
We will revisit this optimization with a perfect solution.
2023-11-24 12:56:23 +09:00
Hermet Park
f2c29063d2
api: updated the recent changed api again.
...
Reordered by the data packing size.
Also removed a wrong capi default parameter value.
Result Picture::load(const char* data, uint32_t size, const std::string& mimeType, bool copy = false, const std::string& rpath = "")
-> Result load(const char* data, uint32_t size, const std::string& mimeType, const std::string& rpath = "", bool copy = false)
Tvg_Result tvg_picture_load_data(Tvg_Paint* paint, const char *data, uint32_t size, const char *mimetype, bool copy, const char* resourcePath)
-> Tvg_Result tvg_picture_load_data(Tvg_Paint* paint, const char *data, uint32_t size, const char *mimetype, const char* resourcePath, bool copy);
2023-11-23 11:59:38 +09:00
Hermet Park
023d961118
lottie/builder: ++size optimization
...
Replaced std::queue with inlist for optimizing binary size (-1.3kb).
2023-11-22 20:59:58 +09:00
Hermet Park
0c1322fa07
lottie/builder: corrected polystar rotation.
...
There was likely a mistake in the rotation value set;
there was no reason to multiply it by 2.
Issue: https://github.com/thorvg/thorvg/issues/1773
2023-11-22 00:39:02 +09:00
Hermet Park
4c95ed3e51
Lottie/builder: revert a static cache optimization.
...
There are some matting masking bugs observed,
Reverted the commit. We will revisit it later.
commit d37c500262
Author: Hermet Park <hermet@lottiefiles.com>
Date: Wed Oct 25 18:55:05 2023 +0900
lottie: introduced static layer cache.
lottie builder doesn't need to rebuild the layer object
if it has no any animation frame data.
That case, we can cache the layer scene in order to reuse it.
Tested on local machine (single thread):
- Lottie: appx. 2ms enhanced.
- Binary: +204
2023-11-21 13:05:04 +09:00
Hermet Park
5138a7c914
lottie/builder: hotfix, invalid stroking scaling.
...
There is a buggy workaround code that rewinds the stroke scaling.
Issue: https://github.com/thorvg/thorvg/issues/1730
2023-11-21 11:36:34 +09:00
Mira Grudzinska
25a1321243
common: stroke dash offset support with new apis.
...
This change just allows users to use the offset of the stroke dash.
Actually feature enhacement has been introduced by
478e45f9f3
.
@APIs:
uint32_t Shape::strokeDash(const float** dashPattern) ->
uint32_t Shape::strokeDash(const float** dashPattern, float* offset = nullptr)
Result Shape::strokeDash(const float* dashPattern, uint32_t cnt) ->
Result Shape::strokeDash(const float* dashPattern, uint32_t cnt, float offset = 0.0f)
Tvg_Result tvg_shape_set_stroke_dash(Tvg_Paint* paint, const float* dashPattern, uint32_t cnt) ->
Tvg_Result tvg_shape_set_stroke_dash(Tvg_Paint* paint, const float* dashPattern, uint32_t cnt, float offset)
Tvg_Result tvg_shape_get_stroke_dash(const Tvg_Paint* paint, const float** dashPattern, uint32_t* cnt) ->
Tvg_Result tvg_shape_get_stroke_dash(const Tvg_Paint* paint, const float** dashPattern, uint32_t* cnt, float* offset)
@Issue: https://github.com/thorvg/thorvg/issues/1372
2023-10-30 11:47:51 +09:00
Hermet Park
c77ef98fef
lottie/builder: enable layer blending
...
Issue: https://github.com/thorvg/thorvg/issues/1737
2023-10-27 12:13:00 +09:00
Hermet Park
db55481e97
renamed stroke apis family.
...
float Shape::stroke(float width) -> float Shape::strokeWidth(float width)
Result Shape::stroke(uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255) -> Result Shape::strokeFill(uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255)
Result Shape::stroke(std::unique_ptr<Fill> f) -> Result Shape::strokeFill(std::unique_ptr<Fill> f)
Result Shape::stroke(const float* dashPattern, uint32_t cnt, float offset = 0.0f) -> Result Shape::strokeDash(const float* dashPattern, uint32_t cnt, float offset = 0.0f)
Result Shape::stroke(StrokeCap cap) -> Result Shape::strokeCap(StrokeCap cap)
Result Shape::stroke(StrokeJoin join) -> Result Shape::strokeJoin(StrokeJoin join)
Result Shape::strokeColor(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a = nullptr) const -> Result Shape::strokeFill(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a = nullptr) const
@Issue: https://github.com/thorvg/thorvg/issues/1372
2023-10-27 11:46:51 +09:00
Hermet Park
5a3bc31373
lottie: ++optimization with a caching effect.
...
reuse clippers if they are available.
Binary: +132
2023-10-26 15:24:36 +09:00
Hermet Park
d37c500262
lottie: introduced static layer cache.
...
lottie builder doesn't need to rebuild the layer object
if it has no any animation frame data.
That case, we can cache the layer scene in order to reuse it.
Tested on local machine (single thread):
- Lottie: appx. 2ms enhanced.
- Binary: +204
2023-10-26 15:24:36 +09:00
Hermet Park
21fbdfc904
lottie: clean up code
...
no logical changes, only code clean-up
2023-10-26 11:22:45 +09:00
Hermet Park
e570064eba
animation/lottie: updated the frame count unit.
...
replace the frame count unit from the int32_t to float
since animations could smoothly interpolate key-frames.
This notificably improve the animation smoothness in Lottie
Beta API changes:
Result Animation::frame(uint32_t no) -> Result Animation::frame(float no)
uint32_t Animation::curFrame() const -> float Animation::curFrame() const
uint32_t Animation::totalFrame() const -> float Animation::totalFrame() const
2023-10-24 11:49:57 +09:00
Hermet Park
a6d7a19047
api: enhance the API usage.
...
Allow users to omit the default type casting for added convenience.
2023-10-18 14:35:57 +09:00
Hermet Park
3123e184c8
lottie: Fixed trimpath to support simultaneous trimpath
...
The previous version omitted support for simultaneous trimpath,
but it is now working as intended.
2023-10-17 21:13:38 +09:00
Hermet Park
625c2405fc
lottie/builder: Fix overlapped stroking outlines.
...
Previously, the builder accumulated the outlines and fills
in one paint to reduce the rendering context.
However, this approach won't work for Lottie
if the resource contains multiple strokes with branched groups.
We should apply the optimization
only when the specified condition is satisfied.
2023-10-17 21:13:38 +09:00
Hermet Park
3a2de2bc6a
lottie/builder: fix a regression bug.
...
currently thorvg doesn't support full 3d transformation.
orthogonal projection is mandatory.
Issue: https://github.com/thorvg/thorvg/issues/1698
2023-10-13 14:26:59 +09:00
Hermet Park
eba7f2f0d7
lottie/builder: revise the render context for saving memory.
...
Allocate repeater context only when it's valid.
2023-10-09 11:00:33 +09:00
Hermet Park
57038df21f
Lottie: Fixed handling of multiple strokes in one layer.
...
Revised the rendering logic of Lottie by creating a new rendering context
using a queue when multiple strokes are requested.
Issue: https://github.com/thorvg/thorvg/issues/1642
2023-10-09 11:00:33 +09:00
Hermet Park
7ec969be29
lottie/builder: Fix incorrect stroke width scaling propagation.
...
The transform (scale) should be applied to the following drawing elements,
not the previous stroke.
2023-09-26 14:24:52 +09:00
Hermet Park
fdd90605c7
lottie/builder: fix a memory leak.
...
fixed a memory leak in an exceptional case.
2023-09-26 10:48:33 +09:00
Hermet Park
3b611e0da9
lottie: fixed data conversion complie warnings
2023-09-22 12:35:13 +09:00
Hermet Park
cba2b0f724
lottie/builder: correct a parenting error.
...
There is a missing case where a layer didn't parent properly,
especially when the parent is the matte target.
2023-09-21 22:11:31 +09:00
Hermet Park
5b8c66f5c8
lottie/builder: fix an invalid matting result.
...
Previously, it ignored the matte when it was out of frames for the sake of optimization.
However, this led to an incorrect matting result.
It should make the scene invisible when the matting is invisible.
2023-09-21 22:11:31 +09:00
Hermet Park
2cada9c446
loader/lottie: code refactoring.
...
migrate transform from the group to the layer.
transformation is not necessary in group but layer.
This helps to reduce the unnecessary assigning of the transformation
in group instances.
2023-09-19 14:03:13 +09:00
Hermet Park
549f4b1308
loader/lottie: properly handle graident opacity attributes.
...
That property has been missed in the implementation.
2023-09-19 10:33:22 +09:00
Hermet Park
8aa12ca468
taskschduler: fix a regression deadlock issue
...
This fix introduces a workaround to enforce synchronous tasking on worker threads.
Sometimes, out of threads get stuck in a deadlock condition.
@Issue: https://github.com/thorvg/thorvg/issues/1636
2023-09-18 21:06:01 +09:00
Hermet Park
81599a14a0
loader/lottie: code refactoring
...
moved clipping logic to the coherent precomp method.
2023-09-18 10:41:00 +09:00
Hermet Park
42d7a5faed
loader/lottie: correct the frame range.
...
Fixed some incorrect time-remapping logic,
Also, the last frame should not be taken into account for the drawing.
2023-09-18 10:41:00 +09:00
Hermet Park
87dee3c1f7
loader/lottie: fix a memory leak
...
A dangling scene instance should be deleted properly.
2023-09-18 10:41:00 +09:00
Hermet Park
00ab8c254d
loader/lottie: fix a missing opacity propagation.
...
the propagated opacity size should be accumulated.
2023-09-14 21:14:33 +09:00
Hermet Park
6b3bd8b27a
loader/lottie: fix a precomposition+matting.
...
the matting target with a precomp lost the referencing in
the building the structure. this fixes it.
2023-09-13 10:11:24 +09:00
Hermet Park
2998eb18fc
loader/lottie: fix an invalid memory access crash.
2023-09-12 20:56:38 +09:00
Hermet Park
3752ad93b3
loader/lottie: do not draw zero size content
...
skip rendering by setting opacity zero, if the scale factor is zero.
2023-09-12 20:55:16 +09:00
Hermet Park
e14e108d4a
loader/lotte: ++clean code
2023-09-08 15:01:28 +09:00
Hermet Park
516e8bf042
loader/lottie: minimum support for 3D transform
...
It lacks perspective projection information,
so it transforms 3D axes with orthogonal projection.
2023-09-07 17:59:52 +09:00
Hermet Park
b5fcc90e5d
loader/lottie: fix a wrong precomp time remapping.
...
the remapped frame number should be applied to the only referenced
precomp layer.
2023-09-07 17:59:52 +09:00
Hermet Park
a49ac81543
loader/lottie: support the repeater property
2023-09-07 12:17:16 +09:00
Hermet Park
2fab9fb7d9
loader/lottie: fix the incorrect viewport clip condition.
...
the viewport clip should be applied when it has a precomposition reference
but should not apply to image assets.
2023-09-07 12:17:16 +09:00