Skip to content

Releases: thorvg/thorvg

ThorVG 0.11.3

27 Oct 05:31

Choose a tag to compare

This release includes some performance optimizations and fixes for the following bugs:

  • [Renderer] Improved the internal structure for compact scene-hierarchy traversing.
  • [SwEngine] Improved trigonometric & image scaler performance.
  • [SwEngine] Fixed a loss of image pixels during image down-scaling.
  • [Lottie] Updated frame count unit with float type for smoother animations.
  • [Lottie] Introduced a static layer scene/clipper for caching effects.
  • [Lottie] Enabled layer blending feature: #1737

ThorVG v0.11.2

20 Oct 05:09

Choose a tag to compare

This release includes fixes for the following bugs:

  • [SwEngine] Resolved a default alpha blending bug. #1716
  • [JPG] Fixed a regression bug that previously disrupted image decoding. #1705
  • [Lottie] Improved handling of stroking outlines to ensure proper overlap. #1642
  • [Lottie] Rectified the trimpath functionality to correctly support simultaneous trimpath operations.

ThorVG v0.11.1

13 Oct 06:06

Choose a tag to compare

This release includes fixes for the following bugs:

  • [SwEngine] Enhanced the quality of the dash line corners. #121
  • [Lottie] Fixed handling of multiple strokes in one layer. #1642
  • [Lottie] Fixed a regression bug causing broken images due to 3D transformation in Lottie. #1698
  • [SVG] Fixed a regression bug related to maskContentUnits userSpaceOnUse/objectBoundingBox. #1694

ThorVG v0.11.0

28 Sep 05:29

Choose a tag to compare

After two months of unwavering dedication, we are delighted to unveil the latest iteration of ThorVG. Within this revamped release, we are eager to introduce a host of significant enhancements.

Lottie Animation

First and foremost, ThorVG has undergone intensive development to offer comprehensive support for Lottie Animation. Lottie Animation is an industry-popular JSON-based vector animation file format that has gained widespread popularity due to its feature revolution and a growing community. With our latest v0.11 release update, ThorVG now proudly provides enhanced support for key features of Lottie Animations:

  • Maskings: Create intricate masking effects to reveal or hide parts of your animations, adding depth and complexity to your designs. Lottie supports four types of maskings such as Add, Subtract, Difference, Intersects by matting methods such as Alpha, Inverse Alpha, Luma and Inverse Luma.

  • Trimpath: Fine-tune the appearance of your vector paths by controlling their start and end points, enabling smooth and precise animations.Trimpath is particularly effective for representing changes in the path of a line and state transitions over time, especially when it comes to rendering cursive text writing effects.

  • Images: Seamlessly integrate raster images such as jpeg and png into your vector animations, allowing for versatile and dynamic visual content. These bitmaps supplement the motion effects when vector drawing is hard to use in your complex design.

  • Polygon(Polystar): Effortlessly create geometric shapes and stars with customizable properties, elevating your animation's visual appeal through structural design input parameters (significantly easier to use than individual Bezier curves).

  • Repeater: Simplify complex animations by effortlessly duplicating and arranging elements in patterns, streamlining the creation of intricate designs and animations. Typically, this is used to replicate the same pattern effects with a single design source.

Alongside support for essential features, we have significantly improved various aspects of Lottie, enhancing its functionality and stability. Looking ahead, we plan to continue working on supporting advanced features such as Layer effects, Texts, and Expressions, making it even more versatile and sophisticated.

Furthermore, ThorVG ensures compatibility across nearly all platforms and systems, including Web, Android, MacOS, Linux, and Windows, for Lottie animations in the form of a lightweight, standalone single library with a binary size of less than 300KB.

ThorVG Viewer

