Hermet Park
dc8c5bce50
sw_engine: code refactoring
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
just renamed internal variables (region -> bbox)
for the sake of a shorter name, no logical changes.
2025-05-28 11:41:52 +09:00
Hermet Park
cc72eda465
sw_engine: unify RenderRegion and SwBBox
...
refactored for smoother data flow through the rendering pipeline.
2025-05-28 11:41:52 +09:00
Hermet Park
8a35f02105
renderer/engines: redesigned RenderRegion property layout
...
redefiend properties so that min/max are prioritized,
as they are accessed more frequently than pos/size
during rendering calculations.
also introduced miscellaneous functions to improve usability.
2025-05-28 11:41:52 +09:00
Hermet Park
04b7bb4f25
renderer: allow empty content during canvas rendering
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
This allow more generous handling of failure cases for invalid content,
thorvg can draw other successful contents.
Now, only raster engines can return fail cases in the picture.
2025-05-28 00:48:48 +09:00
Hermet Park
b221eed7fa
renderer: chores
2025-05-27 17:58:10 +09:00
Mira Grudzinska
211fee73e2
lottie: fix precomposition with masking
...
Android / build_x86_64 (push) Has been cancelled
Android / build_aarch64 (push) Has been cancelled
iOS / build_x86_64 (push) Has been cancelled
iOS / build_arm64 (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS / compact_test (push) Has been cancelled
macOS / unit_test (push) Has been cancelled
Ubuntu / build (push) Has been cancelled
Ubuntu / compact_test (push) Has been cancelled
Ubuntu / unit_test (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows / compact_test (push) Has been cancelled
Windows / unit_test (push) Has been cancelled
A precomposition layer is clipped to its viewport.
If the same layer also had a mask that was optimized
using clipping, this clip was unintentionally overridden
by the viewport clipping. This conflict is now fixed.
2025-05-26 19:26:45 +09:00
Sergii Liebodkin
55847bdcb3
gl_engine: fix memoty leak on target resize
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
We must to remove offscreen render buffers during removing render target
https://github.com/thorvg/thorvg/issues/3210
2025-05-25 23:04:12 +09:00
Hermet Park
32c38041db
sw_engine: added diagnostics for potential issues
Android / build_x86_64 (push) Has been cancelled
Android / build_aarch64 (push) Has been cancelled
iOS / build_x86_64 (push) Has been cancelled
iOS / build_arm64 (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS / compact_test (push) Has been cancelled
macOS / unit_test (push) Has been cancelled
Ubuntu / build (push) Has been cancelled
Ubuntu / compact_test (push) Has been cancelled
Ubuntu / unit_test (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows / compact_test (push) Has been cancelled
Windows / unit_test (push) Has been cancelled
2025-05-22 16:12:42 +09:00
Mira Grudzinska
1b72113fcc
sw_engine: fix too small memory alloc for spans
...
In some clipping cases, the memory allocated for storing spans
was too small. As a result, the entire clipped area might not
have been rendered.
This has been resolved by adding an experimental factor to increase
the size of allocated memory.
@issue: https://github.com/thorvg/thorvg/issues/3461
2025-05-22 16:03:04 +09:00
Hermet Park
1d0973cdf0
wasm: enable software only it's valid
2025-05-22 15:34:58 +09:00
Hermet Park
e01ccb5db9
sw_engine: handle an exception ASAP
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
2025-05-21 17:30:32 +09:00
JunsuChoi
c41b2c2a1c
svg_loader: Fix <stop> being registered in closed latestGradient
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
If stop is declared immediately after Gradient is closed, the stop is registered in latestGradient.
Change latestGradient to a Stack and add a stop only to the last added gradient.
When that gradient is closed, no more stops should be registered for that gradient.
And gradients do not allow nested declarations, so only the earliest declared Gradient is valid.
2025-05-21 11:41:03 +09:00
Benson Muite
633bcd3176
tools/lottie2gif: typo fix
Android / build_x86_64 (push) Has been cancelled
Android / build_aarch64 (push) Has been cancelled
iOS / build_x86_64 (push) Has been cancelled
iOS / build_arm64 (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS / compact_test (push) Has been cancelled
macOS / unit_test (push) Has been cancelled
Ubuntu / build (push) Has been cancelled
Ubuntu / compact_test (push) Has been cancelled
Ubuntu / unit_test (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows / compact_test (push) Has been cancelled
Windows / unit_test (push) Has been cancelled
2025-05-16 16:05:18 +09:00
Hermet Park
e98b87892b
gl_engine: revert some wrong change
...
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
my fault. signed value should be respected
from cd12618529
2025-05-16 02:08:25 +09:00
Hermet Park
97d96a7f8b
Update README.md
...
added deepwiki
2025-05-16 00:54:23 +09:00
Hermet Park
bace6b9e52
lottie: removed undesired embedded option.
...
Use local font by default and fall back if no glyphs exist.
Co-Authored-By: Mira Grudzinska <mira@lottiefiles.com>
2025-05-15 19:21:24 +09:00
Jinny You
1e692f223c
lottie: handle time remapping with zero value correctly
...
The time remapping logic had an issue where animations with zero value "tm"(Time Remap) were not being processed correctly.
This was happening because the previous implementation only applied time remapping when the value was non-zero. (A zero-value Time Remap should be applied, but is ignored)
The fix changes the default time remap value to `-1.0` (since frame values cannot be negative) and applies time remapping when the value is 0.0 or greater. This ensures that zero value time remapping is properly processed.
2025-05-14 21:53:32 +09:00
Mira Grudzinska
6e41b44ea1
lottie: fix points calculation for rounded polygon
...
Added missing factor.
issue: https://github.com/thorvg/thorvg/issues/2629
2025-05-14 21:53:32 +09:00
Hermet Park
cd12618529
common/array: ++neat code
...
no logical changes
2025-05-14 21:53:32 +09:00
Hermet Park
7e8743e8fe
wg_engine: ++exception handling
2025-05-13 16:28:01 +09:00
Hermet Park
5154e491cc
wg_engine: ++optimal logic
...
avoid using initializer here.
2025-05-13 14:47:40 +09:00
Hermet Park
5ed719dcec
sw_engine: code clean up
...
removed unnecesary parameters
2025-05-12 17:37:40 +09:00
Mira Grudzinska
97817bedfe
lottie: support for firstMargin < 0 in text follow path
...
The first margin value shifts the starting point where the text
begins along the path. Now cases where firstMargin < 0 are handled,
for both closed and open paths.
2025-05-12 15:32:32 +09:00
Hermet Park
3fbb55440a
renderer: ++engines safety
...
Added drawing exceptions when target is not properly ready.
Now, Canvas::update() Canvas::draw() will return InsufficientCondition
if the target has not been set beforehand.
2025-05-12 12:49:10 +09:00
Hermet Park
2524cdfee5
Update README.md
2025-05-09 12:51:57 +09:00
Hermet Park
4a5d0c84e8
examples: updated svg
2025-05-08 23:19:39 +09:00
Hermet Park
007879af02
gl_engine: code clean up++
2025-05-08 22:56:16 +09:00
Hermet Park
df8d327ebb
sw_engine: fixed a a regression bug during main dev
...
borker by 176573ff25
2025-05-08 22:56:16 +09:00
Mira Grudzinska
2e03fbd630
lottie: enhance parsing of position's SeparateCoords
...
The "s" key does not have to appear at the beginning
of the position block. Previously, such cases would
result in a parsing error — now they are handled correctly.
2025-05-08 19:30:08 +09:00
Hermet Park
0b77659136
infra: added opengl_es extra option for explicit selection
...
usages:
meson setup build -Dengines="gl" //opengl
meson setup build -Dengines="gl" -Dextra="opengl_es" //opengl es
2025-05-08 12:00:22 +03:00
Hermet Park
457b019ab4
gl_engine: --compiler warning on emsdk.
...
warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]
2025-05-08 15:07:17 +09:00
RuiwenTang
ec26784266
gl_engine: dynamic load gl functions
...
no any 3rd-party libs, such as glfw or glad did not used
support windows, linux, macos and emsdk
only the actually used set of functions are loaded
Co-Authored-By: Sergii Liebodkin <sergii@lottiefiles.com>
Co-Authored-BY: Hermet Park <hermet@lottiefiles.com>
issue: https://github.com/thorvg/thorvg/issues/2453
2025-05-08 14:58:13 +09:00
Hermet Park
57adfbd499
lottie/parser: revise logic to handle exceptional cases more gracefully
...
- prioritize valid (positive) cases first
- continue parsing even when encountering parsing errors
Co-Authored-By: Mira Grudzinska <mira@lottiefiles.com>
2025-05-07 13:07:30 +02:00
Hermet Park
ae84708f9b
sw_engine: fix regression in alpha handling
...
revert the alpha skip condition introduced in
commit 2990e72b23
.
color values with alpha = 0 must be transformed to 0
to ensure correct intermediate composition results.
2025-05-07 10:54:08 +09:00
Mira Grudzinska
24fba7cfae
lottie: add missing delimiter
...
\u0003 (\3) can be used as delimiter. Now handled correctly.
2025-05-07 10:53:32 +09:00
Benjamin
607c338799
capi: added missing mask methods
...
Adds missing mask methods to the capi
2025-05-07 10:44:06 +09:00
Benjamin
7c9bead192
wg_engine: fixed target surface update
...
Allows the target surface to be updated without forcing the size to changed.
2025-05-06 23:54:50 +09:00
Hermet Park
6008120d35
example: clean up++
2025-05-06 11:43:47 +09:00
Hermet Park
4e64804839
examples: changed animatable window size.
...
just changed the size to another one for better showcase
since 800x800 is not preferred by intel arc chipset.
animations look stutter.
2025-05-06 11:02:30 +09:00
Hermet Park
aa1fa1e10a
Revert "example: disable vsync of sw window for stability."
...
This reverts commit 2d695c4d46
.
because of crashes on MacOS.
2025-05-06 10:16:40 +09:00
Hermet Park
2d695c4d46
example: disable vsync of sw window for stability.
...
SDL + software engine doesn't need the vsync?
Observed the rendering performance is noticeably unstable on Intel Arc chipsets
with certain window sizes (ie 800x800) when VSync is enabled on software-rendered windows.
This might be a workaround, or it could be an issue with the driver or SDL.
Either way, the SDL + software engine doesn't need VSync.
2025-05-05 17:36:57 +09:00
Benjamin
2990e72b23
sw_engine: ++raster color accuracy
...
Improves the color accuracy of rasterized images by skipping the pre-multiply step when the alpha is full opaque or fully transparent.
fixes : #3429
2025-05-05 15:23:30 +09:00
Jinny You
7bcee79077
gl_engine: replace std::string with C-style strings for portability
...
- C-style strings provide consistent binary interface for FFI
- Reduces potential issues where standard library is limited (e.g., WebAssembly, embedded systems)
2025-05-02 17:43:25 +09:00
Mira Grudzinska
7d4a5215dd
lottie: fix stroke join for offset path
...
The incorrect line join used for OffsetPath was caused
by changes to the StrokeJoin enum values in commit
34d731fa94
. During those
changes, the line join value for OffsetPath was mistakenly
not updated.
2025-05-02 14:19:04 +09:00
Benjamin
40453a4986
wg_engine: fixed target texture update
...
Allows the target texture to be updated without forcing the size to changed.
2025-05-01 10:56:15 +03:00
kkocdko
e0b8fcc93e
infra/workflow: Release a source archive without dev resources
2025-04-30 14:12:14 +09:00
Sergii Liebodkin
37cffba620
wasm: fix thorvg wasm binding
...
Fixed initialization and termination of the engine in wasm binding
2025-04-24 22:28:37 +09:00
Sergii Liebodkin
e24c743ab3
wasm binding fixed for wg engine
...
fixed wrong logic in wg engine initialization process, where initializer return seccuss status in any case
2025-04-23 21:20:47 +09:00
Sergii Liebodkin
c77b6ec8db
wg_engine: sync up to update the engine work to webgpu_native v22
...
Only minor changes required
Keeped compatibility with emsdk
issue: https://github.com/thorvg/thorvg/issues/2909
2025-04-23 21:20:47 +09:00
Hermet Park
bcfbc55af2
Update README.md
2025-04-23 18:36:44 +09:00