Commit graph

2236 commits

Author SHA1 Message Date
Sergii Liebodkin
7145c66b00 wg_engine: fix stroke mitter limit
Change the appliense of stroke mitter limit as in SVG spec

Before/After
2024-06-25 21:53:42 +09:00
RuiwenTang
01b85eea8a gl_engine: correct the return value of render function
If RenderData has nothing to draw, need to return `true`.
2024-06-25 16:05:30 +09:00
Hermet Park
a7c7539674 doc: removed useless information for easier maintainence.
That basic information is addressed in the Results section.
We can only add information that pertains to a specific scenario.
2024-06-25 11:11:33 +09:00
RuiwenTang
28331e9bf3 gl_engine: Fix memory leak caused by no deleted GlRenderTask 2024-06-25 00:15:01 +09:00
RuiwenTang
3c6a456d2c gl_engine: Fix compose render not correct after canvas resize
When canvas size changed, need to clear cached GLRenderTarget and
GLCompose.
2024-06-24 11:16:49 +09:00
Hermet Park
af1f3cb59d gl_engine: revise the gl portability
- guarantee minimum gl version requirement
- removed glesv2 dependency
- corrected gl ver dependency

issue: https://github.com/thorvg/thorvg/issues/2282
2024-06-24 11:08:28 +09:00
Hermet Park
9fb8a49d52 renderer/canvas: ++exceptional handling.
do not allow change the target if the condition is not satisfied.
2024-06-24 01:29:57 +09:00
JunsuChoi
60212747b5 renderer/canvas: Check refresh before draw
If target() is called again after update() is called and the size of the buffer changes, a crash may occur.
Therefore, check the refresh variable and perform drawing after update().
2024-06-23 19:35:36 +09:00
RuiwenTang
b71d9d563a gl_engine: Fix compile error if only has OpenGL library on MacOS
Since GLES headers and library can not be found on MacOS,
use macros to determin if link with OpenGL library.
2024-06-23 19:34:31 +09:00
Hermet Park
9191c33013 sw_engine: fix missing fill/stroke raster
properly update the fill/stroke when the path
has been changed
2024-06-23 18:17:14 +09:00
Hermet Park
94f304275e renderer: minor optimization
reduce the path flag writing
2024-06-23 18:17:14 +09:00
Hermet Park
2c7a83406e lottie: hotfix for preventing a crash.
MaskMode=None is not properly addressed,
Prevent the crash from the use-case.

issue: https://github.com/thorvg/thorvg/issues/2426
2024-06-23 11:57:40 +09:00
Mira Grudzinska
8939f7cbd4 sw_engine: fix stroke miterlimit precision
Since the value was casted to int the results
were different than expected.
2024-06-21 19:47:23 +09:00
Hermet Park
ec792d2e9a infra: promote the GL engine to an official one.
The ThorVG OpenGL/ES engine has been stabilized and improved
significantly. Now, as a graphics engine, its drawing features
are quite functional. It is time to officially release the
engine and maintain it in the release process.

Thanks @Ruiwen for going above and beyond!

issue: https://github.com/thorvg/thorvg/issues/2435
2024-06-21 11:53:37 +09:00
Mira Grudzinska
e8b5062657 docs: descriptions++ 2024-06-20 23:12:34 +09:00
Sergii Liebodkin
53de5f2ff7 wg_engine: fix incorrect geomatry
Fix computation of segments count for cubic curves.
Using screen coordinates of base points, instead of world coordinates
2024-06-20 19:03:42 +09:00
Hermet Park
0c8fe81072 gl_engine: improve the dependency check
- dependency() works with a pkgconfig, more preferred.
- add fallback to GL library search with candididates.
2024-06-20 17:47:29 +09:00
Hermet Park
b79e8d5f24 lottie: fix a compile error on MSC with clang.
issue: https://github.com/thorvg/thorvg/issues/2347
2024-06-20 17:47:15 +09:00
Hermet Park
11c6da340b sw_engine: ++exception handling
prevent the out of range anti-aliasing frames.

issue: https://github.com/thorvg/thorvg/issues/2401
2024-06-20 17:46:52 +09:00
Hermet Park
a9592ec3ef sw_engine: hotfix avx/neon 8 bit rasterizer.
recte/rle 8 bit rasterizer has been broken,
make it work safely with c raster version.

