mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-10 06:34:01 +00:00
Thor Vector Graphics is a lightweight portable library used for drawing vector-based scenes and animations including SVG and Lottie. It can be freely utilized across various software platforms and applications to visualize graphical contents.
animationdrawing-libraryfontgraphicsimagejpeglottieopengl3opengles3path-drawingpngrendering-engineshapessvgtextttfvector-graphics-enginewebgl2webgpuwebp
![]() initialization interfaces has been changed for threads count.
if you want to set concrete threads count by system, please specify thread count with it.
std threads:
tvg::Initializer::init(tvg::CanvasEngine::Sw, std:🧵:hardware_concurrency());
if your system provides designed threads info, you can use it.
efl:
tvg_engine_init(TVG_ENGINE_SW, eina_cpu_count());
I recommend to avoid max threads usage for better performance.
Change-Id: I22cfa315768f73fa941be136956cdbb2cf837c20
|
||
---|---|---|
inc | ||
packaging | ||
pc | ||
src | ||
test | ||
.gitignore | ||
AUTHORS | ||
LICENSE | ||
meson.build | ||
meson_options.txt | ||
README.md | ||
thorvg.manifest |
ThorVG
ThorVG is a platform independent standalone C++ library for drawing vector-based shapes and SVG.
Contents
Building ThorVG
thorvg supports meson build system.
Meson Build
install meson and ninja if not already installed.
Run meson to configure ThorVG.
meson build
Run ninja to build & install ThorVG.
ninja -C build install
Quick Start
ThorVG renders vector shapes on a given canvas buffer.
You can initialize ThorVG engine first:
tvg::Initializer::init(tvg::CanvasEngine::Sw);
You can prepare a empty canvas for drawing on it.
static uint32_t buffer[WIDTH * HEIGHT]; //canvas target buffer
auto canvas = tvg::SwCanvas::gen(); //generate a canvas
canvas->target(buffer, WIDTH, WIDTH, HEIGHT); //stride, w, h
Next you can draw shapes onto the canvas.
auto shape = tvg::Shape::gen(); //generate a shape
shape->appendRect(0, 0, 200, 200, 0, 0); //x, y, w, h, rx, ry
shape->appendCircle(400, 400, 100, 100); //cx, cy, radiusW, radiusH
shape->fill(255, 255, 0, 255); //r, g, b, a
canvas->push(move(shape)); //push shape drawing command
Begin rendering & finish it at a particular time.
canvas->draw();
canvas->sync();
Lastly, you can acquire the rendered image in buffer memory.
Issues or Feature Requests?
For immidiate assistant or support please reach us in Gitter