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
Hermet Park c8bc0a91d9 sw_engine: applied async rasterizing based on task scheduler.
Now, we have 2 points for asynchronous behaviors.

1. update shapes:

Each shape update will be performed by async when you push shape to canvas.
Meaning, if you have time gap between update and rendering in process main-loop,
you can have a benefit by this.

2. rasterization by canvas:

Canvas.draw() will be performed asynchnously until you call canvas.sync();
Meaing, if you can trigger tvg rendering eariler than composition time.
You can have a benefit by this.

If these 1, 2 points might not work for your program,
You can just toggle off async by setting threads number zero at initialization.

Or if you could apply either point of them for your program,
It might be good for performance.

But the best approach is to make both async properly.
Though this might need to fine-grained tuning integration between your program & tvg,
You could achieve the best peformance by parallelzing tasks as possible without any jobs delaying.

Change-Id: I04f9a61ebb426fd897624f5b24c83841737e6b5b
2020-08-26 16:56:54 +09:00
inc common initializer: don't try initialize engine duplicatedly. 2020-08-21 15:56:45 +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
src sw_engine: applied async rasterizing based on task scheduler. 2020-08-26 16:56:54 +09:00
test SwRenderer: fixing unnecessary nesting in prepare() 2020-08-25 16:50:14 +09:00
.gitignore picture svg: introduce load() with memory data input source. 2020-08-14 19:41:04 +09:00
AUTHORS updated AUTHORS 2020-08-20 17:52:11 +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 disable gl_engine in default. 2020-08-14 17:45:13 +09:00
README.md Update README.md 2020-08-24 14:45:36 +09:00
thorvg.manifest renamed project name tizenvg => thorvg 2020-06-25 13:57:41 +09:00

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

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.

Back to contents

Issues or Feature Requests?

For immidiate assistant or support please reach us in Gitter