Commit graph

2747 commits

Author SHA1 Message Date
Jinny You
1e4fc955b4 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-07 10:51:48 +09:00
Mira Grudzinska
3a6fd4c0e4 common: clarification of returned types
The functions setting stroke's features always
returned a true. Returnig a boolen was a remnant
from a previous implementation. Since now they
never return false, they can be void functions.
The APIs description has been corrected.
2024-06-07 10:51:29 +09:00
Mira Grudzinska
c7822cca53 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-07 10:44:34 +09:00
Mira Grudzinska
1ff583b03d 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-07 10:43:52 +09:00
Martin Capitanio
eb6e635cd5 svg_loader: Add embedded webp mime type
Fixes loading _webp_ images embedded in SVG.
2024-06-07 10:43:41 +09:00
Mira Grudzinska
fb6b01a914 common: fix typos & remove unused var 2024-06-07 10:43:26 +09:00
Mira Grudzinska
ae90a9f18b 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-07 10:43:17 +09:00
Mira Grudzinska
0ea042e537 sw_engine: fix dashing
Fixing the problem with handling a specific
case where the length of the remaining line
to be drawn and the dash line length were
exactly the same
2024-06-07 10:42:59 +09:00
Hermet Park
20f82982b0 bump up version v0.13.6 2024-05-31 11:05:03 +09:00
Mira Grudzinska
75d17d8ad4 examples: fix heap-use-after-free in Capi.cpp 2024-05-31 11:04:38 +09:00
Hermet Park
9b427f426a lottie/builder: revise the layer build logic
Promote the text/image updates to the layer level.
2024-05-31 11:04:25 +09:00
Hermet Park
1823305ea3 lottie: try packing data compactly. 2024-05-31 11:01:29 +09:00
Hermet Park
71e3124469 lottie: optimize the internal data
encode the object name with the hash value
to save memory and enable fast data comparison.
2024-05-31 11:01:23 +09:00
Hermet Park
53818b41f2 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-31 11:01:17 +09:00
Hermet Park
d319765bc7 common/compressor: added djb2 encoder
This is useful for encoding the string into one long type value.
2024-05-31 11:01:11 +09:00
Hermet Park
163b5ed16a lottie: hotfix memory leaks by a regression
A regression bug by a recent change:
1ee79a6c2a
2024-05-31 11:00:59 +09:00
Jinny You
0ffd75976c wasm: Support viewport API
wasm binding for viewport API in web.

see: #2276
2024-05-31 11:00:50 +09:00
Mira Grudzinska
bf29289b3c lottie: repeater transformation fix
In the case of a transformation (denoted as T1)
appearing after the repeater, but at the same
level of nesting, the objects to which the repeater
is applied should not consider T1. However,
the transformation of the repeater itself should
take T1 into account.
Also, it is possible to have several consecutive
repeaters, and all of them should be taken into
account. Until now, the last one was overwriting
the previous one.
2024-05-31 11:00:40 +09:00
Mira Grudzinska
e69cc2b936 lottie: add 'tp' tag support
So far it hasn't been possible to specify
a matte layer - by default, it was the layer
above the calling layer. The 'tp' tag support
has been introduced, enabling referencing any
layer by its index.
In cases where the layer referencing the matte
was the first one, a segmentation fault was
observed. This issue has now been resolved.

@Issue: https://github.com/thorvg/thorvg/issues/2325
2024-05-31 11:00:33 +09:00
Mira Grudzinska
a70802d85c lottie: fix interpolation issue
Handled the case of different numbers
of points in consecutive frames. This
case can occur due to erroneous data
or as a consequence of changing the path
from closed to open and vice versa.

@Issue: https://github.com/thorvg/thorvg/issues/2287
2024-05-31 11:00:26 +09:00
RuiwenTang
086c2ed9a7 Fix AnimateMasking with GL backend not triger redraw 2024-05-31 11:00:14 +09:00
Niklas Fiekas
758f17f3fc sw_engine: fix -Wcalloc-transposed-args 2024-05-31 11:00:04 +09:00
Xu Xingliang
946abbddf2 capi: fix compile warning
Fix warning during build with lvgl https://github.com/lvgl/lvgl/pull/6081/

error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
Signed-off-by: Xu Xingliang <xuxingliang@xiaomi.com>
2024-05-31 10:59:46 +09:00
Hermet Park
93a1d4a4af common: code refactoring
Replace the math functions with operator overloading.
This should potentially reduce the code size.
2024-05-31 10:57:59 +09:00
Abdelrahman Ashraf
5d3db6d7bb fix: 🐛 missing binding for tvg_canvas_set_viewport c api 2024-05-24 13:29:15 +02:00
Hermet Park
86afc0e8e5 bump up version v0.13.5 2024-05-24 11:18:09 +09:00
Hermet Park
dfe0e19a2f math: introduced a custom floating epsilon
Rather than aiming for extremely high accuracy,
a compromise can achieve with better performance.

This modification helps prevent unnecessary image rotation.

issue: https://github.com/thorvg/thorvg/issues/2265
2024-05-24 11:17:37 +09:00
Hermet Park
9b89178ae9 lottie: fixed a missing slot overriding update.
the Lottie scene should be updated when the slot overriding
is updated. Previously, it only depended on the frame update.

