Mira Grudzinska
1fdfe8a3b8
sw_engine: handle grad edge cases
...
For a linear gradient defined by identical start and end
points, and for a radial gradient with a radius of 0,
the rendered shape should have the color of the last
specified color stop.
The documentation has been updated accordingly.
@Issue: https://github.com/thorvg/thorvg/issues/2582
2024-09-30 15:48:18 +09:00
Sergii Liebodkin
cff78dc067
wg_engine: emscripten and browser support
...
[issues 2410: emscripten support](https://github.com/thorvg/thorvg/issues/2410 )
- Research and prototype the Emscripten build with WebGPU.
meson setup script:
meson setup builddir -Ddefault_library=static -Dloaders=all -Dsavers="all" -Dbindings="wasm_beta" -Dengines="wg_beta" --cross-file ./cross/wasm_webgpu.txt
2024-09-30 15:48:18 +09:00
Hermet Park
17e628d8f7
lottie: remove useless condition check.
...
lottie is always animatable.
2024-09-30 15:48:18 +09:00
Sergii Liebodkin
0004887225
wg_engine: introduce simultaneous flag support for strokes trimming
...
https://github.com/thorvg/thorvg/issues/2435
2024-09-30 15:48:18 +09:00
Mira Grudzinska
e21c225b7f
common: fix trimming
...
By mistake > was used instead of >=.
The issue was observed for trim when
the trim length was exactly zero.
2024-09-30 15:48:18 +09:00
Mira Grudzinska
d29a3d754b
common: move&fix trimming wrapping logic
...
The logic of interpretation of trimming start and
end values has been moved to the sw_engine,
so the values provided by the user are not modified.
No logical changes in the interpretation alg.
For pairs of trim's start/end values where the distance
between begin and end is >= 1, the entire stroke should
be drawn, but instead, nothing or only part is drawn. Fixed.
Stroke trim docs fixed.
2024-09-30 15:48:18 +09:00
Hermet Park
c9ad7289a6
lottie/expressions: feature enhancement
...
added groupIndex() support
added property (ix) value support
2024-09-30 15:48:18 +09:00
Hermet Park
fc61fc42c2
lottie: code refactoring
...
Access its type from a property instance,
through coherent data structure.
2024-09-30 15:48:18 +09:00
Łukasz Pomietło
2b3930b46d
ttf_loader: Basic support for composite glyphs loading ( #2600 )
...
Adds the ability to load some composite glyphs and prevents an error when a composite glyph is used.
Implementation based on ttf glyf table documentation: https://learn.microsoft.com/en-us/typography/opentype/spec/glyf
There are still some missing features like scaling, parent glyph point based positioning etc. I think this is a topic for future work. Howerever, it looks like implemented features are enough for utf-8 latin subset in major fonts.
issue: #2599
2024-09-30 15:48:13 +09:00
Hermet Park
ecabdc5ebc
renderer: code refactoring
...
Replaced the transformation with
a strong associated data field.
This helps to reduce the binary size (-1k).
2024-09-30 15:39:52 +09:00
Hermet Park
157e873e83
common: code refactoring
...
Trimming the transform data pass,
from RenderTransform to Matrix.
No logical changes.
2024-09-30 15:39:46 +09:00
Hermet Park
dac36f490f
Update CODEOWNERS
2024-09-30 15:39:41 +09:00
Hermet Park
a801ad7e25
Update CODEOWNERS
2024-09-30 15:39:36 +09:00
Mira Grudzinska
7274b3d601
sw_engine: fix radial coefficients calculations
...
In the Taylor series expansion, there was a missing
division by 2! in the term with the second derivative.
@Issue: https://github.com/thorvg/thorvg/issues/2530
2024-09-30 15:39:20 +09:00
Hermet Park
4ed9ada00e
lottie/expressions: hotfix
...
- fixed a memory leak.
- corrected loopIn key value.
2024-09-30 15:38:32 +09:00
Hermet Park
dfc6e67c6b
sw_engine: rectified the image raster return value.
...
Return the raster image as a success unless
it fails due to any problematic condition.
The changed cases are just invisible condition
of the images.
2024-09-30 15:38:23 +09:00
Hermet Park
656fb6f498
renderer/animation: rectified the segment value exception
...
A zero-range segment can be useful for a stopped motion.
There is no need to prohibit these values.
2024-09-30 15:38:10 +09:00
Hermet Park
2478a5f65a
lottie/expressions: feature support enhancement
...
- revised the transformation building logic.
- rectified to properly search "this" composition layers.
- rectified the linear interpolation implementation.
- added "pingpong" looping attributes.
2024-09-30 15:38:05 +09:00
Hermet Park
4e3d027fa7
lottie: code refactoring
...
- removed unnecessary variables.
- migrated the composition methods to the precomp layer.
2024-09-30 15:38:00 +09:00
Mira Grudzinska
792b6a786d
sw_engine: fix linear grad issue
...
The restriction of the 'length' of a linear gradient
to values greater than FLT_EPSILON was causing rendering
issues in cases where it was a valid gradient with well
defined dx and dy values.
@Issue: https://github.com/thorvg/thorvg/issues/2582
2024-09-30 15:37:55 +09:00
Hermet Park
7bb4eda3a3
svg: resolve compiler warnings.
...
../src/loaders/svg/tvgSvgLoader.cpp: In function ‘bool _toColor(const char*, uint8_t*, uint8_t*, uint8_t*, char**)’:
../src/loaders/svg/tvgSvgLoader.cpp:108:17: warning: ‘hue’ may be used uninitialized [-Wmaybe-uninitialized]
108 | const char* _end = end ? *end : nullptr;
| ^~~~
../src/loaders/svg/tvgSvgLoader.cpp:713:31: note: ‘hue’ was declared here
713 | const char *content, *hue, *saturation, *brightness;
| ^~~
../src/loaders/svg/tvgSvgLoader.cpp:108:17: warning: ‘saturation’ may be used uninitialized [-Wmaybe-uninitialized]
108 | const char* _end = end ? *end : nullptr;
| ^~~~
../src/loaders/svg/tvgSvgLoader.cpp:713:37: note: ‘saturation’ was declared here
713 | const char *content, *hue, *saturation, *brightness;
| ^~~~~~~~~~
../src/loaders/svg/tvgSvgLoader.cpp:108:17: warning: ‘brightness’ may be used uninitialized [-Wmaybe-uninitialized]
108 | const char* _end = end ? *end : nullptr;
| ^~~~
../src/loaders/svg/tvgSvgLoader.cpp:713:50: note: ‘brightness’ was declared here
713 | const char *content, *hue, *saturation, *brightness;
| ^~~~~~~~~~
2024-09-30 15:37:52 +09:00
Hermet Park
d7e4fc7d6a
lottie: ++optimization with object culling
...
More precisely, culling the render objects by
determining if the group has no renderable objects.
Additionally, check opacity to quickly return
in the rendering process.
2024-09-30 15:37:40 +09:00
Hermet Park
935d3d83ae
lottie: hotfix with an intermediate patch merge.
2024-09-30 15:37:32 +09:00
Hermet Park
7a6d2e0c5a
lottie: ++scene rendering optimization
...
Apply LottieRenderPooler to texts.
2024-09-30 15:37:26 +09:00
Hermet Park
859b3f6c39
example: merge Path & PathCopy
2024-09-30 15:37:15 +09:00
Hermet Park
64e8bfddfd
renderer: quick skip rendering if the opacity is zero
...
This also resolves a corner case bug introduced by
lottie render pooling: f06127ab93
2024-09-30 15:37:06 +09:00
Hermet Park
fe107ea757
sw_engine: hotfix simd build breaks
...
regression by 837cf32bcb
2024-09-30 15:36:30 +09:00
Hermet Park
d671f8637b
lottie/expressions: ++coverage enhancement
...
Allow to access layer index globally.
2024-09-30 15:36:24 +09:00
Hermet Park
9749e7fea0
examples: updated lottie samples
2024-09-30 15:36:18 +09:00
Hermet Park
072ce383db
examples: added more expressions samples
2024-09-30 15:36:11 +09:00
Hermet Park
0b66cd422e
lottie/expressions: added a missing polystar property build.
2024-09-30 15:35:59 +09:00
Hermet Park
e4fb0ec383
sw_engine: ++alpha blending operation.
...
Reduce instructions, improving its performance by ~15%
2024-09-30 15:35:52 +09:00
Mira Grudzinska
220764fde9
tests: version api tests
2024-09-30 15:35:45 +09:00
Mira Grudzinska
658ed7df7f
capi: the version api binding
2024-09-30 15:35:40 +09:00
Mira Grudzinska
0944f3253d
common: version api introduced
...
@Issue: https://github.com/thorvg/thorvg/issues/2543
2024-09-30 15:35:34 +09:00
Sergii Liebodkin
e16dcdcb6d
wg_engine: fix cubic generation artifacts (GradientStroke example)
...
[GradientStroke](https://github.com/thorvg/thorvg/issues/2435 ) example
More accurate coefitient computation
2024-09-30 15:35:28 +09:00
Sergii Liebodkin
8d150a17b4
wg_engine: fix fill spread artifacts
...
[issues 2435: ](FillSpread) example
Fixed range selector edged cases
2024-09-30 15:35:22 +09:00
Hermet Park
3cb7aecb6a
renderer: ++null check
...
fixed a Duplicate example crash, regression by:
f06127ab93
2024-09-30 15:35:16 +09:00
Sergii Liebodkin
03b36cea7b
wg_engine: ClipPath support
...
[issues 1479: ClipPath](#1479 )
Supports ClipPath composition.
Clip path composition is an only composition type who doesn't ignore blend method.
Clip path is a combination of composition approach and blend approach using compute shader
2024-09-30 15:35:10 +09:00
Hermet Park
699063625b
lottie: ++scene rendering optimization
...
Apply LottieRenderPooler to path/rect/ellipse/polystar.
This enhances the animation performance: ~10%
2024-09-30 15:34:57 +09:00
Hermet Park
7e9febf2c6
examples: ++exception handling
...
Added handling for engine initialization failure.
2024-09-30 15:34:48 +09:00
Mira Grudzinska
ea7f8e6190
sw_engine: grayscale image support++
2024-09-30 15:33:57 +09:00
Hermet Park
ba3d2b77a1
lottie: introduced LottieRenderPooler
...
LottieRenderPooler is designed to manages rendering
instances(paints) efficiently through a simple pooling
mechanism to resuse among the animations
This replaces the previous individusal paints implemenations
among solidfill, precomp vierport and pictures,
also fix a potential paints corruption problems.
2024-09-30 15:33:49 +09:00
Hermet Park
cf0d04a9ae
infra: updated ios arm64 build
2024-09-30 15:32:09 +09:00
Hermet Park
ec00238aed
examples: added LottieExpressions
2024-09-30 15:31:55 +09:00
Hermet Park
e27b8ddf25
lottie/parser: tiny binary size reduction
2024-09-30 15:30:47 +09:00
Mira Grudzinska
774e4f5156
lottie: support 'direction' in ellipses
2024-09-30 15:30:29 +09:00
Mira Grudzinska
177bae539c
lottie: remove unnecessary cast
2024-09-30 15:30:18 +09:00
Hermet Park
3d9f7ebbc3
examples: updated lottie samples
2024-09-30 15:30:12 +09:00
Hermet Park
12b7c634f7
lottie: clarify shape direction.
...
There are only two options clockwise or counter-clockwise.
2024-09-30 15:29:22 +09:00