github thorvg/thorvg v1.0-pre1
ThorVG 1.0.0-pre1

latest releases: v1.0-pre6, v0.15.4, v1.0-pre5...
pre-releaseone month ago

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 v0.15.0.

  • [Lottie] Enhanced performance for Gaussian Blur effects.
  • [Lottie] Added support for Masking Expansion (Dilate). Issue #2832
  • [SwEngine] Optimized render region updates to minimize unnecessary rendering tasks.
  • [SwEngine] Fixed a crash by splitting long lines to prevent overflow. Issue #2651
  • [WgEngine] Resolved several resource leaks. Issue #2808
  • [WgEngine] Corrected the order of gradient fill color stop offsets. Issue #2435
  • [WgEngine] Fixed incorrect opacity handling during scene blending.
  • [WgEngine] Addressed a crash when processing shapes with excessively large paths.
  • [SVG] Added support for tvg::Accessor to access elements using the id attribute in SVG.
  • [Web] Increased WebGPU stack size to 4MB for improved stability.
  • [Infra] Removed the beta tag from the WebGPU engine.
  • [API] Modified APIs:
enum class StrokeCap
 -> enum class StrokeCap : uint8_t
enum class StrokeJoin
 -> enum class StrokeJoin : uint8_t
enum class FillSpread 
 -> enum class FillSpread : uint8_t
enum class FillRule
 -> enum class FillRule : uint8_t
enum class CompositeMethod
 -> enum class CompositeMethod : uint8_t
enum class CanvasEngine
 -> enum class CanvasEngine : uint8_t
enum SwCanvas::Colorspace
 ->  enum SwCanvas::Colorspace : uint8_t
enum SwCanvas::MempoolPolicy
 -> enum SwCanvas::MempoolPolicy : uint8_t
virtual Canvas::clear(bool free = true)
 -> virtual Result Canvas::clear(bool paints = true, bool buffer = true)
Result Shape::stroke(float width)
 -> Result Shape::strokeWidth(float width)
Result Shape::stroke(uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255)
 -> Result Shape::strokeFill(uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255)
Result Shape::stroke(std::unique_ptr<Fill> f)
 -> Result Shape::strokeFill(std::unique_ptr<Fill> f)
Result Shape::stroke(const float* dashPattern, uint32_t cnt)
 -> Result Shape::strokeDash(const float* dashPattern, uint32_t cnt, float offset = 0.0f)
Result Shape::stroke(StrokeCap cap)
 -> Result Shape::strokeCap(StrokeCap cap)
Result Shape::stroke(StrokeJoin join)
 ->  Result strokeJoin(StrokeJoin join)
Result Shape::strokeColor(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a = nullptr) const
 -> Result Shape::strokeFill(uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a = nullptr) const
uint32_t Shape::strokeDash(const float** dashPattern) const
 -> uint32_t Shape::strokeDash(const float** dashPattern, float* offset = nullptr) const
Result Picture::load(const char* data, uint32_t size, const std::string& mimeType, bool copy = false)
 -> Result Picture::load(const char* data, 
Result Picture::load(uint32_t* data, uint32_t w, uint32_t h, bool copy)
 -> Result load(uint32_t* data, uint32_t w, uint32_t h, bool premultiplied, bool copy = false)
static Result Initializer::init(CanvasEngine engine, uint32_t threads)
 ->  static Result Initializer::init(uint32_t threads, CanvasEngine engine = tvg::CanvasEngine::All)
Result Saver::save(std::unique_ptr<Paint> paint, const std::string& path, bool compress = true)
 -> Result Saver::save(std::unique_ptr<Paint> paint, const std::string& path, uint8_t quality = 100) 
Tvg_Result tvg_canvas_clear(Tvg_Canvas* canvas, bool free)
 -> Tvg_Result tvg_canvas_clear(Tvg_Canvas* canvas, bool paints, bool buffer)
Tvg_Result tvg_shape_set_stroke_dash(Tvg_Paint* paint, const float* dashPattern, uint32_t cnt)
 -> Tvg_Result tvg_shape_set_stroke_dash(Tvg_Paint* paint, const float* dashPattern, uint32_t cnt, float offset)
Result tvg_shape_get_stroke_dash(const Tvg_Paint* paint, const float** dashPattern, uint32_t* cnt)
 -> Tvg_Result tvg_shape_get_stroke_dash(const Tvg_Paint* paint, const float** dashPattern, uint32_t* cnt, float* offset)
Tvg_Result tvg_picture_load_raw(Tvg_Paint* paint, uint32_t *data, uint32_t w, uint32_t h, bool copy)
 -> tvg_picture_load_raw(Tvg_Paint* paint, uint32_t *data, uint32_t w, uint32_t h, bool premultiplied, bool copy)
Tvg_Result tvg_picture_load_data(Tvg_Paint* paint, const char *data, uint32_t size, const char *mimetype, bool copy)
 -> Tvg_Result tvg_picture_load_data(Tvg_Paint* paint, const char *data, uint32_t size, const char *mimetype, const char* rpath, bool copy)
Tvg_Result tvg_saver_save(Tvg_Saver* saver, Tvg_Paint* paint, const char* path, bool compress)
 -> Tvg_Result tvg_saver_save(Tvg_Saver* saver, Tvg_Paint* paint, const char* path, uint32_t quality)
  • [API] Removed deprecated APIs:
Result Paint::bounds(float* x, float* y, float* w, float* h) const
uint32_t Paint::identifier() const
Result Canvas::reserve(uint32_t n)
uint32_t Fill::identifier() const
static uint32_t LinearGradient::identifier()
static uint32_t RadialGradient::identifier()
static uint32_t Shape::identifier()
Result Shape::appendArc(float cx, float cy, float radius, float startAngle, float sweep, bool pie)
static uint32_t Picture::identifier()
Result Picture::load(const char* data, uint32_t size, bool copy = false)
uint32_t size, const std::string& mimeType, const std::string& rpath = "", bool copy = false)
static uint32_t Scene::identifier()
Result Scene::reserve(uint32_t size)
std::unique_ptr<Picture> Accessor::set(std::unique_ptr<Picture> picture, std::function<bool(const Paint* paint)> func)
Tvg_Result tvg_canvas_reserve(Tvg_Canvas* canvas, uint32_t n)
Tvg_Result tvg_paint_get_identifier(const Tvg_Paint* paint, Tvg_Identifier* identifier)
Tvg_Result tvg_shape_append_arc(Tvg_Paint* paint, float cx, float cy, float radius, float startAngle, float sweep, uint8_t pie)
Tvg_Result tvg_gradient_get_identifier(const Tvg_Gradient* grad, Tvg_Identifier* identifier)
Tvg_Result tvg_scene_reserve(Tvg_Paint* scene, uint32_t size)
Tvg_Result tvg_canvas_reserve(Tvg_Canvas* canvas, uint32_t n)
Tvg_Result tvg_paint_get_identifier(const Tvg_Paint* paint, Tvg_Identifier* identifier)
Tvg_Result tvg_shape_append_arc(Tvg_Paint* paint, float cx, float cy, float radius, float startAngle, float sweep, uint8_t pie)
Tvg_Result tvg_gradient_get_identifier(const Tvg_Gradient* grad, Tvg_Identifier* identifier)
Tvg_Result tvg_scene_reserve(Tvg_Paint* scene, uint32_t size)

Don't miss a new thorvg release

NewReleases is sending notifications on new releases.