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.
Find a file
2020-09-16 19:44:03 +09:00
inc capi: correct interfaces. 2020-09-16 17:56:47 +09:00
packaging replace license from Apache 2.0 to MIT 2020-08-13 16:53:38 +09:00
pc renamed project name tizenvg => thorvg 2020-06-25 13:57:41 +09:00
res updated README 2020-09-16 19:44:03 +09:00
src capi: code refactoring (#58) 2020-09-16 19:00:19 +09:00
test capi: correct interfaces. 2020-09-16 17:56:47 +09:00
.gitignore common: fix context corruption among the multiple canvases. 2020-09-05 18:55:51 +09:00
.travis.yml Add travis ci build 2020-09-14 20:50:09 +09:00
AUTHORS updated AUTHORS 2020-09-11 11:15:00 +09:00
LICENSE replace license from Apache 2.0 to MIT 2020-08-13 16:53:38 +09:00
meson.build replace license from Apache 2.0 to MIT 2020-08-13 16:53:38 +09:00
meson_options.txt bin svg2png: revise abe7187f5b 2020-09-16 11:22:54 +09:00
README.md updated README 2020-09-16 19:44:03 +09:00
thorvg.manifest renamed project name tizenvg => thorvg 2020-06-25 13:57:41 +09:00

Build Status Gitter

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

Back to contents

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);

Back to contents

Issues or Feature Requests?

For immediate assistant or support please reach us in Gitter