3.6 KiB
ThorVG
ThorVG is a platform independent lightweight 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, 0); //engine method, thread count
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 rect = tvg::Shape::gen(); //generate a round rectangle
rect->appendRect(50, 50, 200, 200, 20, 20); //round geometry(x, y, w, h, rx, ry)
rect->fill(100, 100, 0, 255); //set round rectangle color (r, g, b, a)
canvas->push(move(rect)); //push round rectangle drawing command
auto circle = tvg::Shape::gen(); //generate a circle
circle->appendCircle(400, 400, 100, 100); //circle geometry(cx, cy, radiusW, radiusH)
auto fill = tvg::RadialGradient::gen(); //generate radial gradient for circle fill
fill->radial(400, 400, 150); //radial fill info(cx, cy, radius)
tvg::Fill::ColorStop colorStops[2]; //gradient color info
colorStops[0] = {0, 255, 255, 255, 255}; //index, r, g, b, a (1st color value)
colorStops[1] = {1, 0, 0, 0, 255}; //index, r, g, b, a (2nd color value)
fill.colorStops(colorStop, 2); //set gradient color info
circle->fill(move(fill)); //set circle color
canvas->push(move(circle)); //push circle drawing command
This code result look like this.
Next, this code snippet shows you how to draw SVG image.
auto picture = tvg::Picture::gen(); //generate a picture
picture->load("tiger.svg"); //Load SVG file.
canvas->push(move(picture)); //push picture drawing command
And here is the result.
Begin rendering & finish it at a particular time.
canvas->draw();
canvas->sync();
Now you can acquire the rendered image in buffer memory.
Lastly, terminate the engine after usage.
tvg::Initializer::term(tvg::CanvasEngine::Sw);
Issues or Feature Requests?
For immediate assistant or support please reach us in Gitter