Jinny You
bb5ba81149
wasm: switch to Emscripten-specific WebGPU header
...
Use <emscripten/html5_webgpu.h> for browser-specific WebGPU support.
2024-12-04 19:00:18 +09:00
Hermet Park
0ebbc614be
api: 1.0 specification revision
...
- Enhanced Scene management to provide users with more control.
- Scenes now support adding specific scenes at defined positions and removing them as needed.
- Ensure safe access to Canvas, Scene paints() by adding const specifiers.
- Removed virtual specifier for the canvas primitive apis.
- Introduced a nested scene in the canvas to remove logic duplication.
C++ API Modification:
- Result Scene::push(Paint* paint)
-> Result Scene::push(Paint* target, Paint* at = nullptr)
- Result Scene::clear(bool free = true)
-> Result Scene::remove(Paint* paint = nullptr)
- Result Canvas::push(Paint* paint)
-> Result Canvas::push(Paint* target, Paint* at = nullptr)
- list<Paint*>& Scene::paints()
-> const list<Paint*>& Scene::paints() const
- list<Paint*>& Canvas::paints()
-> const list<Paint*>& Canvas::paints() const
C++ API Addition:
- Result Canvas::remove(Paint* paint = nullptr);
C API Modifications:
- Tvg_Result tvg_scene_clear(Tvg_Paint* scene, bool free)
-> Tvg_Result tvg_scene_remove(Tvg_Paint* scene, Tvg_Paint* paint)
C API Addition:
- Tvg_Result tvg_scene_push_at(Tvg_Paint* scene, Tvg_Paint* target, Tvg_Paint* at)
- Tvg_Result tvg_canvas_push_at(Tvg_Canvas* canvas, Tvg_Paint* target, Tvg_Paint* at)
- Tvg_Result tvg_canvas_remove(Tvg_Canvas* canvas, Tvg_Paint* paint)
issue: https://github.com/thorvg/thorvg/issues/2957
issue: https://github.com/thorvg/thorvg/issues/1372
2024-12-04 11:44:58 +09:00
Sergii Liebodkin
07fbe56162
wg_engine: fixed scene blending equation and clear color rule
...
Issue: https://github.com/thorvg/thorvg/issues/2998
2024-12-04 11:39:57 +09:00
Dragoș Tiselice
8f13920b7a
capi: removed default argument from C API.
...
C does not support default arguments. For thorvg_capi.h to maintain
C compatibility, default arguments must be omitted.
2024-12-04 00:27:17 +09:00
Dragoș Tiselice
8a5710b3c5
sw_engine: replaced longjmp with returns
...
Since longjmp is not yet fully supported on Wasm (emscripten uses
JS to make the jumps and requires slow jumps), but also because
longjmp is hard to reason about, this patch replaces it with
return values. The logic stays exactly the same.
2024-12-03 20:27:41 +09:00
Hermet Park
1d905e806b
capi: maintain consistency in Doxygen formatting
...
- Standardized usage of "\" and "@" across the documentation.
- Aligned formatting with C++ Doxygen style guidelines.
2024-12-03 11:40:25 +09:00
Jinny You
7b9c58fec3
wasm: add gl option to combined binary
2024-12-02 17:06:29 +09:00
Hermet Park
f33b63abad
common: inlist code refactoring
...
introduced INLIST_FOREACH() / INLIST_SAFE_FOREACH()
for common implementation
2024-12-02 15:15:35 +09:00
Hermet Park
1422c4ca5f
renderer: make the file io configurable
...
certain systems, may not support file I/O operations.
ThorVG should provide users with an option to configure
builds according to their requirements.
This ensures that file I/O calls are avoided,
preventing potential crashes.
Please use the meson '-Dfile=true/false' option for this.
Please note that "THORVG_FILE_IO_SUPPORT" might be expected
for your thorvg manual build.
issue: https://github.com/thorvg/thorvg/issues/3008
2024-12-02 11:50:59 +09:00
Hermet Park
d6335015c4
Update README.md
2024-11-29 22:45:16 +09:00
RuiwenTang
08e88c8df1
gl_engine: Fix the wrong bounds cause composition not correct
...
The bounds should allow negative origins, only zero width or height bounds needs discard.
2024-11-29 19:32:15 +09:00
Sergii Liebodkin
18db3ab1fd
wg_engine: refactor pipeline creation
...
Pipeline creation workflow redesigned. Make code more compact
No any public interfaces changed
2024-11-29 19:08:28 +09:00
Sergii Liebodkin
4a38a4d360
wg_engine: simplify shader types
...
Use universal vec4f type for blend settings and color to pass data as shader parameter
2024-11-29 19:01:47 +09:00
Sergii Liebodkin
163640b3e5
wg_engine: apply texture formats on creation (refactoring)
...
Apply texture color space on texture creation, instead of shader side
2024-11-29 18:57:57 +09:00
Sergii Liebodkin
13b976ee80
wg_engine: support resizing
...
Added abillity to resize target (surface)
In case of resizing only render targets handles recreated
Issue: https://github.com/thorvg/thorvg/issues/2985
2024-11-29 18:48:01 +09:00
Sergii Liebodkin
cf05128a96
wg_engine: revision of device creation policy
...
make valid device and instance as mandatory paramter for webgpu renderer
2024-11-29 18:48:01 +09:00
Sergii Liebodkin
77201546dd
wg_engine: separate pipelines ans bind group layouts (refactoring)
...
The main reason of refactoring is to separate bind group sets and pipelines, and change owning of pipelines to compositor
2024-11-27 11:31:35 +02: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
Jinny You
7e66bde4fb
wasm: fix build error
...
Added missing parameter for `GlCanvas->target`
2024-11-27 16:48:26 +09:00
RuiwenTang
1a766ec00e
gl_engine: correct the stroke alpha calculation
...
The wrong matrix scale factor value caused the stroke alpha to be zero
when the matrix contains rotation.
2024-11-27 12:37:47 +09:00
Hermet Park
968e438d25
portability: fixed a compile error on msys2
2024-11-26 22:00:08 +09:00
Hermet Park
08110da33b
Update README.md
2024-11-26 17:23:37 +09:00
RuiwenTang
af5e0e3ef9
gl_engine: support cross compile GL backend into WASM
...
Support cross compile the GL backend code into WASM.
The code needs WebGL 2.0 API so, the compile flags contains `MAX_WEBGL_VERSION` and `FULL_ES3`
Also add binding code to initialize the WebGL context and GLCanvas.
2024-11-26 17:12:49 +09:00
Hermet Park
0f409a654a
renderer: reserved colorspace option in target api
...
API Modification:
- Result WgCanvas::target(void* device, void* instance, void* target, uint32_t w, uint32_t h, int type = 0)
-> Result WgCanvas::target(void* device, void* instance, void* target, uint32_t w, uint32_t h, ColorSpace cs, int type = 0)
- Tvg_Result tvg_wgcanvas_set_target(Tvg_Canvas* canvas, void* device, void* instance, void* target, uint32_t w, uint32_t h, int type)
-> Tvg_Result tvg_wgcanvas_set_target(Tvg_Canvas* canvas, void* device, void* instance, void* target, uint32_t w, uint32_t h, Tvg_Colorspace cs, int type)
2024-11-26 12:04:30 +09:00
Sergii Liebodkin
6c452c1fd3
wg_engine: fix resources disposing on context destroy
...
We must to dispose all paints render handles before the context will be destroyed to prevent handles leak
2024-11-26 11:34:42 +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
97058badbf
example: ++lottie extension
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
b453bd4f40
lottie: fix bug in expressions
...
'end' used instead of 'offset'
2024-11-25 21:54:37 +09:00
Hermet Park
036d1e7cac
example: ++gl, wgpu safety
...
Free the canvas in the reverse order of their creation.
2024-11-25 11:10:25 +09:00
Hermet Park
8995bc32a2
lottie: portability++
...
issue: https://github.com/lvgl/lvgl/issues/7214
2024-11-23 11:43:33 +09:00
Hermet Park
877c524e5e
renderer/sw_engine: fix omitted alpha multiplication in the dropshadow effect
...
When a scene has a valid opacity, it must be multiplied with the
direct dropshadow image to ensure correct rendering.
2024-11-23 01:03:39 +09:00
Sergii Liebodkin
077a0481c4
wg_engine: reset context in examples
...
Fix examples termination process: reset context while window releasing before webgpu instance released
Issue https://github.com/thorvg/thorvg/issues/2745
2024-11-22 18:34:46 +09:00
Sergii Liebodkin
d0bc4bc4f5
wg_engine: multicanvas support (multicanvas example)
...
Updated multicanvas example
Issue https://github.com/thorvg/thorvg/issues/2745
2024-11-22 12:34:26 +09:00
Sergii Liebodkin
3805f26aff
wg_engine: multicanvas support
...
Added multicanas support
Issue https://github.com/thorvg/thorvg/issues/2745
2024-11-22 12:34:26 +09:00
Hermet Park
57fcada8cc
example: updated lottie samples
2024-11-22 11:17:07 +09:00
Hermet Park
ccaf44e80e
gl_engine: fix a regression by a mistake
...
introduced by d3d085de15
2024-11-22 00:38:03 +09:00
Mira Grudzinska
b5d81be339
tests: remove capi tests
...
@Issue: https://github.com/thorvg/thorvg/issues/2978
2024-11-21 23:39:17 +09:00
Hermet Park
d069156994
Update README.md
2024-11-21 01:31:48 +09:00
Mira Grudzinska
0cc0d0e1c8
lottie: shapes support in text range selector
...
@issue: #2178
2024-11-21 01:20:53 +09:00
Mira Grudzinska
a6fb2ef9a7
lottie: easing support in text range selector
...
@issue: #2178
2024-11-21 01:05:11 +09:00
Sergii Liebodkin
f5a183b20c
wg_engine: fix gradint stops color usage
...
Fixed access to the last value of color stops array
https://github.com/thorvg/thorvg/issues/2922
2024-11-20 22:20:25 +09:00
Hermet Park
d3d085de15
renderer: code refactoring
...
- introduced RenderColor
- internal name changes to avoid conflicts
2024-11-20 22:13:27 +09:00
lpogic
a67f30de65
renderer: Fix paint transformation on scene change
...
issue: https://github.com/thorvg/thorvg/issues/2958
2024-11-20 15:43:58 +09:00
Hermet Park
96e8d3d7a2
api: revise the gl target() api.
...
API modification:
- Result GlCanvas::target(int32_t id, uint32_t w, uint32_t h)
-> Result GlCanvas::target(int32_t id, uint32_t w, uint32_t h, ColorSpace cs)
- Tvg_Result tvg_glcanvas_set_target(Tvg_Canvas* canvas, int32_t id, uint32_t w, uint32_t h)
-> Tvg_Result tvg_glcanvas_set_target(Tvg_Canvas* canvas, int32_t id, uint32_t w, uint32_t h, Tvg_Colorspace cs)
issue: https://github.com/thorvg/thorvg/issues/1372
2024-11-20 14:55:40 +09:00
Hermet Park
0b4f2a49fe
common: improved instance memory handling
...
- prevent dangling instances in failure scenarios by utilizing a reference counter.
- update the test suite to treat null pointer arguments as invalid argument failures.
2024-11-20 01:53:25 +09:00
Hermet Park
df8fc1949c
test: ++paint reference counting
2024-11-20 01:53:25 +09:00
Hermet Park
16b985799a
capi: introduced paint reference counting
...
New APIs:
- uint8_t tvg_paint_ref(Tvg_Paint* paint)
- uint8_t tvg_paint_unref(Tvg_Paint* paint, bool free)
- uint8_t tvg_paint_get_ref(const Tvg_Paint* paint)
issue: https://github.com/thorvg/thorvg/issues/1372 https://github.com/thorvg/thorvg/issues/2598
2024-11-20 01:53:25 +09:00
Hermet Park
22d94ea629
renderer: introduced paint reference counting
...
The reference count of the Paint object allows
easy & safe shared ownership and control over its lifetime
among users and the engine.
New APIs:
- uint8_t Paint::ref()
- uint8_t Paint::unref(bool free = true)
- uint8_t Paint::refCnt() const
issue: https://github.com/thorvg/thorvg/issues/1372 https://github.com/thorvg/thorvg/issues/2598
2024-11-20 01:53:25 +09:00
Mira Grudzinska
511495f6d8
svg_loader: handle currentColor inside gradient
...
@Issue: https://github.com/thorvg/thorvg/issues/2960
2024-11-20 01:46:19 +09:00