Commit graph

24 commits

Author SHA1 Message Date
Hermet Park
102414d56f lottie: resolve a thread sanitizer report.
Issue: https://github.com/thorvg/thorvg/issues/1874
2024-01-02 20:34:12 +09:00
Jinny You
92288c8291 updated copyright date (#1866) 2024-01-02 20:34:12 +09:00
Hermet Park
c0a1f82033 renderer/loader: optimization++
removed the internal unique_ptr usage to reduce the binary size(-553)
2024-01-02 20:34:10 +09:00
Hermet Park
f64ee28079 Loaders: Introduced a loader cache.
The loader cache is applied to conserve memory.

If the input data is already present in loaders,
the loader cache will promptly return the active loader.

This results in a lot of memory savings for the duplicated resources.

binary diff: -400 bytes
2024-01-02 20:34:10 +09:00
Hermet Park
965e58806a lottie/builder: Fix a broken animation
The animation couldn't be triggered on a single thread.
Regression bug introduced by 29b5bc372d
2023-12-26 18:23:46 +09:00
Hermet Park
4ba8ff1e11 lottie/loader: Corrected an issue with the return value when loading fails.
Previously, Picture::load(const char* data, uint32_t size, const std::string& mimeType, bool copy = false)
would return 'Success' even when the data is invalid.

This issue only occurred when the number of threads is set to 0.
2023-12-26 18:23:40 +09:00
Hermet Park
58311ee5c3 saver/gif: Fix a clipping issue.
The Lottie loader missed handling the base clipper resizing.
This patch addresses the issue.
2023-12-26 18:18:27 +09:00
Hermet Park
ab8dd8a9c2 lottie: ++optimization with a caching effect.
reuse clippers if they are available.

Binary: +132
2023-12-26 18:01:51 +09:00
Hermet Park
0832a188fe 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-12-26 17:51:53 +09:00
Hermet Park
1819fed033 renderer/paint: fixed a mismatched reference count.
This correction ensures a consistent use of 'ref' and 'unref' for paints to release memory properly.
The memory leak occurred when a picture was not pushed to a valid canvas.

This issue was reported by the unit-test memory sanitizer.
2023-09-26 10:48:33 +09:00
Hermet Park
664f028c15 loader/lottie: fix all data conversion compiler warnings on windows 2023-08-18 16:36:15 +09:00
Hermet Park
3b2c040f70 loader/lottie: add the missing solid color layer. 2023-08-17 23:03:37 +09:00
Mira Grudzinska
5bafdcbfa3 lottie_loader: return false for frameRate = 0
Loading a png file without giving a mimetype, resulted
in an error from the lottie loader.
2023-08-17 18:47:51 +09:00
Hermet Park
df43f91644 loader/lottie: optimize the header task.
To achieve full threading efficiency,
the header should return the necessary properties:
view size, framerate, and duration.

This commit adds duration parsing.

Also don't do the header task in case of single thread
because there wouldn't be parallel effects.
2023-08-15 15:48:53 +09:00
Hermet Park
374a125280 loader/lottie: enhance stability
Addressed corner cases to prevent memory violations.
2023-08-11 15:00:09 +09:00
Hermet Park
f757eb6a71 loader/lottie: Support image property
This change makes it possible to use Lottie animations
that contain images from embedded/external resources.
2023-08-08 23:47:58 +09:00
Hermet Park
f31076a67e utils/str: Supplements functions.
Added strDirname(), which returns the directory path name from the given string.
Added str2int(), which converts from the string to the integer.

These functions are used to supplement the existing string manipulation functions in the utils/str module.
2023-08-08 23:47:58 +09:00
Mira Grudzinska
6ad4a0b180 lottie_loader: custom strtof and strndup used
The custom version of 'strtof' must be used
because its result is dependent on the current
locale, which is't set in the project.
2023-08-05 11:49:36 +09:00
Mira Grudzinska
4786ffc315 lottie_loader: fixing error with math consts
The math.h was included before the _USE_MATH_DEFINES
was defined (in tvgMath.h) causing an error while
MinGw was used.
Since non of these header is needed directly, the header
is removed.
2023-08-01 14:53:36 +02:00
Hermet Park
68b8fce501 loader lottie: ++optimization.
Aggressive parallelization is implemented to perform updates
on every frame in an asynchronous manner.
2023-07-28 16:54:44 +09:00
Hermet Park
193a9833a8 lottie loader: implement the necessary interaces. 2023-07-27 00:31:27 +09:00
Hermet Park
73a8792eae loader lottie: add lottie builder. 2023-07-27 00:31:27 +09:00
Hermet Park
03f878bb2e loader lottie: adds the lottie property, model and parser. 2023-07-27 00:31:27 +09:00
Hermet Park
60f81b7da7 loader lottie: added empty interface body
This marks the first step towards implementing the Lottie feature.
2023-07-27 00:31:27 +09:00