Releases: thorvg/thorvg
ThorVG 1.0.0-pre11
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
ColorDodgeandColorBurnmodes. #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
ZephyrRTOS 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_HANDLEdeclaration. - [Web] Fixed a build issue with the
wgpu_nativedependency. - [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
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
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
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
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\nline 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
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
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
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
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
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