Skip to content

Releases: thorvg/thorvg

ThorVG 1.0.0-pre11

23 Jan 17:52

Choose a tag to compare

ThorVG 1.0.0-pre11 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre10.

  • [SwEngine] Fixed stride assignment to prevent buffer overflow. #3109
  • [SwEngine] Fixed buffer overflow in texture mapping by adding bounds checking. #3102
  • [SwEngine] Improved scalability of effects, ensuring proper scaling for blur and drop shadow effects.
  • [SwEngine] Fine-tuned blur performance with a 12% improvement.
  • [GlEngine] Corrected blending equations for ColorDodge and ColorBurn modes. #3072
  • [GlEngine] Added proper support for Shape::strokeOrder()
  • [Lottie] Fixed text stroke and fill layering order. #3126
  • [Lottie] Improved safety in handling expressions.
  • [Lottie] Updated `Animation::segment() specifications from normalized value parameters to frame counts.
  • [SVG] Added support for the Gaussian blur effect. #1367
  • [Portability] Ensured compatibility with Zephyr RTOS by addressing necessary includes and float promotions.
  • [Renderer] Revised the clamp() function to reduce unexpected overhead in web rendering.
  • [Web] Fixed a build issue related to the EMSCRIPTEN_WEBGL_CONTEXT_HANDLE declaration.
  • [Web] Fixed a build issue with the wgpu_native dependency.
  • [C++ API] Modifications:
Result Shape::fillColor(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a = nullptr) const
 -> Result Shape::fill(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a = nullptr) const
uint32_t Shape::pathCoords(const Point** pts) const
uint32_t Shape::pathCommands(const PathCommand** cmds) const
 -> Result Shape::path(const PathCommand** cmds, uint32_t* cmdsCnt, const Point** pts, uint32_t* ptsCnt) const
  • [C API] Modifications:
Tvg_Result tvg_shape_get_path_coords(const Tvg_Paint* paint, const Tvg_Point** pts, uint32_t* cnt)
Tvg_Result tvg_shape_get_path_commands(const Tvg_Paint* paint, const Tvg_Path_Command** cmds, uint32_t* cnt)
 -> Tvg_Result tvg_shape_get_path(const Tvg_Paint* paint, const Tvg_Path_Command** cmds, uint32_t* cmdsCnt, const Tvg_Point** pts, uint32_t* ptsCnt)

Full Changelog: v1.0-pre10...v1.0-pre11

ThorVG 0.15.9

16 Jan 23:43

Choose a tag to compare

This release includes several improvements and minor bug fixes:

  • [SwEngine] Corrected blending equations for ColorDodge, ColorBurn, Exclusion, and SoftLight modes. #3072
  • [SwEngine] Fixed stride assignment to prevent buffer overflow. #3109
  • [SwEngine] Fixed buffer overflow in texture mapping by adding bounds checking. #3102
  • [GlEngine] Corrected blending equations for ColorDodge and ColorBurn modes. #3072
  • [Lottie] Enhanced Slot Overriding Transform properties. #2591
  • [Lottie] Fixed text stroke and fill layering order. #3126
  • [Portability] Fixed a minor runtime error on macOS. #3102
  • [Portability] Ensured compatibility with Zephyr RTOS by addressing necessary includes and float promotions.

Full Changelog: v0.15.8...v0.15.9

ThorVG 1.0.0-pre10

09 Jan 15:14

Choose a tag to compare

ThorVG 1.0.0-pre10 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre9.

  • [SwEngine] Fixed a regression issue with viewport clipping when resizing a Picture. #3039
  • [SwEngine] Resolved a regression bug causing broken clipping results during stroke clipping.
  • [SwEngine] Addressed an issue with RLE cell building that caused horizontal line artifacts. #2929
  • [SwEngine] Corrected blending equations for ColorDodge, ColorBurn, Exclusion, and SoftLight modes. #3072
  • [WgEngine] Corrected blending equations for ColorDodge and ColorBurn modes. #3072
  • [GlEngine] Improved handling of zero-length paths with stroke caps. #3065
  • [GlEngine] Optimized the binary size, reducing it by up to 10KB through internal refactoring.
  • [Lottie] Fixed a regression bug where masking clipping was not properly applied.
  • [Lottie] Enhanced Slot Overriding Transform properties. #2591
  • [SVG] Fixed regression bugs related to broken clipPath. #3083 #3082
  • [SVG] Resolved an issue with incorrect transformation order for clip children.
  • [SVG] Improved feature compatibility for SVG clipping and masking. #3089
  • [Portability] Fixed a minor runtime error on macOS. #3102
  • [C++ API] Modifications:
enum class FillRule:Winding
 -> enum class FillRule::NonZero
GlCanvas::target(int32_t id, uint32_t w, uint32_t h, ColorSpace cs)
 -> GlCanvas::target(void* context, int32_t id, uint32_t w, uint32_t h, ColorSpace cs)
  • [C API] Modifications:
enum Tvg_Fill_Rule::TVG_FILL_RULE_WINDING
 -> enum Tvg_Fill_Rule::TVG_FILL_RULE_NON_ZERO
 Result target(int32_t id, uint32_t w, uint32_t h, ColorSpace cs) 
 -> Result target(void* context, int32_t id, uint32_t w, uint32_t h, ColorSpace cs)

Full Changelog: v1.0-pre9...v1.0-pre10

ThorVG 0.15.8

02 Jan 23:24

Choose a tag to compare

This release includes several improvements and minor bug fixes:

  • [SwEngine] Improved handling of zero-length paths with Stroke Caps. #3065
  • [SwEngine] Corrected the rle cell building. #2929
  • [GlEngine] Improved handling of zero-length paths with Stroke Caps. #3065
  • [Lottie] Added support for Stroke Layer Effect. #2718
  • [Lottie] Fixed a regression in masking logic introduced in v0.15.7.
  • [Lottie] Improved compatibility for Windows OS by addressing file reading issues caused by \r\n line endings.
  • [Svg] Fixed transformation order for clips defined by a use node.

Full Changelog: v0.15.7...v0.15.8

ThorVG 1.0.0-pre9

26 Dec 16:27

Choose a tag to compare

ThorVG 1.0.0-pre9 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre8.

  • [Renderer] Added support for Fill, Tint, and Tritone Scene Effects (experimental), expanding the range of creative visual effects.
  • [Renderer] Enhanced internal data structures, resulting in up to a 4% improvement in rendering performance.
  • [Renderer] Corrected the handling of dash offset values. #1643
  • [SwEngine] Addressed incorrect radial gradient calculations for 8-bit rasterization.
  • [SwEngine] Managed clippers with boundaries extending beyond the rendering region. #2684, #3003
  • [SwEngine] Allowed stroke clipping behavior. #3063
  • [SwEngine] Improved handling of zero-length paths with Stroke Caps. #3065
  • [GlEngine] Fixed gradient color rendering issues when shape opacity is applied. #3030, #3032
  • [Lottie] Added support for Fill, Tint, Tritone, and Stroke Layer Effects. #2718
  • [Lottie] Refined masking logic and corrected mask offset application.
  • [Lottie] Optimized fast-track masking for better performance.
  • [Lottie] Improved compatibility for Windows OS by addressing file reading issues caused by \r\n line endings.
  • [Web] Added exceptional handling for WebGPU initialization failures to improve stability.
  • [Infra] Removed the ASYNCFY option to reduce the wgpu binary size by -36%
  • [Infra] Updated deprecated Meson functions to ensure compatibility and maintainability.
  • [C++ API] Modifications:
Result Accessor::set(Picture* picture, std::function<bool(const Paint* paint, void* data)> func, void* data)
 -> Result Accessor::set(Paint* paint, std::function<bool(const Paint* paint, void* data)> func, void* data)

Full Changelog: v1.0-pre8...v1.0-pre9

ThorVG 0.15.7

20 Dec 02:00

Choose a tag to compare

This release includes several improvements and minor bug fixes:

  • [Renderer] Support for the SceneEffect::Fill, SceneEffect::Tint and SceneEffect::Tritone (experimental version).
  • [SwEngine] Fixed gradient calculations.
  • [SwEngine] Fixed dash offset assignment omission. #1643
  • [SwEngine] Handled clippers with boundaries outside the rendering region. #2684, #3003
  • [GlEngine] Fixed path trimming calculations. #2799
  • [GlEngine] Fix gradient color rendering with shape opacity applied. #3030, #3032
  • [Lottie] Support for the Fill, Tint and Tritone LayerEffects. #2718
  • [Lottie] Handled exception to ensure the SceneEffect::DropShadow's opacity range is within 0-255.
  • [Lottie] Revised masking logic, fixed mask offset application, optimized fast track masking.
  • [Portability] Prevented compiler warning on MSYS2
  • [Infra] Updated deprecated Meson functions

Full Changelog: v0.15.6...v0.15.7

ThorVG 1.0.0-pre8

12 Dec 16:08

Choose a tag to compare

ThorVG 1.0.0-pre8 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre7.

  • [Lottie] Support for the Fill LayerEffect spec. #2718
  • [Renderer] Support for the SceneEffect::Fill (experimental version).
  • [GlEngine] Fixed a calculation error in path trimming. #2799
  • [WgEngine] Enhanced the canvas resizing mechanism for smoother performance.
  • [Web] Reduced the WebGPU stack size in the WASM build (4 MB → 2 MB).
  • [C++ API] Removals:
Result Canvas::clear(bool paints, bool buffer)
  • [C++ API] Modifications:
Result Canvas::draw()
 -> Result Canvas::draw(bool clear)
  • [C API] Removals:
Tvg_Result tvg_canvas_clear(Tvg_Canvas* canvas, bool paints, bool buffer)
  • [C API] Modificatios:
Tvg_Result tvg_canvas_draw(Tvg_Canvas* canvas)
 -> Tvg_Result tvg_canvas_draw(Tvg_Canvas* canvas, bool clear)

Full Changelog: v1.0-pre7...v1.0-pre8

ThorVG 1.0.0-pre7

05 Dec 17:08

Choose a tag to compare

ThorVG 1.0.0-pre7 Pre-release
Pre-release

In preparation for the ThorVG 1.0.0 release, we are conducting a pre-release for ThorVG v1.0. Please carefully review the release notes, as there may be API/ABI breaks included. Also, this release includes several improvements and minor bug fixes since v1.0.0-pre6.

  • [Renderer] Improved the rendering pipeline to enhance support for composition and stabilize post-effect. #3009 #2984
  • [Renderer] Enhanced scene management, granting users greater control over rendering. #2957 #1372
  • [SwEngine] Fixed omitted alpha multiplication in the DropShadow effect.
  • [SwEngine] Removed longjmp, preserving the existing logic to improve maintainability and cross-platform compatibility.
  • [WgEngine] Added support for multi-instanced canvas rendering. #2745
  • [WgEngine] Fixed resource leaks by ensuring proper disposal upon context destruction.
  • [WgEngine] Revised the device creation policy, requiring valid device and instance arguments.
  • [WgEngine] Implemented proper support for canvas resizing. #2985
  • [WgEngine] Corrected scene blending equations and adjusted clear color rules. #2998 #2992
  • [GlEngine] Added support for cross-compiling the OpenGL backend into WebAssembly. #2837
  • [GlEngine] Resolved incorrect stroke alpha calculation. #2997
  • [GlEngine] Fixed incorrect bounds affecting composition accuracy. #2799
  • [Lottie] Addressed a minor bug in Trimpath expressions.
  • [Lottie] Improved slot overriding, ensuring duplicate keyframe data is handled correctly. #2988
  • [Lottie] Enhanced Lottie parser stability. lvgl/lvgl#2975
  • [Web] Added GL build option to combined web assembly bindary. #2837
  • [Portability] Fixed a compilation issue with LVGL integration. lvgl/lvgl#7214
  • [Portability] Fixed a compilation error on MSYS2.
  • [Portability] Added support for configurable file I/O operations to improve cross-platform compatibility. #3008
  • [C++ API] Modifications:
Result WgCanvas::target(void* device, void* instance, void* target, uint32_t w, uint32_t h, int type = 0)
 -> Result WgCanvas::target(void* device, void* instance, void* target, uint32_t w, uint32_t h, ColorSpace cs, int type = 0)
Result Scene::push(Paint* paint)
 -> Result Scene::push(Paint* target, Paint* at = nullptr)
Result Scene::clear(bool free = true)
 -> Result Scene::remove(Paint* paint = nullptr)
Result Canvas::push(Paint* paint)
 -> Result Canvas::push(Paint* target, Paint* at = nullptr)
list<Paint*>& Scene::paints()
 -> const list<Paint*>& Scene::paints() const
list<Paint*>& Canvas::paints()
 -> const list<Paint*>& Canvas::paints() const
  • [C++ API] Additions:
Result Canvas::remove(Paint* paint = nullptr);
  • [C API] Modifications:
Tvg_Result tvg_wgcanvas_set_target(Tvg_Canvas* canvas, void* device, void* instance, void* target, uint32_t w, uint32_t h, int type)
 -> Tvg_Result tvg_wgcanvas_set_target(Tvg_Canvas* canvas, void* device, void* instance, void* target, uint32_t w, uint32_t h, Tvg_Colorspace cs, int type)
Tvg_Result tvg_wgcanvas_set_target(Tvg_Canvas* canvas, void* device, void* instance, void* target, uint32_t w, uint32_t h, Tvg_Colorspace cs, int type = 0)
 -> Tvg_Result tvg_wgcanvas_set_target(Tvg_Canvas* canvas, void* device, void* instance, void* target, uint32_t w, uint32_t h, Tvg_Colorspace cs, int type)
Tvg_Result tvg_scene_clear(Tvg_Paint* scene, bool free)
 -> Tvg_Result tvg_scene_remove(Tvg_Paint* scene, Tvg_Paint* paint)
  • [C API] Additions:
Tvg_Result tvg_scene_push_at(Tvg_Paint* scene, Tvg_Paint* target, Tvg_Paint* at)
Tvg_Result tvg_canvas_push_at(Tvg_Canvas* canvas, Tvg_Paint* target, Tvg_Paint* at)
Tvg_Result tvg_canvas_remove(Tvg_Canvas* canvas, Tvg_Paint* paint)

Full Changelog: v1.0-pre6...v1.0-pre7

ThorVG 0.15.6

06 Dec 00:37

Choose a tag to compare

This release includes several improvements and minor bug fixes:

  • [Renderer] Improved the rendering pipeline to enhance support for composition and stabilize post-effect. #2984 #3009
  • [SwEngine] Removed longjmp, preserving the existing logic to improve maintainability and cross-platform compatibility.
  • [GlEngine] Fixed incorrect bounds affecting composition accuracy. #2799
  • [Lottie] Added support for the TextCaps property.
  • [Portability] Added support for configurable file I/O operations to improve cross-platform compatibility. #3008

Please note that, from this version, "THORVG_FILE_IO_SUPPORT" define might be expected for supporting FILE I/O from your thorvg manual build.

Full Changelog: v0.15.5...v0.15.6

ThorVG 0.15.5

27 Nov 11:10

Choose a tag to compare

This release includes several improvements and minor bug fixes:

  • [Renderer] Fixed an issue where paint transformations were omitted during scene changes. #2958
  • [Renderer] Added support for the SceneEffect DropShadow feature, enhancing visual depth with shadow effects. #2718
  • [GlEngine] Resolved incorrect stroke alpha calculation. #2997
  • [Lottie] Added support for the DropShadow layer effect, enhancing Lottie animations with shadow options. #2153
  • [Lottie] Added support for min/max easing and shapes for text range selectors. #2178
  • [Lottie] Addressed a minor bug in trimpath expressions.
  • [Lottie] Improved slot overriding, ensuring duplicate keyframe data is handled correctly. #2988
  • [Lottie] Enhanced Lottie parser stability. #2975
  • [SVG] Corrected handling of the "currentColor" attribute within gradients. #2960
  • [Portability] Fixed a compilation issue with LVGL integration. lvgl/lvgl#7214
  • [Example] Resolved resource leaks in GL and WebGPU canvases by refining usage guidance.

Full Changelog: v0.15.4...v0.15.5