Commit graph

2649 commits

Author SHA1 Message Date
Hermet Park
a14a105acd
lottie: Corrected the Time Remapping Range (#1907)
enable exceeding the range of normalized values in time remapping.

the issue came from a misunderstanding of the lottie spec.

issue: https://github.com/thorvg/thorvg/issues/1809
2024-01-12 18:19:23 +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
Hermet Park
9bf8bb018d renderer/shape: refine the circle draw commands.
Adjusted the path's start point to 90 degrees
to align the origin consistently with other path commands.

No compatibility issue, this only could affect the trimpath effects.
2024-01-12 10:57:46 +09:00
Hermet Park
2954353fac Update README.md 2024-01-11 17:43:29 +09:00
Hermet Park
7cb88158cf doc: added LVGL in the practice section 2024-01-11 17:40:17 +09:00
Hermet Park
0eafcfd1b0 loader: code refactoring
Ensure scene data is freed when it's dangled in the loader.
2024-01-11 10:12:04 +09:00
Gabor Kiss-Vamosi
9958d346cf fix another type mismatch 2024-01-10 10:14:14 +02:00
Gabor Kiss-Vamosi
e207276490 fix the prototype of mpoolInit 2024-01-10 10:14:14 +02:00
Hermet Park
e95025d6d8 ttf: Fixed an invalid unicode encoding.
Ensured the data count is correctly multiplied by the data size.
2024-01-09 00:57:43 +09:00
JunsuChoi
02ae718277 loader/svg: Skip check for quotes inside quotes
Single or double quotation marks that occur before
closing the quotation mark are ignored.
2024-01-08 22:26:02 +09:00
Jinny You
1c04cab904 wasm: Add canvas clear on update
Fixed bug that canvas draws wrong frame at alpha area
2024-01-04 17:14:42 +09:00
Jinny You
abef84e935 web: Support save2png 2024-01-04 17:14:42 +09:00
Jinny You
44a8f9ffe1 web: Improve stop animation behavior
`stop` worked like `pause`, when stopping animation, frame should be at 0
2024-01-04 17:14:42 +09:00
Jinny You
2e2d19b98c web: Fix animation loading bug
when `lottie-player` has no `src` at first rendering, programmatical load wasn't working
2024-01-04 17:14:42 +09:00
Jinny You
8e50ea4a18 web: Add extra feature & property
- Support `resize` method
- Add `resolution` prop
2024-01-04 17:14:42 +09:00
Hermet Park
bacbd575b9 infra: bumped up version v0.12, set it dev mode. 2024-01-04 16:26:02 +09:00
Hermet Park
7dd709b4b8 saver/tvg: removed an unstable condition.
this optimization breaks the scene composition, remove it.

Issue: https://github.com/thorvg/thorvg/issues/1750
2024-01-03 16:45:33 +09:00
Jinny You
3896d21c3a web/examples: Add save2tvg 2024-01-03 13:51:42 +09:00
Jinny You
20a6ca19e7 web: Support file types
- added new exportable type `tvg`
- support jpg/png/svg/tvg load
2024-01-03 13:51:42 +09:00
Jinny You
5f088a2357 wasm: Revise saver methods 2024-01-03 13:51:42 +09:00
Hermet Park
8375c53461 ttf: removed the beta tag.
incorporate TTF support into the CI build tests.
2024-01-03 12:57:07 +09:00
Hermet Park
139a1c5e85 ttf: fix the windows compilation errors. 2024-01-03 12:57:07 +09:00
Hermet Park
15baf20363 tvg picture: binary version up. 2024-01-02 20:39:30 +09:00
Hermet Park
24901e7d59 docs: updated doxygen for 0.12 release 2024-01-02 20:39:19 +09:00
Sergii Liebodkin
450d56face
xides compilation issue with loaders (#1885) 2024-01-02 18:15:36 +09:00
Hermet Park
a6f4b5f38c examples: ++safety.
Guarantee the resource free at the termination.
2023-12-31 11:41:02 +09:00
Hermet Park
468b132739 renderer: enhanced shared surface handling with mutex implementation
Introduced a dedicated mutex for each surface instance
to ensure safe sharing between the loader, renderer, and engine.

This enhancement allows for secure modification and access to bitmap data,
addressing potential concurrency issues.

Multiple Picture instances can now safely share a single loader instance,
optimizing performance.

This change builds upon the previous Loader Cache improvements:
ff6ea4b6c4
2023-12-31 11:37:12 +09:00
Hermet Park
fbcfb3f865 svg: ensure that all allocated memory.
observed a memory leak at a corner case.
2023-12-31 10:45:26 +09:00
Hermet Park
cf35ca3392 lottie: resolve a thread sanitizer report.
Issue: https://github.com/thorvg/thorvg/issues/1874
2023-12-29 20:06:21 +09:00
Hermet Park
217c53e823 renderer/loader: improve thread safety
activeLoaders can be accessed by loaders within the worker thread.

the issue came up with the Loader cache feature:
ff6ea4b6c4

Issue: https://github.com/thorvg/thorvg/issues/1874
2023-12-29 16:57:09 +09:00
Hermet Park
ea4662a927 sw_engine: resolve a thread sanitizer report.
Synchronize before accessing the shared bbox.

Issue: https://github.com/thorvg/thorvg/issues/1874
2023-12-29 16:57:09 +09:00
Hermet Park
83042aa0a2 renderer/taskscheduler: Resolve a thread sanitizer report.
Since each thread worker accesses the 'threads.count' variable,
delay the thread starting until initialization is completed.
2023-12-29 16:57:09 +09:00
Hermet Park
8d3449a90d renderer/loader: code refactoring.
Removed internal unique_ptr usage for a more compact size.
2023-12-29 16:19:37 +09:00
Hermet Park
415276ae1c Revert "svg: removed an unnecessary nested scene."
A regression bug is occured.
clipper is also required to be transformed with loader->resize()...

This reverts commit e62a8668e7.
2023-12-28 18:46:42 +09:00
Hermet Park
97f41b4ad5 text/ttf: fixed all memory violations. 2023-12-28 18:37:05 +09:00
Hermet Park
e62a8668e7 svg: removed an unnecessary nested scene. 2023-12-28 18:06:33 +09:00
Jinny You
2c6c8d3b21
updated copyright date (#1866) 2023-12-28 10:43:25 +09:00
Hermet Park
ca44e46d3b gl_engine: fix a compiler warning.
../src/renderer/gl_engine/tvgGlRenderer.cpp:450:24: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
  450 |     for (auto i = 0; i < mComposePool.count; i++) {
      |
2023-12-27 16:42:49 +09:00
Hermet Park
1d9ea58be3 api: promote to official APIs.
New API:
- CanvasEngine::All
- SwCanvas::Colorspace::ABGR8888S
- SwCanvas::ColorSpace::ARGB8888S
2023-12-27 16:42:26 +09:00
Hermet Park
84e8e38f0a doc: remove unnecessary doxy guide. 2023-12-27 11:05:58 +09:00
Hermet Park
74f186b973
Update README.md 2023-12-27 00:46:01 +09:00
RuiwenTang
edb118a0c7 gl_engine: fix svg gradient position not correct
* change the color and stop size to 16 in shader and buffer block
* calculate transform when upload gradient info to gpu pipeline
2023-12-26 17:58:27 +09:00
Hermet Park
a38ee1e04e
Update README.md 2023-12-26 10:25:53 +09:00
Hermet Park
3c24150755
Update README.md 2023-12-26 10:22:29 +09:00
Hermet Park
2e870b5e98 doc: updated the guide. 2023-12-26 10:19:45 +09:00
Hermet Park
5bdfd03294 examples/text: Added Text example. 2023-12-25 12:40:12 +09:00
Hermet Park
0f69eef8ed renderer: introduce a ThorVG Text interface.
Introduced New APIs under the experimental tags.

- Result Text::font(const char* name, float size, const char* style = nullptr);
- Result Text::text(const char* text);
- Result Text::fill(uint8_t r, uint8_t g, uint8_t b);
- static Result Text::load(const std::string& path);
- static Result Text::unload(const std::string& path);
- static Text::std::unique_ptr<Text> gen();
- static Text::uint32_t identifier()

@Issue: https://github.com/thorvg/thorvg/issues/969
2023-12-25 12:40:12 +09:00
Hermet Park
061222bb59 renderer/loader: support ttf loader.
Applied 2 more internal LoaderMgr interfaces for
gobally manage the font data resources.

The next function is introduced for lookup the existing loader
with the font name (key)
- static LoaderMgr::LoadModule* loader(const char* key);

The next function is introduced to free the existing loader
with the loader source(file path)
- static bool retrieve(const string& path);

Additionally implements the base loader to bind the ttf loader.
2023-12-25 12:40:12 +09:00
Hermet Park
3c4e434b39 loader/ttf: introduce a new sfnt(scalable font) loader.
ttf is an industry standard format that is the most widely used
in the products. Now thorvg supports the basic features of
the font to supplement the text drawing.

The implementation is followed the ttf spec,
the covered features are:

- horizontal layouting with kerning.
- utf8 -> utf32 converted glyph drawing.

To use the feature, please enable ttf loader:
$meson -Dloaders="ttf_beta, ..."

@Issue: https://github.com/thorvg/thorvg/issues/969
2023-12-25 12:40:12 +09:00
Hermet Park
bd37e8ba37 common: Revise internal loader interfaces.
We are introducing the FontLoader, which slightly differs
from the ImageLoader in terms of features. To adequately
support both, we have separated the loader functionalities
into FontLoader and ImageLoader. This allows us to optimally
adapt the LoadModule for each case.
2023-12-25 12:40:12 +09:00