[issues 1479: lottie](#1479)
Vertex, Index and uniform buffers now updates instead of recreate.
Implemented pools form mesh objects and render shapes data
it increase performance in 30-40% in massive animations scenes
GL might need to generate a default target FBO
when the given target ID indicates the main surface.
However, users may want to draw visuals directly onto the main surface.
This policy must be reviewed thoroughly.
re-implement the gif conversion function with the correct approach.
The input data is not reusable as it undergoes modifications during parsing.
To address this, the function now creates a backup of the original data for use in GIF conversion.
This also resolves issues where the GIF viewport was incorrectly matched.
This implementation may be revisited upon
the availability of Animation::duplicate().
The Lottie loader now utilizes an individual scene instance per loader.
This guarantees that each instance retains a unique frame number,
essential for maintaining the integrity of animation states.
As a result, sharing loaders between Lottie animations is prohibited
to uphold frame context isolation.
This may be subject to optimization review in the future.
[issues 1479: lottie](#1479)
To optimize bled operations hardware pipeline blend stage are used for some blend methods:
BlendMethod::SrcOver
BlendMethod::Normal
BlendMethod::Add
BlendMethod::Multiply
BlendMethod::Darken
BlendMethod::Lighten
Other types compute shaders used
This correction addresses the drawing order of
objects when a group contains a TrimPath and
is merging shapes.
Additionally, the TrimPath method is can applied
to the engine to control the drawing behavior by
7f3dc541d6b7abcdc03facd884489f37c327fd98
issue: https://github.com/thorvg/thorvg/issues/2047
examples are not considered a feature of ThorVG;
hence, they are excluded from the src directory.
This change allows developers to concentrate more effectively
on the core ThorVG sources for practical usages.
this optimization nicely merges shapes
when a child group has a only (transformed) pathes.
this also fixes the following compatibility issue nicely.
issue: https://github.com/thorvg/thorvg/issues/2061
When finding the 'nodeFrom' referenced by `<use>`,
if it is the parent, it is not referenced.
https://www.w3.org/TR/SVG2/struct.html#UseElement
Specification:
If the referenced element is a (shadow-including) ancestor
of the ‘use’ element, then this is an invalid circular reference
and the ‘use’ element is in error.
related issue: https://github.com/thorvg/thorvg/issues/2078
SVG_FILE_65171.svg
SVG_FILE_65172.svg
removed unused static condition.
static was prepared for optimization,
but not used at all.
we will revisit this later when time permits.
binary size: -6kb
When lottie is broken and provides invalid gradient, the program crashes in segmentation fault.
At that time, in the `populate` function, `ColorStop& color` doesn't have `input` but tries to use it.
Added checking nullptr logic. The function `populate` will not proceed and return 0 in that case.
related issue: #2072
There are differences in behavior compared to the SVG spec,
especially when consecutive line drawings occur without a moveTo command
following a closePath command.
Actually, thorvg didn't care the behavior in that scenario,
this update ensures the scenario is handled correctly
to align with the SVG specification.
issue: https://github.com/thorvg/thorvg/issues/1487
Slot overriding tries to set property via the `LottieObject`. It potentially causes unexpected changes.
Revised the `override` function. The purpose of this patch is to aim atomic property to be overriden.