Skip to content

ThorVG 1.0.0-pre28

Pre-release
Pre-release

Choose a tag to compare

@hermet hermet released this 11 Sep 17:05
· 206 commits to main since this 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 ty properties, 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