Commit graph

2989 commits

Author SHA1 Message Date
Hermet Park
7008d26d05 wg_engine: --redundant code 2024-06-24 14:54:49 +09:00
Mira Grudzinska
5dfe2d92cf tests: add tests for text loading from memory 2024-06-24 14:54:42 +09:00
Mira Grudzinska
7ec67baf9a examples: ensure the file is closed
In case of an error during memory allocation
for file data, the file was not closed.
2024-06-24 14:53:32 +09:00
Mira Grudzinska
393fc88570 common: force the use of ttf loader for font data
Providing an incorrect mimetype or not specifying one
was not handled and resulted in data not being loaded
when loading the font from memory.
Now, the use of the TTF loader is enforced regardless
of the provided mimetype.
2024-06-24 14:53:21 +09:00
Mira Grudzinska
33640eae83 common: fix returned value
In the case of requesting to unload a font that
has not been previously loaded, InsufficientCondition
should be returned, not InvalidArgument.
2024-06-24 14:52:27 +09:00
Sergii Liebodkin
596845d1cf wg_engine: fix composition math
Fix AlphaMask, InvAlphaMask, LumaMask and InvLumaMask math
Fix double apllience of opacity value
2024-06-24 14:52:21 +09:00
Sergii Liebodkin
7bbd058bd7 wg_engine: fix fill rule usage
Fix wronk application of fill rule in a cases of terminated path (.close()/.moveTo())
2024-06-24 14:52:15 +09:00
Sergii Liebodkin
5cf7c756db wg_engine: fix strokes failers and visual atrifacts
Ignoring rezo-width strokes, single point strokes.
Fix visual artifacts in case of mitter joints.
2024-06-24 14:52:09 +09:00
Hermet Park
2079c95668 infra: build wg canvas properly. 2024-06-24 14:52:03 +09:00
Hermet Park
784ff30008 renderer/canvas: clean up code
pimpl is not used at all.
2024-06-24 14:51:57 +09:00
Mira Grudzinska
4c546f843f capi: remove the incorrectly named API
There was a typo in the name (tvg_canvas_est_viewport),
which made it seem like it was missing. The correctly
named API has already been added, so this one can be
removed.
2024-06-24 14:51:51 +09:00
Hermet Park
56d3885f24 sw_engine: fix a crash issue.
set the anti-aliasing frame info properly, in an exceptional case.

issue: https://github.com/thorvg/thorvg/issues/2391
2024-06-24 14:51:40 +09:00
Hermet Park
59194b8ab2 sw_engine: fix a missing anti-aliasing
enable fill anti-aliasing when the stroke is trimming.
2024-06-24 14:51:34 +09:00
Hermet Park
35b1f4933d infra: relocate the tools folder.
Collect only library source code in src
2024-06-24 14:51:27 +09:00
Hermet Park
bfcde7403e examples: ++ function name alignment 2024-06-24 14:51:04 +09:00
Hermet Park
1d9adab607 infra: ++wg_native package dependency
Windows might need a own library linking method.
2024-06-24 14:50:55 +09:00
Sergii Liebodkin
9b4df3f0af wg_engine: fix model view matrix
In a case of compostions model view matrix did not apply samples count
2024-06-24 14:50:49 +09:00
Sergii Liebodkin
23d50fcda5 wg_engine: clear bbox mesh lists
when cleaning the geometry of an object, it is also necessary to clean the bounding boxes and store them in the pool
2024-06-24 14:50:42 +09:00
Hermet Park
41ffcf2bdf doc: updated the WgCanvas api doc 2024-06-24 14:50:34 +09:00
Sergii Liebodkin
47b9866f8b wg_engine: cross-platform support
it provide changes public API for webgpu canvas interface to provide nessessary handles to native window for different platforms:

API Change:
- Result target(void *instance, void *surface, uint32_t w, uint32_t h) noexcept;
2024-06-24 14:50:28 +09:00
Mira Grudzinska
c35b731f0f example: load font from memory in Text.cpp 2024-06-24 14:50:22 +09:00
Mira Grudzinska
ec77d8bd89 ttf_loader: support loading from memory
New text API for loading fonts from memory
is introduced. This is necessary to enable
embedded fonts support.
2024-06-24 14:50:13 +09:00
RuiwenTang
063474ba05 gl_engine: fix clip path and bounds not correct
* Optimize clip logical, change to use GL_GRATER and keep incrace depth
  value, so no need to do depth clear after every clip draw.
* Correct geometry bounding box calculation, and make sure the bounds is
  larger than all vertices
* Limit drawing area for off-screen RenderPass with correct scissor box
2024-06-24 14:47:33 +09:00
Hermet Park
7e83590ec5 wg_engine: resolve gcc compiler warnings.
virtual functions and accessible non-virtual destructor [-Wnon-virtual-dtor]
2024-06-24 14:45:26 +09:00
Hermet Park
4b4514a8b0 wg_engine: add the wgpu_native library dependency.
about the wgpu-native please visit:
https://github.com/gfx-rs/wgpu-native/releases
2024-06-24 14:45:19 +09:00
Hermet Park
ba56f8c6f4 Update README.md 2024-06-24 14:45:12 +09:00
Hermet Park
0057019b05 Update README.md 2024-06-24 14:45:04 +09:00
Hermet Park
28ac09648e common: fix a crash on CI windows test.
it's a vs2022 17.10 stl known issue.
https://github.com/microsoft/STL/wiki/Changelog
2024-06-24 14:44:58 +09:00
Mira Grudzinska
70c2260cfb svg_loader: handle text node
The text node is handled, but default values
of the font-family and font-size as used in
the user's system are not.
For now font has to be loaded by the user.

