mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-08 05:33:36 +00:00
README: updated example
This commit is contained in:
parent
27844a5d3c
commit
8fa725157e
2 changed files with 54 additions and 9 deletions
63
README.md
63
README.md
|
@ -36,10 +36,13 @@ ninja -C build install
|
||||||
ThorVG renders vector shapes on a given canvas buffer.
|
ThorVG renders vector shapes on a given canvas buffer.
|
||||||
|
|
||||||
You can initialize ThorVG engine first:
|
You can initialize ThorVG engine first:
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
tvg::Initializer::init(tvg::CanvasEngine::Sw, 0); //engine method, thread count
|
tvg::Initializer::init(tvg::CanvasEngine::Sw, 0); //engine method, thread count
|
||||||
```
|
```
|
||||||
|
|
||||||
You can prepare a empty canvas for drawing on it.
|
You can prepare a empty canvas for drawing on it.
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
static uint32_t buffer[WIDTH * HEIGHT]; //canvas target buffer
|
static uint32_t buffer[WIDTH * HEIGHT]; //canvas target buffer
|
||||||
|
|
||||||
|
@ -47,11 +50,12 @@ auto canvas = tvg::SwCanvas::gen(); //generate a canvas
|
||||||
canvas->target(buffer, WIDTH, WIDTH, HEIGHT); //stride, w, h
|
canvas->target(buffer, WIDTH, WIDTH, HEIGHT); //stride, w, h
|
||||||
```
|
```
|
||||||
|
|
||||||
Next you can draw shapes onto the canvas.
|
Next you can draw multiple shapes onto the canvas.
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
auto rect = tvg::Shape::gen(); //generate a round rectangle
|
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->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)
|
rect->fill(100, 100, 0, 255); //round rectangle color (r, g, b, a)
|
||||||
canvas->push(move(rect)); //push round rectangle drawing command
|
canvas->push(move(rect)); //push round rectangle drawing command
|
||||||
|
|
||||||
auto circle = tvg::Shape::gen(); //generate a circle
|
auto circle = tvg::Shape::gen(); //generate a circle
|
||||||
|
@ -63,39 +67,80 @@ fill->radial(400, 400, 150); //radial fill info(cx, cy, radius)
|
||||||
tvg::Fill::ColorStop colorStops[2]; //gradient color info
|
tvg::Fill::ColorStop colorStops[2]; //gradient color info
|
||||||
colorStops[0] = {0, 255, 255, 255, 255}; //index, r, g, b, a (1st color value)
|
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)
|
colorStops[1] = {1, 0, 0, 0, 255}; //index, r, g, b, a (2nd color value)
|
||||||
|
fill.colorStops(colorStop, 2); //set fil with gradient color info
|
||||||
|
|
||||||
fill.colorStops(colorStop, 2); //set gradient color info
|
circle->fill(move(fill)); //circle color
|
||||||
|
|
||||||
circle->fill(move(fill)); //set circle color
|
|
||||||
|
|
||||||
canvas->push(move(circle)); //push circle drawing command
|
canvas->push(move(circle)); //push circle drawing command
|
||||||
|
|
||||||
```
|
```
|
||||||
This code result look like this.
|
|
||||||
|
This code result looks like this.
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img width="416" height="411" src="https://github.com/Samsung/thorvg/blob/master/res/example_shapes.png">
|
<img width="416" height="411" src="https://github.com/Samsung/thorvg/blob/master/res/example_shapes.jpg">
|
||||||
|
</p>
|
||||||
|
|
||||||
|
Or you can draw pathes with dash stroking.
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
auto path = tvg::Shape::gen(); //generate a path
|
||||||
|
path->moveTo(199, 34); //set sequential path coordinates
|
||||||
|
path->lineTo(253, 143);
|
||||||
|
path->lineTo(374, 160);
|
||||||
|
path->lineTo(287, 244);
|
||||||
|
path->lineTo(307, 365);
|
||||||
|
path->lineTo(199, 309);
|
||||||
|
path->lineTo(97, 365);
|
||||||
|
path->lineTo(112, 245);
|
||||||
|
path->lineTo(26, 161);
|
||||||
|
path->lineTo(146, 143);
|
||||||
|
path->close();
|
||||||
|
|
||||||
|
path->fill(150, 150, 255, 255); //path color
|
||||||
|
|
||||||
|
path->stroke(3); //stroke width
|
||||||
|
path->stroke(0, 0, 255, 255); //stroke color
|
||||||
|
path->stroke(tvg::StrokeJoin::Round); //stroke join style
|
||||||
|
path->stroke(tvg::StrokeCap::Round); //stroke cap style
|
||||||
|
|
||||||
|
float pattern[2] = {10, 10};
|
||||||
|
path->stroke(pattern, 2); //stroke dash pattern (line, gap)
|
||||||
|
|
||||||
|
canvas->push(move(path)); //push path drawing command
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
This path drawing result shows like this.
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img width="300" height="300" src="https://github.com/Samsung/thorvg/blob/master/res/example_path.png">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
Next, this code snippet shows you how to draw SVG image.
|
Next, this code snippet shows you how to draw SVG image.
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
auto picture = tvg::Picture::gen(); //generate a picture
|
auto picture = tvg::Picture::gen(); //generate a picture
|
||||||
picture->load("tiger.svg"); //Load SVG file.
|
picture->load("tiger.svg"); //Load SVG file.
|
||||||
|
|
||||||
canvas->push(move(picture)); //push picture drawing command
|
canvas->push(move(picture)); //push picture drawing command
|
||||||
```
|
```
|
||||||
|
|
||||||
And here is the result.
|
And here is the result.
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img width="300" height="300" src="https://github.com/Samsung/thorvg/blob/master/res/example_tiger.png">
|
<img width="300" height="300" src="https://github.com/Samsung/thorvg/blob/master/res/example_tiger.png">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
Begin rendering & finish it at a particular time.
|
Begin rendering & finish it at a particular time.
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
canvas->draw();
|
canvas->draw();
|
||||||
canvas->sync();
|
canvas->sync();
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you can acquire the rendered image in buffer memory.
|
Now you can acquire the rendered image in buffer memory.
|
||||||
|
|
||||||
Lastly, terminate the engine after usage.
|
Lastly, terminate the engine after usage.
|
||||||
|
|
||||||
```cpp
|
```cpp
|
||||||
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
tvg::Initializer::term(tvg::CanvasEngine::Sw);
|
||||||
```
|
```
|
||||||
|
|
BIN
res/example_path.png
Normal file
BIN
res/example_path.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
Loading…
Add table
Reference in a new issue