Releases: thorvg/thorvg
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
ThorVG 1.0.0-pre6
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-pre5.
- [Renderer] Introduced reference counter features for paint objects. #1372 #2598
- [Renderer] Prevented dangling instances in failure scenarios by leveraging the reference counter.
- [Renderer] Fixed an issue where paint transformations were omitted during scene changes. #2958
- [WgEngine] Added support for radial gradient focal functions, enabling more versatile gradient designs. #2728 #2936
- [WgEngine] Improved anti-aliased drawing for radial gradient fills using anisotropy filtering. #2931
- [WgEngine] Fixed invalid memory access issues. #2922
- [GlEngine] Added support for radial gradient focal functions, enabling more versatile gradient designs. #2728 #2936
- [GlEngine] Resolved a memory leak in the IndexBuffer object, introduced in version 1.0-pre5.
- [GlEngine] Fixed performance degradation caused by repeated clipping operations.
- [SwEngine] Enhanced stability to improve the user experience.
- [Lottie] Added support for overriding default slots. #2915
- [Lottie] Improved slot behavior to correctly override solid fill opacity and image attributes. #2591
- [Lottie] Introduced text alignment options for greater text layout flexibility. #2178
- [Lottie] Enabled smoothness and maxAmount specifications for text range selectors. #2178
- [Lottie] Added support for min/max easing and shapes for text range selectors. #2178
- [Lottie] Enhanced gradient fill data parsing by supporting the color stop count (p) parameter in slot data. #2795
- [Lottie] Fixed minor memory leaks for improved resource handling.
- [SVG] Improved gradient support by properly handling the currentColor attribute. #2960
- [Web] Optimized GIF saving by eliminating unnecessary data copies.
- [C++ API] Modifications:
Result GlCanvas::target(int32_t id, uint32_t w, uint32_t h)
-> Result GlCanvas::target(int32_t id, uint32_t w, uint32_t h, ColorSpace cs)
Result Paint::mask(std::unique_ptr<Paint> target, MaskMethod method)
-> Result Paint::mask(Paint* target, MaskMethod method)
Result Paint::clip(std::unique_ptr<Paint> clipper)
-> Result Paint::clip(Paint* clipper)
virtual Result Canvas::push(std::unique_ptr<Paint> paint)
-> virtual Result Canvas::push(Paint* paint)
std::unique_ptr<LinearGradient> LinearGradient::gen()
-> LinearGradient* LinearGradient::gen()
std::unique_ptr<RadialGradient> RadialGradient::gen()
-> RadialGradient* RadialGradient::gen()
Result Shape::strokeFill(std::unique_ptr<Fill> f)
-> Result Shape::strokeFill(Fill* f)
Result Shape::fill(std::unique_ptr<Fill> f)
-> Result Shape::fill(Fill* f)
std::unique_ptr<Shape> Shape::gen()
-> Shape* Shape::gen()
std::unique_ptr<Picture> Picture::gen()
-> Result Picture::push(Paint* paint)
std::unique_ptr<Scene> Scene::gen()
-> Scene* Scene::gen()
Result Text::fill(std::unique_ptr<Fill> f)
-> Result Text::fill(Fill* f)
std::unique_ptr<Text> Text::gen()
-> Text* Text::gen()
std::unique_ptr<SwCanvas> SwCanvas::gen()
-> SwCanvas* SwCanvas::gen()
std::unique_ptr<GlCanvas> GlCanvas::gen()
-> GlCanvas* GlCanvas::gen()
std::unique_ptr<Animation> Animation::gen()
-> Animation* Animation::gen()
Result Saver::background(std::unique_ptr<Paint> paint)
-> Result Saver::background(Paint* paint)
Result Saver::save(std::unique_ptr<Paint> paint, const char* filename, uint32_t quality = 100)
-> Result Saver::save(Paint* paint, const char* filename, uint32_t quality = 100)
std::unique_ptr<Saver> Saver::gen()
-> Saver* Saver::gen()
std::unique_ptr<Accessor> Accessor::gen()
-> Accessor* Accessor::gen()
- [C++ API] Addition:
uint8_t Paint::ref()
uint8_t Paint::unref(bool free = true)
uint8_t Paint::refCnt() const
- [C++ API] Removal:
template<typename T = tvg::Paint> std::unique_ptr<T> cast(Paint* paint)
template<typename T = tvg::Paint> std::unique_ptr<T> cast(Paint* paint)
- [CAPI] Modification:
Tvg_Result tvg_glcanvas_set_target(Tvg_Canvas* canvas, int32_t id, uint32_t w, uint32_t h)
-> Tvg_Result tvg_glcanvas_set_target(Tvg_Canvas* canvas, int32_t id, uint32_t w, uint32_t h, Tvg_Colorspace cs)
- [C API] Addition:
Tvg_Result tvg_shape_set_stroke_gradient(Tvg_Paint* paint, Tvg_Gradient* grad)
Tvg_Result tvg_shape_set_shape_gradient(Tvg_Paint* paint, Tvg_Gradient* grad)
uint8_t tvg_paint_ref(Tvg_Paint* paint)
uint8_t tvg_paint_unref(Tvg_Paint* paint, bool free)
uint8_t tvg_paint_get_ref(const Tvg_Paint* paint)
- [C API] Removal:
Tvg_Result tvg_shape_set_stroke_linear_gradient(Tvg_Paint* paint, Tvg_Gradient* grad)
Tvg_Result tvg_shape_set_stroke_radial_gradient(Tvg_Paint* paint, Tvg_Gradient* grad)
Tvg_Result tvg_shape_set_shape_linear_gradient(Tvg_Paint* paint, Tvg_Gradient* grad)
Tvg_Result tvg_shape_set_shape_radial_gradient(Tvg_Paint* paint, Tvg_Gradient* grad)
ThorVG 0.15.4
This release includes several improvements and minor bug fixes:
- [SwEngine] Enhanced minor stability for a smoother user experience.
- [GlEngine] Introduced support for radial gradient focal functions, enabling more versatile gradient designs. #2936
- [GlEngine] Resolved performance degradation caused by repeated clip drawing operations.
- [Lottie] Revised gradient fill data parsing by adding support for the color stop count (p) parameter in slot data. #2795
- [Lottie] Implemented support for overriding default slots. #2915
- [Lottie] Enhanced slots to correctly override solid fill opacity and image attributes. #2591
- [Lottie] Added support for text alignment options, improving text layout flexibility. #2178
- [Lottie] Enabled smoothness and maxAmount specification for text range selectors. #2178
- [Lottie] Fixed minor memory leaks to ensure better resource handling.
Full Changelog: v0.15.3...v0.15.4
ThorVG 1.0.0-pre5
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-pre4.
- [Renderer] Added support for the SceneEffect DropShadow feature, enhancing visual depth with shadow effects. #2718
- [WgEngine] Fixed an issue with the close command logic that previously caused rendering errors. #2923
- [WgEngine] Improved stroke dash offset logic to ensure more accurate rendering of dashed lines. #2592
- [WgEngine] Corrected a blending operation issue in the Scene rendering process for improved visual consistency. #2592
- [Lottie] Fixed a keyframe data copy bug that caused slot fill data to incorrectly override other values. #2797
- [Lottie] Introduced support for text alignment options, allowing for greater text layout flexibility. #2178
- [Lottie] Enhanced gradient fill customization by allowing slot overrides to define the number of colors. #2795
- [Lottie] Added support for the DropShadow layer effect, enhancing Lottie animations with shadow options. #2153 #2718
- [C API] Added new APIs to support GL and WG canvas types, expanding rendering options. #2855
Tvg_Canvas* tvg_glcanvas_create(void)
Tvg_Result tvg_glcanvas_set_target(Tvg_Canvas* canvas, int32_t id, uint32_t w, uint32_t h)
Tvg_Canvas* tvg_wgcanvas_create(void)
Tvg_Result tvg_wgcanvas_set_target(Tvg_Canvas* canvas, void* instance, void* surface, uint32_t w, uint32_t h, void* device)
- [API] Modifications:
Result Picture::load(const std::string& path) -> Result Picture::load(const char* filename)
Result Picture::load(const char* data, uint32_t size, const std::string& mimeType, const std::string& rpath = "", bool copy = false) -> Result Picture::load(const char* data, uint32_t size, const char* mimeType, const char* rpath = "", bool copy = false)
Result Text::load(const std::string& path) -> Result Text::load(const char* filename)
Result Text::load(const char* name, const char* data, uint32_t size, const std::string& mimeType = "ttf", bool copy = false) -> Result Text::load(const char* name, const char* data, uint32_t size, const char* mimeType = "ttf", bool copy = false)
Result Text::unload(const std::string& path) -> Result Text::unload(const char* filename)
Result Saver::save(std::unique_ptr<Paint> paint, const std::string& path, uint32_t quality = 100) -> Result Saver::save(std::unique_ptr<Paint> paint, const char* filename, uint32_t quality = 100)
Result Saver::save(std::unique_ptr<Animation> animation, const std::string& path, uint32_t quality = 100, uint32_t fps = 0) -> Result Saver::save(std::unique_ptr<Animation> animation, const char* filename, uint32_t quality = 100, uint32_t fps = 0)
Full Changelog: v1.0-pre4...v1.0-pre5
ThorVG 0.15.3
This release includes several improvements and minor bug fixes:
- [Renderer] Hotfixed an issue with broken SVG file sharing.
- [SwEngine] Fixed an issue with Gaussian Blur feathering when applied in one directional filter. #2892
- [SwEngine] Fixed a regression bug that impacted rendering regions. #2908
- [Lottie] Adjusted Text Range Selector transformation to ensure accurate positioning.
- [Lottie] Corrected a shallow keyframe data copy bug. #2797
- [SVG] Enhanced runtime stability by preventing invalid memory access.
Full Changelog: v0.15.2...v0.15.3
ThorVG 1.0.0-pre4
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-pre3.
- [WgEngine] Resolved an incorrect alpha blending issue for bitmap images. #2685
- [WgEngine] Fixed rendering artifacts caused by zero-length segments in paths. #2685
- [WgEngine] Corrected gradient offset assignment. #2592
- [WgEngine] Improved tessellation quality for cubic splines and circles. #2592
- [SwEngine] Fixed a regression bug that impacted rendering regions. #2908
- [Lottie] Adjusted Text Range Selector transformation to ensure accurate positioning.
Full Changelog: v1.0-pre3...v1.0-pre4