@Issue: https://github.com/thorvg/thorvg/issues/2350
2024-06-24 14:44:52 +09:00
Hermet Park
d928c93239 renderer: optimize the ClipPath fast-track.
this optimization applies when the clipper is
not an axis-aligned rectangle under the following conditions:

a. Coverage where the clipper is a regional superset of the viewport.
b. Coverage where the clipper is completely outside of the viewport.

issue: https://github.com/thorvg/thorvg/issues/2332
2024-06-24 14:44:21 +09:00
Hermet Park
5a6d31a2e9 renderer: code clean up 2024-06-24 14:44:15 +09:00
Hermet Park
0cf840fbd4 common/math: added minor math functions. 2024-06-24 14:44:05 +09:00
Hermet Park
dd8cdb241b Update CONTRIBUTING.md 2024-06-24 14:43:59 +09:00
Mira Grudzinska
b95fa3a7bd sw_engine: fix fastTrack condition
When checking the fastTrack condition,
it's necessary to exclude the outlines
with a Bezier curve (Move-Cubic-Line,
Move-Cubic-Close, Move-Line-Cubic).

@Issue: https://github.com/thorvg/thorvg/issues/2379
2024-06-24 14:43:54 +09:00
Mira Grudzinska
733f0996d8 docs: resolve doxygen warnings 2024-06-24 14:43:48 +09:00
Hermet Park
dbb0fc9476 test: resolve compiler warnings on msvc.
warning C4305: 'argument': truncation from 'double' to 'float'
2024-06-24 14:43:25 +09:00
Hermet Park
137383ff78 examples: fix memory leak 2024-06-24 14:43:14 +09:00
Hermet Park
3c3ad144a7 Revert "sw_engine: revert the threshold."
This reverts commit dad797445b.

Misidentified the key issue. It will be reviewed again.
2024-06-24 14:43:07 +09:00
Hermet Park
f9c86fc38a sw_engine: revert the threshold.
Somehow, it breaks the window unit-test, revert the value.

regression by: 51a2936b28
2024-06-24 14:43:00 +09:00
Hermet Park
7fd552fab0 sw_engine: fine-tuning RLE performance.
the arranged value is examined with the local test,
improved the speed twice for a corner-case that
extreamly huge size shape.
2024-06-24 14:42:54 +09:00
Hermet Park
d5f41c85d3 api: corrected return type.
NonSupport indicates unsupported options due to disabled features
or lack of system support. InvalidArgument indicates the case
such as incorrect parameter values.
2024-06-24 14:42:46 +09:00
Jinny You
8a1a3e54ee lottie: Add exception for lottie doesn't have exported glyph
Added handling logic for missing characters to prevent program hang.
2024-06-24 14:42:33 +09:00
Mira Grudzinska
f0b0ea3edb sw_engine: fix trimming
For the 'simultaneous' trimming option, the maximum
stroke length from all subpaths was determined and
used to scale the trim of each subpath. As a result,
if the subpaths had different lengths, this scaling
was incorrect.
Now, the length is determined separately for each
subpath and is used to scale the trimming of its stroke.

@Issue: https://github.com/thorvg/thorvg/issues/2335
2024-06-24 14:42:25 +09:00
Jinny You
2f26dc33a9 lottie: Fix invalid font match
When Lottie has similar font names, it incorrectly matches fonts due to a logic bug.

This error causes an infinite loop when searching for glyphs.
2024-06-24 14:42:19 +09:00
Mira Grudzinska
61de65e10b common: clarification of returned types
The functions setting stroke's features always
returned a true. Returnig a boolen was a remnant
from a previous implementation. Since now they
never return false, they can be void functions.
The APIs description has been corrected.
2024-06-24 14:42:12 +09:00
Mira Grudzinska
20a0d1379e test: add strokeTrim tests 2024-06-24 14:41:22 +09:00
Mira Grudzinska
710fa22d50 capi: bindings for strokeTrim
Example Capi.cpp modyfied.
2024-06-24 14:41:15 +09:00
Mira Grudzinska
ad748df345 examples: add StrokeTrim example 2024-06-24 14:40:40 +09:00
Mira Grudzinska
e6f4b5a2a8 common: strokeTrim api introduced
New api sets/gets the trim of the stroke
along the defined path segment, allowing
control over which part of the stroke is
visible.

@issue: https://github.com/thorvg/thorvg/issues/2190
2024-06-24 14:37:53 +09:00
Mira Grudzinska
bdd506bbb8 lottie: fix matte layer finding
Layer identifiers do not have to be unique within
the entire file - they are unique within a given
group. Searching the entire composition to find
the referenced matte was an incorrect approach.

Error introduced by 1ee79a6c2a

@Issue: https://github.com/thorvg/thorvg/issues/2349
2024-06-24 14:37:29 +09:00