Releases: thorvg/thorvg
ThorVG 1.0.0-pre15
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-pre14.
- [Renderer] Added support for Trim Path for shape filling. #3118
- [WgEngine] Improved stroke dash rendering accuracy. #3265
- [WgEngine] Added support for
Drop Shadowpost-processing effect. #3054 - [WgEngine] Added support for color replacement post-processing effects (
Fill,Tint,Tritone). #3054 - [GlEngine] Fixed an incorrect line join issue in dashed strokes. #3231
- [Lottie] Fixed an incorrect evaluation result check for Expressions undefined conditions.
- [Lottie] Enhanced Trim Path support for shape filling. #3118
- [Lottie] Improved rendering performance by
~7%with a more precise culling mechanism. - [Lottie] Added support for the
.lotfile extension and thelottie+jsonMIME type. #3248 - [TTF] Fixed incorrect rendering by properly handling contours starting with
OFF_CURVEpoints. #3268 - [Web] Optimized default font data size by
40%usingLZSScompression. - [C++ API] Modifications:
Result Shape::strokeTrim(float begin, float end, bool simultaneous = true)
-> Result Shape::trimpath(float begin, float end, bool simultaneous = true)
- [C API] Modifications:
Tvg_Result tvg_shape_set_stroke_trim(Tvg_Paint* paint, float begin, float end, bool simultaneous)
-> Tvg_Result tvg_shape_set_trimpath(Tvg_Paint* paint, float begin, float end, bool simultaneous)
Please note that, according to the official IANA announcement, the allowed MIME type for ThorVG's picture data load APIs has been changed from lottie to lot or lottie+json. Please ensure that you use the updated MIME type name when loading Lottie data.
Full Changelog: v1.0-pre14...v1.0-pre15
ThorVG 1.0.0-pre14
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-pre13.
- [Renderer] Introduced customizable designated memory allocators. (#2652)
- [Renderer] Enabled text rendering for unnamed fonts using a fallback mechanism.
- [Renderer] Fixed potential memory leaks in font handling.
- [SwEngine] Fixed an issue where stroke updates were being omitted. (#3237)
- [WgEngine] Corrected dash offset behavior for an odd number of dash/gap segments.
- [WgEngine] Introduced a vertex/index buffer pool, reducing memory usage by
14%and improving FPS by5%. (#3159) - [WgEngine] Improved shape-closing precision. (#3235)
- [WgEngine] Fixed an issue where stroke updates were being omitted in rendering.
- [GlEngine] Enhanced stroke dash drawing quality. (#2729) (#3222)
- [GlEngine] Properly supported dash drawing offset property. (#3223) (#3191)
- [GlEngine] Improved shape-closing precision. (#3235)
- [Lottie] Enabled embedded font data for basic text rendering. (#3184)
- [Lottie] Added support for local system font rendering using a default font fallback mechanism.
- [SVG] Added support for local system font rendering using a default font fallback mechanism.
- [Web] Optimized WebAssembly (WASM) binary size by applying
-Oz, reducing the binary by120KB. - [Web] Applied
DM Sansas the default font to enhance Lottie/SVG web compatibility.
Full Changelog: v1.0-pre13...v1.0-pre14
ThorVG 1.0.0-pre13
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-pre12.
- [Renderer] Fixed several edge cases in
TrimPaththat previously caused incorrect rendering results. #3053 #3192 - [Renderer] Added support for path direction in Shape
RectandCircledrawing. #3179 - [SwEngine] Fixed an issue where
DropShadowwas broken when the canvas width and height were different. #3146 - [WgEngine] Improved
Gaussian Blurperformance by up to 25%. - [WgEngine] Corrected rendering of odd numbers of dashes/gaps in stroke patterns. #3205
- [Lottie] Enhanced dash stroke support, now allowing multiple dash/gap values. #3191
- [Lottie] Fixed minor memory leaks.
- [C++ API] Modifications:
Result Shape::appendRect(float x, float y, float w, float h, float rx = 0, float ry = 0)
-> Result Shape::appendRect(float x, float y, float w, float h, float rx = 0, float ry = 0, bool cw = true)
Result Shape::appendCircle(float cx, float cy, float rx, float ry)
-> Result Shape::appendCircle(float cx, float cy, float rx, float ry, bool cw = true)
- [C++ API] Removals:
Tvg_Result tvg_swcanvas_set_mempool(Tvg_Canvas* canvas, Tvg_Mempool_Policy policy)
enum Tvg_Mempool_Policy
- [C API] Modifications:
TVG_API Tvg_Result tvg_shape_append_circle(Tvg_Paint* paint, float cx, float cy, float rx, float ry)
-> TVG_API Tvg_Result tvg_shape_append_circle(Tvg_Paint* paint, float cx, float cy, float rx, float ry, bool cw)
Tvg_Result tvg_shape_append_rect(Tvg_Paint* paint, float x, float y, float w, float h, float rx, float ry)
-> Tvg_Result tvg_shape_append_rect(Tvg_Paint* paint, float x, float y, float w, float h, float rx, float ry, bool cw)
- [C API] Removals:
Tvg_Result tvg_swcanvas_set_mempool(Tvg_Canvas* canvas, Tvg_Mempool_Policy policy)
enum Tvg_Mempool_Policy
Full Changelog: v1.0-pre12...v1.0-pre13
ThorVG 1.0.0-pre12
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-pre11.
- [WgEngine] Fixed a potential crash caused by exceeding stack memory limits.
- [WgEngine] Added support for the
GaussianBlurscene effect. #3054 - [Lottie] Improved effect parsing logic to prevent failures in edge cases.
- [Lottie] Enabled support for expressions in text properties.
- [Lottie] A minor optimization for internal path generations with a buffer pooling mechanism.
- [Lottie] Added support for the frame
Tweeningfeature (Experimental ver). - [Renderer] Corrected clipping inaccuracies caused by floating-point rounding in viewport calculations.
- [Renderer] Added exception handling for
ColorBurnandColorDodgeblend modes to prevent division by zero errors across render backends. - [Renderer] Improved path trimming across render backends. #2854
Full Changelog: v1.0-pre11...v1.0-pre12
ThorVG v0.15.10
This release includes several improvements and minor bug fixes:
- [Renderer] Improved scalability of effects, ensuring proper scaling for blur and drop shadow effects.
- [SwEngine] Fine-tuned blur performance with a 12% improvement.
- [GlEngine] Added proper support for Shape::strokeOrder()
- [Lottie] Improved safety in handling expressions.
- [Lottie] Revised the effect parsing logic to prevent failures in corner cases.
- [Portability] Added
cstdintheader properly for resolving the GCC15 build error. godotengine/godot#102022 (comment)
Full Changelog: v0.15.9...v0.15.10
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