ThorVG offers a dedicated test tool for showcasing vector resources powered by the ThorVG engine. This tool enables immediate rendering in a web browser using the ThorVG WebAssembly binary, allowing for real-time editing of vector elements. The loader operates locally, ensuring that resources are not uploaded to external servers, thereby safeguarding the copyright of the designer's resources. Now, you can easily test various vector resources, including Lottie files, to see how they perform with the ThorVG engine directly from your browser.
(Link: https://thorvg.github.io/thorvg.viewer/)


CI & Infrastructure

We've changed the git repository name to 'main' from 'master' to promote inclusivity and eliminate potentially offensive language. The term 'master' carries historical connotations that some may find insensitive, and this change aligns with our commitment to creating a more inclusive and welcoming environment for all contributors and users of our codebase.

We've also introduced GitHub MacOS CI to ensure the continuous maintenance of a robust codebase for the MacOS system. With this addition, all our code changes will undergo automatic testing and verification on MacOS, ensuring the reliability of our software.

Lastly, please take note that we have revamped the repository folder structure to make it more intuitive and coherent. The major changes appear as follows:

"thorvg/src/lib" -> "thorvg/src/renderer" (for vector drawing features)
"thorvg/src/lib" -> "thorvg/src/common" (providing essential common functionalities used internally among the renderer and sub-modules)
"thorvg/src/bin" -> "thorvg/src/tools" (housing utility executable tools)

Feature Changes

In this release, tvg::Picture would avoid attempting forceful loading when the given MIME type is not correct. Loading images when the MIME type is incorrect is unnecessary and often results in failure, adding unnecessary processing overhead. Therefore, tvg::Picture should have a clear MIME type assigned by users.

Also, we've changed the behavior of Canvas::clear(false). The canvas::clear(false) now retains the paints, allowing the user to update the next frame more easily without having to recompose the paint list. Previously, clear(false) removed the paint list from the canvas, requiring the user to re-push all of them in the next frame. Now, we offered the Canvas::paints() API (in v0.10), allowing users to modify the paint list directly instead. This change will break compatibility with previous versions of Canvas.

Here are the major enhancements since v0.10:

[SwEngine]

  • Properly implemented the 8-bit masking target with 32-bit source images, resolving certain Lottie matting issues.
  • Enhanced support for 8-bit colorspace Linear/Radial gradient composition.
  • Optimized the colorspace from 32-bit to 8-bit for the add/subtract/difference/intersect mask operations.

[SVG]

  • Ensure support for the objectBoundingBox value of clipPathUnits and for the userSpaceOnUse value of maskContentUnits. #429
  • Improved support for the focal property of radial gradients. #1555
  • Enhanced support for the dash line offset property. #1591

[Lottie]

  • Enhanced support for the trimpath feature. #1559
  • Ensure proper support for Polystar/Polygon property. #1559
  • Ensured proper support for embedded images. #1559
  • Added support for the repeater feature. #1559
  • Improved support for masking layers. #1559
  • Enhanced support for solid color layers.
  • Enhanced the coverage of the rounded corner feature.
  • Improved support for the focal property of radial gradients.
  • Enhanced support for proper hold interpolation.
  • Enhanced support for dash-stroking offset and gradient dash stroking.
  • Implemented support for 3D transformations.

Here are major bug fixes since v0.10:

[Renderer]

  • Fix a composition issue where gradient stroke and a valid fill were handled together. #445
  • Resolve a deadlock problem that occurred when a picture embedded another picture's resources.
  • Fixed a bezier curve computation error in an exceptional scenario.
  • Fixed an issue of a missing stroke miterlimit property copy in duplicated shapes.

[SwEngine]

  • Corrected bitmap image color conversion when using a straight alpha premultiplied canvas. #1671
  • Resolved an issue with ghost artifacts on single lines caused by zero-sized visual drawing.
  • Corrected anti-aliased blending discrepancies in 8-bit colorspace composition.
  • Corrected inaccurate subtract/intersect masking behaviors within chain-masking. #1606
  • Fixed incorrect anti-aliasing issue when small stroking is overlapped with shapes.
  • Improved rendering behavior to display a single dot when a zero-length bezier curve/line is provided with a stroke width. #218
  • Fixed invalid memory access of a bitmap surface in a specific case.

[SVG]

  • Corrected handling of clips with multiple transformed shapes, and added support for "use" nodes within the clips.

[Lottie]

  • Fixed incorrect stroke width scaling propagation.
  • Fixed the proper propagation of opacity values during scene rendering.
  • Corrected a computation error in precomp time remapping.
  • Fixed an issue with incorrect viewport clipping.
  • Fixed a crash issue caused by incorrect gradient alpha handling.
  • Prevented the display of layers when the frame is out of range.
  • Implemented proper error handling for cases of invalid lottie files.
  • Fixed an issue where the time-remapping feature was not functioning correctly.
  • Corrected the radial gradient type, ensuring it now operates as intended.
  • Addressed an issue with dashed strokes, ensuring they are now displayed accurately.
  • Significantly improved overall stability for a smoother user experience.

[Portability]

  • Resolved a compilation error that occurred when using MingGW, specifically related to the "_USE_MATH_DEFINES" directive...
Read more

ThorVG v0.10.7

22 Sep 03:23

Choose a tag to compare

This release includes fixes for the following issues:

  • [Renderer] Fixed a regression deadlock issue related to thread scheduling. #1636
  • [SwEngine] Properly implemented the 8-bit masking target with 32-bit source images, resolving certain Lottie matting issues.
  • [SwEngine] Fixed a regression bug that previously led to a dash-line infinite-looping problem.
  • [SwEngine] Corrected a focal issue in radial gradient filling that was breaking the image in specific cases. #1555
  • [Lottie] Fixed incorrect time-remapping logic, ensuring that the last frame is not considered during drawing.
  • [Lottie] Addressed an issue with a missing handling GradientFill opacity values.
  • [Lottie] Rectified an invalid Precomp view clipping problem.
  • [Lottie] Solved an issue with invalid matting results when the matting target is out of the frame range.
  • [Lottie] Fixed a parenting issue when the parent is one of the matte target types.
  • [Lottie] Addressed an issue with incorrect stroke width scaling propagation.
  • [Portability] Fixed compilation issues related to min() and max() for VS2017. #1661

ThorVG 0.10.6

15 Sep 05:43

Choose a tag to compare

This release includes fixes for the following issues:

  • [SwEngine] Resolved an issue with ghost artifacts on single lines caused by zero-sized visual drawing.
  • [SwEngine] Corrected anti-aliased blending discrepancies in 8-bit grayscale composition.
  • [SwEngine] Enhanced support for 8-bit grayscale Radial/Linear gradient composition, addressing Gradients Matting composition issues in Lottie Animation.
  • [SwEngine] Improved rendering behavior to display a single dot when a zero-length bezier curve/line is provided with a stroke width.
  • [Lottie] Stabilized the engine by addressing several crashes resulting from invalid memory access.
  • [Lottie] Rectified the loss of precomp matting composition.
  • [Lottie] Enhanced the Hold Interpolation functionality, which was previously missing for Paths/Gradients.
  • [Lottie] Fixed the proper propagation of opacity values during scene rendering.

ThorVG 0.10.5

08 Sep 07:05

Choose a tag to compare

This release includes fixes for the following issues:

  • [Renderer] Addressed a regression bug related to thread-safety. #1623
  • [SVG] Improved support for the focal property of radial gradients. #1555
  • [Lottie] Improved support for the focal property of radial gradients.
  • [Lottie] Enhanced support for proper hold interpolation.
  • [Lottie] Enhanced support for gradient dash stroke.
  • [Lottie] Added support for the repeater feature.
  • [Lottie] Implemented support for 3D transformations.
  • [Lottie] Fixed an issue with incorrect viewport clipping.
  • [Lottie] Corrected a computation error in precomp time remapping.

ThorVG 0.10.4

01 Sep 06:29

Choose a tag to compare

This release includes fixes for the following issues:

  • [Renderer] Fixed a bezier curve computation error in an exceptional scenario.
  • [Renderer] Fixed an issue of a missing stroke miterlimit property copy in duplicated shapes.
  • [SwEngine] Corrected inaccurate subtract/intersect masking behaviors within chain-masking.
  • [SwEngine] Fixed incorrect antialiasing issue when small stroking is overlapped with shapes.
  • [Lottie] Fixed a crash issue caused by incorrect gradient alpha handling.
  • [Lottie] Corrected a default color of the solid layer.
  • [Lottie] Enhanced the coverage of the rounded corner feature.
  • [Lottie] Enhanced the trimpath feature.
  • [Portability] Fixed empty-body compile errors.

ThorVG 0.10.3

25 Aug 07:41

Choose a tag to compare

This release includes fixes for the following issues:

  • [SVG] Ensure proper support for the objectBoundingBox value of clipPathUnits and for the userSpaceOnUse value of maskContentUnits. #429
  • [SVG] Ensure proper support for dash-stroking offset.
  • [Lottie] Ensure proper support for dash-stroking offset.
  • [Lottie] Ensure proper support for Polystar property.
  • [Renderer] Fix a composition issue where gradient stroke and a valid fill were handled together. #445
  • [Renderer] Resolve a deadlock problem that occurred when a picture embedded another picture's resources.

ThorVG 0.10.2

18 Aug 07:57

Choose a tag to compare

This release includes fixes for the following issues:

  • [SVG] Corrected handling of clips with multiple transformed shapes, and added support for "use" nodes within the clips.
  • [Lottie] Ensured proper support for embedded images.
  • [Lottie] Fixed the issue with incorrect precomp layer frame timing.
  • [Lottie] Prevented the display of layers when the frame is out of range.
  • [Lottie] Implemented proper error handling for cases of invalid lottie files.
  • [Lottie] Enhanced support for solid color layers.
  • [Lottie] Improved support for mask layers.