issue: https://github.com/thorvg/thorvg/issues/2303
2024-05-24 11:17:37 +09:00
Mira Grudzinska
1c66b5fa3d svg_loader: fix data parsing
Added an additional XML entity to be
omitted while parsing.

@Issue: https://github.com/thorvg/thorvg/issues/2273
2024-05-24 11:17:37 +09:00
Jinny You
9c5eafd74e web: Reduce initial playing resources
Previously, the Intersection Observer doesn't filter hidden animations when page just loaded.

Ensure that the only visible animations to be played. Hidden resources will be frozen in the initial load.
2024-05-24 11:17:37 +09:00
Hermet Park
7e721e8ba7 web: Improve the performance.
Compared the FPS with ThorVG viewer at 1664x1664 resolution.
This minor tweak improves the performance by 2 to 5 FPS.
2024-05-24 11:17:37 +09:00
Hermet Park
24cdbc7369 wasm: code clean up
binary reduction by -188
2024-05-24 11:17:37 +09:00
Mira Grudzinska
3994ff0b01 lottie: matrix multiplication fix
In case the shapes could be merged, matrix
multiplication was not stored in any variable,
resulting in one of the transformations not
being applied.
2024-05-24 11:17:37 +09:00
Hermet Park
c4c6f177b3 renderer/canvas: tweak the viewport behavior.
reset the viewport context when target buffer is reset.
2024-05-24 11:17:37 +09:00
Hermet Park
89c86f6ad4 lottie: code clean up
- remove an unused return value.
- move bodies from header to implementation file.
- no logical changes.
2024-05-24 11:17:37 +09:00
Hermet Park
d8d717ec3f capi: support canvas viewport api
New Experimental API:
- Tvg_Result tvg_canvas_set_viewport(Tvg_Canvas* canvas, int32_t x, int32_t y, int32_t w, int32_t h);
2024-05-24 11:17:37 +09:00
Hermet Park
cc94060c6b xrenderer/engines: support the canvas viewport function.
The viewport function defines the rectangular area of the canvas
that will be used for drawing operations.

It is used to clip the rendering output to the boundaries of the rectangle.
Apps can use this function to set the drawing region within the canvas.

When the ThorVG canvas is partially inside the screen area such as during scrolling
it could help enhance rendering performance.

New Experimental API:
- Result Canvas::viewport(int32_t x, int32_t y, int32_t w, int32_t h) noexcept;

Issue: https://github.com/thorvg/thorvg/issues/2274
2024-05-24 11:17:37 +09:00
Hermet Park
a9b3ecf758 renderer/canvas: revise the logic.
introduce a status variable to identify
the condition precisely.
2024-05-24 11:17:34 +09:00
Hermet Park
19857966cb renderer/engines: added mainSurface() interface.
This interface expects the main surface of the raster engine.
2024-05-24 10:53:36 +09:00
Hermet Park
8403e2984b wg_engine: code refactoring
Use the override specifier so that
a compiler could warn any human mistake.
2024-05-24 10:53:28 +09:00
Mira Grudzinska
770ad3f179 lottie: fix build error without extras
After introducing roundness support, the build
process did not ensure proper compilation
for the case without expression support.
2024-05-21 16:31:48 +09:00
Hermet Park
6edac475f7 bump up version v0.13.4 2024-05-17 11:05:51 +09:00
Hermet Park
82bcdeba70 lottie: keep the code clean and neat.
- Separate the rounded corner logic from the updateStar
  since its logic has become too lengthy and complicated.
- Revise the path generation to eliminate duplicates.
2024-05-17 11:05:51 +09:00
Mira Grudzinska
dfe8570830 lottie: implement skew transformation
Added support for skew transformation by
a specified angle around a specified axis.
Applied to layers and shapes, not to repeaters.

@Issue: https://github.com/thorvg/thorvg/issues/2262
2024-05-17 11:05:51 +09:00
Mira Grudzinska
5183cf6737 lottie: fix access violation while updating
Fix access issue when iterating over children
in case of an empty container.

@Issue: https://github.com/thorvg/thorvg/issues/2283
2024-05-17 11:05:51 +09:00
Hermet Park
ebc37a0f12 lottie: fix compiler warnings. [-Wsign-compare] 2024-05-17 11:05:51 +09:00
Mira Grudzinska
08c8b92c4b lottie: handle roundness in path
Implemented rounding of corners between
bezier curves that are straight lines.

@Issue: https://github.com/thorvg/thorvg/issues/2230
2024-05-17 11:05:51 +09:00
Mira Grudzinska
1409b1356a lottie: support rounded stars
Implementation of the roundness property
for a polystar. Only the corners that were
not subject to rounding by the inner or
outer roundness parameters are affected.

@Issue: https://github.com/thorvg/thorvg/issues/2230
2024-05-17 11:05:51 +09:00
Hermet Park
6052407128 lottie: refactoring key frame logic.
compare floating-point values properly
to avoid potential precision loss.
2024-05-17 11:05:51 +09:00
Hermet Park
7b56240694 animation/lottie: improved the precision of frame values.
Refined the logic for updating frame numbers
to ensure greater accuracy in value precision.

issue: https://github.com/thorvg/thorvg/issues/2266
2024-05-17 11:01:35 +09:00