thorvg/README.md
2020-09-09 11:11:24 +09:00

80 lines
2.3 KiB
Markdown

# ThorVG
<p align="center">
<img width="240" height="240" src="https://github.com/Samsung/thorvg/blob/master/res/logo2.png">
</p>
ThorVG is a platform independent lightweight standalone C++ library for drawing vector-based shapes and SVG.
#
## Contents
- [Building ThorVG](#building-thorvg)
- [Meson Build](#meson-build)
- [Quick Start](#quick-start)
- [Issues or Feature Requests?](#issues-or-feature-requests)
#
## Building ThorVG
thorvg supports [meson](https://mesonbuild.com/) build system.
#
### Meson Build
install [meson](http://mesonbuild.com/Getting-meson.html) and [ninja](https://ninja-build.org/) if not already installed.
Run meson to configure ThorVG.
```
meson build
```
Run ninja to build & install ThorVG.
```
ninja -C build install
```
[Back to contents](#contents)
#
## Quick Start
ThorVG renders vector shapes on a given canvas buffer.
You can initialize ThorVG engine first:
```cpp
tvg::Initializer::init(tvg::CanvasEngine::Sw, 0); //engine method, thread count
```
You can prepare a empty canvas for drawing on it.
```cpp
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.
```cpp
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
```
This code snippet shows you how to draw SVG image.
```cpp
auto picture = tvg::Picture::gen(); //generate a picture
picture->load("sample.svg"); //Load SVG file.
canvas->push(move(picture)); //push picture drawing command
```
Begin rendering & finish it at a particular time.
```cpp
canvas->draw();
canvas->sync();
```
Now you can acquire the rendered image in buffer memory.
Lastly, terminate the engine after usage.
```cpp
tvg::Initializer::term(tvg::CanvasEngine::Sw);
```
[Back to contents](#contents)
#
## Issues or Feature Requests?
For immidiate assistant or support please reach us in [Gitter](https://gitter.im/thorvg/community)