ThorVG 1.0.0-pre28
Pre-release
Pre-release
This release enhances text layout handling and extends Paint::duplicate() functionality. CPU engine improvements include memory safety fixes and scalable CLAA logic. Lottie performance was optimized, with better Repeater handling and corrected Track Matte behavior.
C API now uses opaque pointer types, introducing potential breaking changes.
🔧 Core
- Enhanced text bounding box logic to improve layout accuracy.
- Enabled
Canvas::target()calls during paint object push/remove operations. (See Additional Notes) - Added support for previously missing properties in
Paint::duplicate().
🚀 Engines
- [cpu] Resolved memory violation in DropShadow. #3764
- [cpu] Enhanced to support scalable CLAA logic. #3307
✨Lottie
- Fixed memory violation related to color stops in slot overriding. #3766
- Optimized Repeater with memory pooling, improving performance by approximately 2.3% FPS in Lottie examples.
- Improved parsing logic to correctly handle
typroperties, even in deferred scenarios. #3611 #3562 - Corrected Track Matte behavior to ensure matte is applied only to the immediate target, preventing unintended chaining.
🖼️ Jpeg
- Fine-tuned jpg decoder with size and performance.
- Fixed MCU block offset handling. #3699
🔤 TTF
- Refined codepoint conversion logic for improved efficiency.
🧩 API Updates
- C++ API
+ enum EngineOption [None, Default, SmartRender]
* Result Picture::load(uint32_t* data, uint32_t w, uint32_t h, ColorSpace cs, bool copy = false)
-> Result Picture::load(const uint32_t* data, uint32_t w, uint32_t h, ColorSpace cs, bool copy = false)
* SwCanvas* SwCanvas::gen()
-> SwCanvas* SwCanvas::gen(EngineOption op = EngineOption::Default)
- C API
+ enum [TVG_ENGINE_OPTION_NONE, TVG_ENGINE_OPTION_DEFAULT, TVG_ENGINE_OPTION_SMART_RENDER]
* Tvg_Result tvg_picture_load_raw(Tvg_Paint* picture, uint32_t *data, uint32_t w, uint32_t h, Tvg_Colorspace cs, bool copy)
-> Tvg_Result tvg_picture_load_raw(Tvg_Paint* picture, const uint32_t *data, uint32_t w, uint32_t h, Tvg_Colorspace cs, bool copy)
* Tvg_Canvas* tvg_swcanvas_create()
-> Tvg_Canvas* tvg_swcanvas_create(Tvg_Engine_Option op)
✅ Additional Notes
- PR #3773 This update may introduce backward compatibility issues in scenarios where applications previously depended on stricter failure checks. Developers are advised to review error-handling logic accordingly.
- PR #3537 The C API interfaces have been updated to use opaque pointer types, resulting in intentional breaking changes. This redesign improves encapsulation but requires updates in all C-based integrations.
Full Changelog: v1.0-pre27...v1.0-pre28