issue: https://github.com/thorvg/thorvg/issues/2146
2024-06-20 17:46:40 +09:00
Mira Grudzinska
a337a8c57a common: add missing ifdef
In the absence of support for the TTF loader
crashes occurred. Fixed.
2024-06-19 20:08:14 +09:00
Mira Grudzinska
d7ab592fb9 lottie: fix repeater order
Assigning numbers 1 or 2 to a bool always
resulted in true. Now fixed and repeated
shapes are drawn in the proper order.
If the repeater had no elements, iterating
shapes from the end would result in a segf.
This issue is now fixed.
2024-06-19 11:02:41 +09:00
Hermet Park
6f33a2bcbb infra: --EGL dependency
there is no more EGL dependency in gl engine.
2024-06-19 01:47:41 +09:00
Sergii Liebodkin
03c6f43441 wg_engine: fix scene rendering with blend
Fix allplience of the blend method, that setuped for scene, but not for a shape
Overlay blend func changed to be close to spec
2024-06-19 01:46:59 +09:00
Mira Grudzinska
2be8bfd9da capi: text c-api binding
@Issue: https://github.com/thorvg/thorvg/issues/2374
2024-06-18 10:50:53 +09:00
Sergii Liebodkin
f97c16f94c wg_engine: skip shapes with zero opacity values
Skip shapes rendering, if opacity is 0 and if fill color for shape and strokes also equal to 0
This behavior is used in sw renderer and fix visual artifacts in referenced animations.
Also this rule fix composition results in case of AlphaMask and InvAlphaMask methods
2024-06-18 01:10:52 +09:00
Hermet Park
846ae09151 wg_engine: --redundant code 2024-06-17 15:59:53 +09:00
Mira Grudzinska
6518f2e442 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-17 11:45:25 +09:00
Mira Grudzinska
6544747e70 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-17 11:45:25 +09:00
Sergii Liebodkin
184343f6f2 wg_engine: fix composition math
Fix AlphaMask, InvAlphaMask, LumaMask and InvLumaMask math
Fix double apllience of opacity value
2024-06-17 11:44:13 +09:00
Sergii Liebodkin
f333241f0a wg_engine: fix fill rule usage
Fix wronk application of fill rule in a cases of terminated path (.close()/.moveTo())
2024-06-17 11:43:40 +09:00
Sergii Liebodkin
419fa93989 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-17 11:42:51 +09:00
Hermet Park
43464ceba4 infra: build wg canvas properly. 2024-06-16 18:29:36 +09:00
Hermet Park
dbde6393a9 renderer/canvas: clean up code
pimpl is not used at all.
2024-06-16 18:23:15 +09:00
Mira Grudzinska
c4781545c9 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-15 23:12:04 +09:00
Hermet Park
51c2e66f51 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-14 10:40:56 +09:00
Hermet Park
1099c65fe7 sw_engine: fix a missing anti-aliasing
enable fill anti-aliasing when the stroke is trimming.
2024-06-14 09:57:12 +09:00
Hermet Park
de693c3e3e infra: relocate the tools folder.
Collect only library source code in src
2024-06-13 17:52:14 +09:00
Hermet Park
5e6df3334b infra: ++wg_native package dependency
Windows might need a own library linking method.
2024-06-13 14:44:55 +09:00
Sergii Liebodkin
a7f4d718f4 wg_engine: fix model view matrix
In a case of compostions model view matrix did not apply samples count
2024-06-13 10:46:36 +09:00
Sergii Liebodkin
9f08e4755c 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-13 10:46:36 +09:00
Sergii Liebodkin
7e493f91f2
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-12 12:39:37 +09:00
Mira Grudzinska
d8a720fb7e 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-11 20:59:39 +09:00
RuiwenTang
f8626d13d1 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-11 20:57:07 +09:00
Hermet Park
d9294471a6 wg_engine: resolve gcc compiler warnings.
virtual functions and accessible non-virtual destructor [-Wnon-virtual-dtor]
2024-06-11 20:54:56 +09:00
Hermet Park
97ee9edaa2 wg_engine: add the wgpu_native library dependency.
about the wgpu-native please visit:
https://github.com/gfx-rs/wgpu-native/releases
2024-06-11 20:54:56 +09:00
Hermet Park
e51dfb068a 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-10 23:57:41 +09:00
Mira Grudzinska
8afb7f7ca8 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-10 13:27:14 +02:00
Hermet Park
7b5de2fdb3 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-10 11:18:53 +09:00
Hermet Park
fc754f3f6b renderer: code clean up 2024-06-10 11:18:53 +09:00