| ThorVG v0.8

thorvg_capi.h
1
18 #ifndef __THORVG_CAPI_H__
19 #define __THORVG_CAPI_H__
20
21 #include <stdint.h>
22 #include <stdbool.h>
23
24 #ifdef TVG_EXPORT
25 #undef TVG_EXPORT
26 #endif
27
28 #ifdef TVG_BUILD
29 #ifdef _WIN32
30 #define TVG_EXPORT __declspec(dllexport)
31 #else
32 #define TVG_EXPORT __attribute__ ((visibility ("default")))
33 #endif
34 #else
35 #define TVG_EXPORT
36 #endif
37
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41
55 typedef struct _Tvg_Canvas Tvg_Canvas;
56
57
63 typedef struct _Tvg_Paint Tvg_Paint;
64
65
69 typedef struct _Tvg_Gradient Tvg_Gradient;
70
71
75 typedef struct _Tvg_Saver Tvg_Saver;
76
77
83 typedef enum {
84 TVG_ENGINE_SW = (1 << 1),
85 TVG_ENGINE_GL = (1 << 2)
86 } Tvg_Engine;
87
88
92 typedef enum {
93 TVG_RESULT_SUCCESS = 0,
94 TVG_RESULT_INVALID_ARGUMENT,
95 TVG_RESULT_INSUFFICIENT_CONDITION,
96 TVG_RESULT_FAILED_ALLOCATION,
97 TVG_RESULT_MEMORY_CORRUPTION,
98 TVG_RESULT_NOT_SUPPORTED,
99 TVG_RESULT_UNKNOWN
100 } Tvg_Result;
101
102
108 typedef enum {
109 TVG_COMPOSITE_METHOD_NONE = 0,
110 TVG_COMPOSITE_METHOD_CLIP_PATH,
111 TVG_COMPOSITE_METHOD_ALPHA_MASK,
112 TVG_COMPOSITE_METHOD_INVERSE_ALPHA_MASK,
113 } Tvg_Composite_Method;
114
115
127 typedef enum {
128 TVG_PATH_COMMAND_CLOSE = 0,
129 TVG_PATH_COMMAND_MOVE_TO,
130 TVG_PATH_COMMAND_LINE_TO,
131 TVG_PATH_COMMAND_CUBIC_TO
132 } Tvg_Path_Command;
133
134
138 typedef enum {
139 TVG_STROKE_CAP_SQUARE = 0,
140 TVG_STROKE_CAP_ROUND,
141 TVG_STROKE_CAP_BUTT
142 } Tvg_Stroke_Cap;
143
144
148 typedef enum {
149 TVG_STROKE_JOIN_BEVEL = 0,
150 TVG_STROKE_JOIN_ROUND,
151 TVG_STROKE_JOIN_MITER
152 } Tvg_Stroke_Join;
153
154
158 typedef enum {
159 TVG_STROKE_FILL_PAD = 0,
160 TVG_STROKE_FILL_REFLECT,
161 TVG_STROKE_FILL_REPEAT
162 } Tvg_Stroke_Fill;
163
164
168 typedef enum {
169 TVG_FILL_RULE_WINDING = 0,
170 TVG_FILL_RULE_EVEN_ODD
171 } Tvg_Fill_Rule;
172 // end addtogroup ThorVGCapi_Shape
174
175
184 typedef struct
185 {
186 float offset;
187 uint8_t r;
188 uint8_t g;
189 uint8_t b;
190 uint8_t a;
191 } Tvg_Color_Stop;
192 // end addtogroup ThorVGCapi_Gradient
194
195
199 typedef struct
200 {
201 float x, y;
202 } Tvg_Point;
203
204
212 typedef struct
213 {
214 float e11, e12, e13;
215 float e21, e22, e23;
216 float e31, e32, e33;
217 } Tvg_Matrix;
218
219
227 /************************************************************************/
228 /* Engine API */
229 /************************************************************************/
258 TVG_EXPORT Tvg_Result tvg_engine_init(Tvg_Engine engine_method, unsigned threads);
259
260
286 TVG_EXPORT Tvg_Result tvg_engine_term(Tvg_Engine engine_method);
287
288 // end defgroup ThorVGCapi_Initializer
290
291
313 /************************************************************************/
314 /* SwCanvas API */
315 /************************************************************************/
316
320 typedef enum {
321 TVG_MEMPOOL_POLICY_DEFAULT = 0,
322 TVG_MEMPOOL_POLICY_SHAREABLE,
323 TVG_MEMPOOL_POLICY_INDIVIDUAL
324 } Tvg_Mempool_Policy;
325
326
330 typedef enum {
331 TVG_COLORSPACE_ABGR8888 = 0,
332 TVG_COLORSPACE_ARGB8888
333 } Tvg_Colorspace;
334
335
360 TVG_EXPORT Tvg_Canvas* tvg_swcanvas_create();
361
362
388 TVG_EXPORT Tvg_Result tvg_swcanvas_set_target(Tvg_Canvas* canvas, uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t h, Tvg_Colorspace cs);
389
390
415 TVG_EXPORT Tvg_Result tvg_swcanvas_set_mempool(Tvg_Canvas* canvas, Tvg_Mempool_Policy policy);
416 // end defgroup ThorVGCapi_SwCanvas
418
419
420 /************************************************************************/
421 /* Common Canvas API */
422 /************************************************************************/
484 TVG_EXPORT Tvg_Result tvg_canvas_destroy(Tvg_Canvas* canvas);
485
486
505 TVG_EXPORT Tvg_Result tvg_canvas_push(Tvg_Canvas* canvas, Tvg_Paint* paint);
506
507
539 TVG_EXPORT Tvg_Result tvg_canvas_reserve(Tvg_Canvas* canvas, uint32_t n);
540
541
559 TVG_EXPORT Tvg_Result tvg_canvas_clear(Tvg_Canvas* canvas, bool free);
560
561
619 TVG_EXPORT Tvg_Result tvg_canvas_update(Tvg_Canvas* canvas);
620
621
637 TVG_EXPORT Tvg_Result tvg_canvas_update_paint(Tvg_Canvas* canvas, Tvg_Paint* paint);
638
639
655 TVG_EXPORT Tvg_Result tvg_canvas_draw(Tvg_Canvas* canvas);
656
657
672 TVG_EXPORT Tvg_Result tvg_canvas_sync(Tvg_Canvas* canvas);
673
674 // end defgroup ThorVGCapi_Canvas
676
677
685 /************************************************************************/
686 /* Paint API */
687 /************************************************************************/
718 TVG_EXPORT Tvg_Result tvg_paint_del(Tvg_Paint* paint);
719
720
732 TVG_EXPORT Tvg_Result tvg_paint_scale(Tvg_Paint* paint, float factor);
733
734
749 TVG_EXPORT Tvg_Result tvg_paint_rotate(Tvg_Paint* paint, float degree);
750
751
767 TVG_EXPORT Tvg_Result tvg_paint_translate(Tvg_Paint* paint, float x, float y);
768
769
783 TVG_EXPORT Tvg_Result tvg_paint_set_transform(Tvg_Paint* paint, const Tvg_Matrix* m);
784
785
798 TVG_EXPORT Tvg_Result tvg_paint_get_transform(Tvg_Paint* paint, Tvg_Matrix* m);
799
800
813 TVG_EXPORT Tvg_Result tvg_paint_set_opacity(Tvg_Paint* paint, uint8_t opacity);
814
815
826 TVG_EXPORT Tvg_Result tvg_paint_get_opacity(const Tvg_Paint* paint, uint8_t* opacity);
827
828
838 TVG_EXPORT Tvg_Paint* tvg_paint_duplicate(Tvg_Paint* paint);
839
840
858 TVG_EXPORT Tvg_Result tvg_paint_get_bounds(const Tvg_Paint* paint, float* x, float* y, float* w, float* h, bool transformed);
859
860
872 TVG_EXPORT Tvg_Result tvg_paint_set_composite_method(Tvg_Paint* paint, Tvg_Paint* target, Tvg_Composite_Method method);
873
874
886 TVG_EXPORT Tvg_Result tvg_paint_get_composite_method(const Tvg_Paint* paint, const Tvg_Paint** target, Tvg_Composite_Method* method);
887 // end defgroup ThorVGCapi_Paint
889
890
906 /************************************************************************/
907 /* Shape API */
908 /************************************************************************/
914 TVG_EXPORT Tvg_Paint* tvg_shape_new();
915
916
930 TVG_EXPORT Tvg_Result tvg_shape_reset(Tvg_Paint* paint);
931
932
946 TVG_EXPORT Tvg_Result tvg_shape_move_to(Tvg_Paint* paint, float x, float y);
947
948
964 TVG_EXPORT Tvg_Result tvg_shape_line_to(Tvg_Paint* paint, float x, float y);
965
966
987 TVG_EXPORT Tvg_Result tvg_shape_cubic_to(Tvg_Paint* paint, float cx1, float cy1, float cx2, float cy2, float x, float y);
988
989
1003 TVG_EXPORT Tvg_Result tvg_shape_close(Tvg_Paint* paint);
1004
1005
1033 TVG_EXPORT Tvg_Result tvg_shape_append_rect(Tvg_Paint* paint, float x, float y, float w, float h, float rx, float ry);
1034
1035
1055 TVG_EXPORT Tvg_Result tvg_shape_append_circle(Tvg_Paint* paint, float cx, float cy, float rx, float ry);
1056
1057
1078 TVG_EXPORT Tvg_Result tvg_shape_append_arc(Tvg_Paint* paint, float cx, float cy, float radius, float startAngle, float sweep, uint8_t pie);
1079
1080
1098 TVG_EXPORT Tvg_Result tvg_shape_append_path(Tvg_Paint* paint, const Tvg_Path_Command* cmds, uint32_t cmdCnt, const Tvg_Point* pts, uint32_t ptsCnt);
1099
1100
1124 TVG_EXPORT Tvg_Result tvg_shape_get_path_coords(const Tvg_Paint* paint, const Tvg_Point** pts, uint32_t* cnt);
1125
1126
1150 TVG_EXPORT Tvg_Result tvg_shape_get_path_commands(const Tvg_Paint* paint, const Tvg_Path_Command** cmds, uint32_t* cnt);
1151
1152
1164 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_width(Tvg_Paint* paint, float width);
1165
1166
1177 TVG_EXPORT Tvg_Result tvg_shape_get_stroke_width(const Tvg_Paint* paint, float* width);
1178
1179
1196 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_color(Tvg_Paint* paint, uint8_t r, uint8_t g, uint8_t b, uint8_t a);
1197
1198
1213 TVG_EXPORT Tvg_Result tvg_shape_get_stroke_color(const Tvg_Paint* paint, uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a);
1214
1215
1230 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_linear_gradient(Tvg_Paint* paint, Tvg_Gradient* grad);
1231
1232
1247 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_radial_gradient(Tvg_Paint* paint, Tvg_Gradient* grad);
1248
1249
1262 TVG_EXPORT Tvg_Result tvg_shape_get_stroke_gradient(const Tvg_Paint* paint, Tvg_Gradient** grad);
1263
1264
1286 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_dash(Tvg_Paint* paint, const float* dashPattern, uint32_t cnt);
1287
1288
1302 TVG_EXPORT Tvg_Result tvg_shape_get_stroke_dash(const Tvg_Paint* paint, const float** dashPattern, uint32_t* cnt);
1303
1304
1318 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_cap(Tvg_Paint* paint, Tvg_Stroke_Cap cap);
1319
1320
1331 TVG_EXPORT Tvg_Result tvg_shape_get_stroke_cap(const Tvg_Paint* paint, Tvg_Stroke_Cap* cap);
1332
1333
1345 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_join(Tvg_Paint* paint, Tvg_Stroke_Join join);
1346
1347
1358 TVG_EXPORT Tvg_Result tvg_shape_get_stroke_join(const Tvg_Paint* paint, Tvg_Stroke_Join* join);
1359
1360
1379 TVG_EXPORT Tvg_Result tvg_shape_set_fill_color(Tvg_Paint* paint, uint8_t r, uint8_t g, uint8_t b, uint8_t a);
1380
1381
1395 TVG_EXPORT Tvg_Result tvg_shape_get_fill_color(const Tvg_Paint* paint, uint8_t* r, uint8_t* g, uint8_t* b, uint8_t* a);
1396
1397
1408 TVG_EXPORT Tvg_Result tvg_shape_set_fill_rule(Tvg_Paint* paint, Tvg_Fill_Rule rule);
1409
1410
1421 TVG_EXPORT Tvg_Result tvg_shape_get_fill_rule(const Tvg_Paint* paint, Tvg_Fill_Rule* rule);
1422
1423
1454 TVG_EXPORT Tvg_Result tvg_shape_set_linear_gradient(Tvg_Paint* paint, Tvg_Gradient* grad);
1455
1456
1487 TVG_EXPORT Tvg_Result tvg_shape_set_radial_gradient(Tvg_Paint* paint, Tvg_Gradient* grad);
1488
1489
1502 TVG_EXPORT Tvg_Result tvg_shape_get_gradient(const Tvg_Paint* paint, Tvg_Gradient** grad);
1503
1504 // end defgroup ThorVGCapi_Shape
1506
1507
1519 /************************************************************************/
1520 /* Gradient API */
1521 /************************************************************************/
1541 TVG_EXPORT Tvg_Gradient* tvg_linear_gradient_new();
1542
1543
1563 TVG_EXPORT Tvg_Gradient* tvg_radial_gradient_new();
1564
1565
1585 TVG_EXPORT Tvg_Result tvg_linear_gradient_set(Tvg_Gradient* grad, float x1, float y1, float x2, float y2);
1586
1587
1605 TVG_EXPORT Tvg_Result tvg_linear_gradient_get(Tvg_Gradient* grad, float* x1, float* y1, float* x2, float* y2);
1606
1607
1622 TVG_EXPORT Tvg_Result tvg_radial_gradient_set(Tvg_Gradient* grad, float cx, float cy, float radius);
1623
1624
1637 TVG_EXPORT Tvg_Result tvg_radial_gradient_get(Tvg_Gradient* grad, float* cx, float* cy, float* radius);
1638
1639
1651 TVG_EXPORT Tvg_Result tvg_gradient_set_color_stops(Tvg_Gradient* grad, const Tvg_Color_Stop* color_stop, uint32_t cnt);
1652
1653
1667 TVG_EXPORT Tvg_Result tvg_gradient_get_color_stops(const Tvg_Gradient* grad, const Tvg_Color_Stop** color_stop, uint32_t* cnt);
1668
1669
1680 TVG_EXPORT Tvg_Result tvg_gradient_set_spread(Tvg_Gradient* grad, const Tvg_Stroke_Fill spread);
1681
1682
1693 TVG_EXPORT Tvg_Result tvg_gradient_get_spread(const Tvg_Gradient* grad, Tvg_Stroke_Fill* spread);
1694
1695
1709 TVG_EXPORT Tvg_Result tvg_gradient_set_transform(Tvg_Gradient* grad, const Tvg_Matrix* m);
1710
1711
1724 TVG_EXPORT Tvg_Result tvg_gradient_get_transform(const Tvg_Gradient* grad, Tvg_Matrix* m);
1725
1726
1736 TVG_EXPORT Tvg_Gradient* tvg_gradient_duplicate(Tvg_Gradient* grad);
1737
1738
1748 TVG_EXPORT Tvg_Result tvg_gradient_del(Tvg_Gradient* grad);
1749
1750 // end defgroup ThorVGCapi_Gradient
1752
1753
1763 /************************************************************************/
1764 /* Picture API */
1765 /************************************************************************/
1771 TVG_EXPORT Tvg_Paint* tvg_picture_new();
1772
1773
1786 TVG_EXPORT Tvg_Result tvg_picture_load(Tvg_Paint* paint, const char* path);
1787
1788
1798 TVG_EXPORT Tvg_Result tvg_picture_load_raw(Tvg_Paint* paint, uint32_t *data, uint32_t w, uint32_t h, bool copy);
1799
1800
1818 TVG_EXPORT Tvg_Result tvg_picture_load_data(Tvg_Paint* paint, const char *data, uint32_t size, const char *mimetype, bool copy);
1819
1820
1836 TVG_EXPORT Tvg_Result tvg_picture_set_size(Tvg_Paint* paint, float w, float h);
1837
1838
1850 TVG_EXPORT Tvg_Result tvg_picture_get_size(const Tvg_Paint* paint, float* w, float* h);
1851
1852
1858 TVG_EXPORT Tvg_Result tvg_picture_get_viewbox(const Tvg_Paint* paint, float* x, float* y, float* w, float* h);
1859
1860 // end defgroup ThorVGCapi_Picture
1862
1863
1874 /************************************************************************/
1875 /* Scene API */
1876 /************************************************************************/
1884 TVG_EXPORT Tvg_Paint* tvg_scene_new();
1885
1886
1901 TVG_EXPORT Tvg_Result tvg_scene_reserve(Tvg_Paint* scene, uint32_t size);
1902
1903
1922 TVG_EXPORT Tvg_Result tvg_scene_push(Tvg_Paint* scene, Tvg_Paint* paint);
1923
1924
1940 TVG_EXPORT Tvg_Result tvg_scene_clear(Tvg_Paint* scene, bool free);
1941 // end defgroup ThorVGCapi_Scene
1943
1944
1955 /************************************************************************/
1956 /* Saver API */
1957 /************************************************************************/
1963 TVG_EXPORT Tvg_Saver* tvg_saver_new();
1964
1965
1989 TVG_EXPORT Tvg_Result tvg_saver_save(Tvg_Saver* saver, Tvg_Paint* paint, const char* path, bool compress);
1990
1991
2009 TVG_EXPORT Tvg_Result tvg_saver_sync(Tvg_Saver* saver);
2010
2011
2021 TVG_EXPORT Tvg_Result tvg_saver_del(Tvg_Saver* saver);
2022
2023 // end defgroup ThorVGCapi_Saver
2025
2026 // end defgroup ThorVG_CAPI
2028
2029
2030 #ifdef __cplusplus
2031 }
2032 #endif
2033
2034 #endif //_THORVG_CAPI_H_
tvg_paint_set_opacity
TVG_EXPORT Tvg_Result tvg_paint_set_opacity(Tvg_Paint *paint, uint8_t opacity)
Sets the opacity of the given Tvg_Paint.
tvg_paint_get_transform
TVG_EXPORT Tvg_Result tvg_paint_get_transform(Tvg_Paint *paint, Tvg_Matrix *m)
Gets the matrix of the affine transformation of the given Tvg_Paint object.
tvg_shape_get_fill_rule
TVG_EXPORT Tvg_Result tvg_shape_get_fill_rule(const Tvg_Paint *paint, Tvg_Fill_Rule *rule)
Gets the shape's fill rule.
tvg_gradient_set_color_stops
TVG_EXPORT Tvg_Result tvg_gradient_set_color_stops(Tvg_Gradient *grad, const Tvg_Color_Stop *color_stop, uint32_t cnt)
Sets the parameters of the colors of the gradient and their position.
Tvg_Matrix
A data structure representing a three-dimensional matrix.
Definition: thorvg_capi.h:212
tvg_scene_clear
TVG_EXPORT Tvg_Result tvg_scene_clear(Tvg_Paint *scene, bool free)
Clears a Tvg_Scene objects from pushed paints.
tvg_shape_set_fill_color
TVG_EXPORT Tvg_Result tvg_shape_set_fill_color(Tvg_Paint *paint, uint8_t r, uint8_t g, uint8_t b, uint8_t a)
Sets the shape's solid color.
tvg_gradient_get_spread
TVG_EXPORT Tvg_Result tvg_gradient_get_spread(const Tvg_Gradient *grad, Tvg_Stroke_Fill *spread)
Gets the FillSpread value of the gradient object.
tvg_scene_reserve
TVG_EXPORT Tvg_Result tvg_scene_reserve(Tvg_Paint *scene, uint32_t size)
Sets the size of the container, where all the paints pushed into the scene are stored.
tvg_paint_get_composite_method
TVG_EXPORT Tvg_Result tvg_paint_get_composite_method(const Tvg_Paint *paint, const Tvg_Paint **target, Tvg_Composite_Method *method)
Gets the composition target object and the composition method.
TVG_FILL_RULE_WINDING
@ TVG_FILL_RULE_WINDING
A line from the point to a location outside the shape is drawn. The intersections of the line with th...
Definition: thorvg_capi.h:169
TVG_RESULT_FAILED_ALLOCATION
@ TVG_RESULT_FAILED_ALLOCATION
The value returned in case of unsuccessful memory allocation.
Definition: thorvg_capi.h:96
tvg_shape_append_rect
TVG_EXPORT Tvg_Result tvg_shape_append_rect(Tvg_Paint *paint, float x, float y, float w, float h, float rx, float ry)
Appends a rectangle to the path.
tvg_radial_gradient_get
TVG_EXPORT Tvg_Result tvg_radial_gradient_get(Tvg_Gradient *grad, float *cx, float *cy, float *radius)
The function gets radial gradient center point ant radius.
tvg_shape_get_path_coords
TVG_EXPORT Tvg_Result tvg_shape_get_path_coords(const Tvg_Paint *paint, const Tvg_Point **pts, uint32_t *cnt)
Gets the points values of the path.
tvg_canvas_push
TVG_EXPORT Tvg_Result tvg_canvas_push(Tvg_Canvas *canvas, Tvg_Paint *paint)
Inserts a drawing element into the canvas using a Tvg_Paint object.
tvg_swcanvas_set_target
TVG_EXPORT Tvg_Result tvg_swcanvas_set_target(Tvg_Canvas *canvas, uint32_t *buffer, uint32_t stride, uint32_t w, uint32_t h, Tvg_Colorspace cs)
Sets the buffer used in the rasterization process and defines the used colorspace.
tvg_radial_gradient_new
TVG_EXPORT Tvg_Gradient * tvg_radial_gradient_new()
Creates a new radial gradient object.
Tvg_Saver
struct _Tvg_Saver Tvg_Saver
A structure representing an object that enables to save a Tvg_Paint object into a file.
Definition: thorvg_capi.h:75
tvg_paint_duplicate
TVG_EXPORT Tvg_Paint * tvg_paint_duplicate(Tvg_Paint *paint)
Duplicates the given Tvg_Paint object.
tvg_saver_new
TVG_EXPORT Tvg_Saver * tvg_saver_new()
Creates a new Tvg_Saver object.
tvg_saver_sync
TVG_EXPORT Tvg_Result tvg_saver_sync(Tvg_Saver *saver)
Guarantees that the saving task is finished.
tvg_shape_get_path_commands
TVG_EXPORT Tvg_Result tvg_shape_get_path_commands(const Tvg_Paint *paint, const Tvg_Path_Command **cmds, uint32_t *cnt)
Gets the commands data of the path.
tvg_canvas_sync
TVG_EXPORT Tvg_Result tvg_canvas_sync(Tvg_Canvas *canvas)
Guarantees that the drawing process is finished.
tvg_shape_reset
TVG_EXPORT Tvg_Result tvg_shape_reset(Tvg_Paint *paint)
Resets the shape path properties.
tvg_shape_set_stroke_radial_gradient
TVG_EXPORT Tvg_Result tvg_shape_set_stroke_radial_gradient(Tvg_Paint *paint, Tvg_Gradient *grad)
Sets the radial gradient fill of the stroke for all of the figures from the path.
tvg_swcanvas_set_mempool
TVG_EXPORT Tvg_Result tvg_swcanvas_set_mempool(Tvg_Canvas *canvas, Tvg_Mempool_Policy policy)
Sets the software engine memory pool behavior policy.
tvg_canvas_clear
TVG_EXPORT Tvg_Result tvg_canvas_clear(Tvg_Canvas *canvas, bool free)
Sets the total number of the paints pushed into the canvas to be zero. Tvg_Paint objects stored in th...
TVG_COMPOSITE_METHOD_ALPHA_MASK
@ TVG_COMPOSITE_METHOD_ALPHA_MASK
The pixels of the source and the target are alpha blended. As a result, only the part of the source,...
Definition: thorvg_capi.h:111
TVG_ENGINE_SW
@ TVG_ENGINE_SW
CPU rasterizer.
Definition: thorvg_capi.h:84
tvg_paint_del
TVG_EXPORT Tvg_Result tvg_paint_del(Tvg_Paint *paint)
Releases the given Tvg_Paint object.
Tvg_Color_Stop::a
uint8_t a
Definition: thorvg_capi.h:190
tvg_paint_get_opacity
TVG_EXPORT Tvg_Result tvg_paint_get_opacity(const Tvg_Paint *paint, uint8_t *opacity)
Gets the opacity of the given Tvg_Paint.
Tvg_Composite_Method
Tvg_Composite_Method
Enumeration indicating the method used in the composition of two objects - the target and the source.
Definition: thorvg_capi.h:108
tvg_shape_set_stroke_cap
TVG_EXPORT Tvg_Result tvg_shape_set_stroke_cap(Tvg_Paint *paint, Tvg_Stroke_Cap cap)
Sets the cap style used for stroking the path.
Tvg_Canvas
struct _Tvg_Canvas Tvg_Canvas
A structure responsible for managing and drawing graphical elements.
Definition: thorvg_capi.h:55
tvg_canvas_update
TVG_EXPORT Tvg_Result tvg_canvas_update(Tvg_Canvas *canvas)
Updates all paints in a canvas.
tvg_gradient_set_spread
TVG_EXPORT Tvg_Result tvg_gradient_set_spread(Tvg_Gradient *grad, const Tvg_Stroke_Fill spread)
Sets the Tvg_Stroke_Fill value, which specifies how to fill the area outside the gradient bounds.
tvg_shape_set_stroke_join
TVG_EXPORT Tvg_Result tvg_shape_set_stroke_join(Tvg_Paint *paint, Tvg_Stroke_Join join)
Sets the join style for stroked path segments.
Tvg_Engine
Tvg_Engine
Enumeration specifying the engine type used for the graphics backend. For multiple backends bitwise o...
Definition: thorvg_capi.h:83
Tvg_Color_Stop::r
uint8_t r
Definition: thorvg_capi.h:187
tvg_gradient_del
TVG_EXPORT Tvg_Result tvg_gradient_del(Tvg_Gradient *grad)
Deletes the given gradient object.
tvg_canvas_draw
TVG_EXPORT Tvg_Result tvg_canvas_draw(Tvg_Canvas *canvas)
Requests the canvas to draw the Tvg_Paint objects.
Tvg_Mempool_Policy
Tvg_Mempool_Policy
Enumeration specifying the methods of Memory Pool behavior policy.
Definition: thorvg_capi.h:320
TVG_STROKE_CAP_BUTT
@ TVG_STROKE_CAP_BUTT
The stroke ends exactly at each of the two endpoints of a sub-path. For zero length sub-paths no stro...
Definition: thorvg_capi.h:141
tvg_picture_get_viewbox
TVG_EXPORT Tvg_Result tvg_picture_get_viewbox(const Tvg_Paint *paint, float *x, float *y, float *w, float *h)
Gets the position and the size of the loaded picture. (BETA_API)
Tvg_Fill_Rule
Tvg_Fill_Rule
Enumeration specifying the algorithm used to establish which parts of the shape are treated as the in...
Definition: thorvg_capi.h:168
tvg_paint_translate
TVG_EXPORT Tvg_Result tvg_paint_translate(Tvg_Paint *paint, float x, float y)
Moves the given Tvg_Paint in a two-dimensional space.
tvg_shape_get_stroke_color
TVG_EXPORT Tvg_Result tvg_shape_get_stroke_color(const Tvg_Paint *paint, uint8_t *r, uint8_t *g, uint8_t *b, uint8_t *a)
Gets the shape's stroke color.
tvg_shape_set_fill_rule
TVG_EXPORT Tvg_Result tvg_shape_set_fill_rule(Tvg_Paint *paint, Tvg_Fill_Rule rule)
Sets the shape's fill rule.
tvg_scene_new
TVG_EXPORT Tvg_Paint * tvg_scene_new()
Creates a new scene object.
TVG_MEMPOOL_POLICY_SHAREABLE
@ TVG_MEMPOOL_POLICY_SHAREABLE
Memory Pool is shared among canvases.
Definition: thorvg_capi.h:322
Tvg_Point
A data structure representing a point in two-dimensional space.
Definition: thorvg_capi.h:199
TVG_RESULT_UNKNOWN
@ TVG_RESULT_UNKNOWN
The value returned in all other cases.
Definition: thorvg_capi.h:99
TVG_PATH_COMMAND_LINE_TO
@ TVG_PATH_COMMAND_LINE_TO
Draws a line from the current point to the given point and sets a new value of the current point - co...
Definition: thorvg_capi.h:130
TVG_FILL_RULE_EVEN_ODD
@ TVG_FILL_RULE_EVEN_ODD
A line from the point to a location outside the shape is drawn and its intersections with the path se...
Definition: thorvg_capi.h:170
tvg_swcanvas_create
TVG_EXPORT Tvg_Canvas * tvg_swcanvas_create()
Creates a Canvas object.
Tvg_Colorspace
Tvg_Colorspace
Enumeration specifying the methods of combining the 8-bit color channels into 32-bit color.
Definition: thorvg_capi.h:330
Tvg_Color_Stop::g
uint8_t g
Definition: thorvg_capi.h:188
tvg_shape_new
TVG_EXPORT Tvg_Paint * tvg_shape_new()
Creates a new shape object.
tvg_engine_init
TVG_EXPORT Tvg_Result tvg_engine_init(Tvg_Engine engine_method, unsigned threads)
Initializes TVG engines.
tvg_shape_set_linear_gradient
TVG_EXPORT Tvg_Result tvg_shape_set_linear_gradient(Tvg_Paint *paint, Tvg_Gradient *grad)
Sets the linear gradient fill for all of the figures from the path.
TVG_MEMPOOL_POLICY_DEFAULT
@ TVG_MEMPOOL_POLICY_DEFAULT
Default behavior that ThorVG is designed to.
Definition: thorvg_capi.h:321
tvg_shape_get_stroke_cap
TVG_EXPORT Tvg_Result tvg_shape_get_stroke_cap(const Tvg_Paint *paint, Tvg_Stroke_Cap *cap)
Gets the stroke cap style used for stroking the path.
tvg_shape_append_circle
TVG_EXPORT Tvg_Result tvg_shape_append_circle(Tvg_Paint *paint, float cx, float cy, float rx, float ry)
Appends an ellipse to the path.
TVG_STROKE_JOIN_BEVEL
@ TVG_STROKE_JOIN_BEVEL
The outer corner of the joined path segments is bevelled at the join point. The triangular region of ...
Definition: thorvg_capi.h:149
tvg_paint_scale
TVG_EXPORT Tvg_Result tvg_paint_scale(Tvg_Paint *paint, float factor)
Scales the given Tvg_Paint object by the given factor.
tvg_picture_load
TVG_EXPORT Tvg_Result tvg_picture_load(Tvg_Paint *paint, const char *path)
Loads a picture data directly from a file.
tvg_scene_push
TVG_EXPORT Tvg_Result tvg_scene_push(Tvg_Paint *scene, Tvg_Paint *paint)
Passes drawing elements to the scene using Tvg_Paint objects.
tvg_radial_gradient_set
TVG_EXPORT Tvg_Result tvg_radial_gradient_set(Tvg_Gradient *grad, float cx, float cy, float radius)
Sets the radial gradient bounds.
TVG_ENGINE_GL
@ TVG_ENGINE_GL
OpenGL rasterizer.
Definition: thorvg_capi.h:85
TVG_MEMPOOL_POLICY_INDIVIDUAL
@ TVG_MEMPOOL_POLICY_INDIVIDUAL
Allocate designated memory pool that is used only by the current canvas instance.
Definition: thorvg_capi.h:323
tvg_linear_gradient_get
TVG_EXPORT Tvg_Result tvg_linear_gradient_get(Tvg_Gradient *grad, float *x1, float *y1, float *x2, float *y2)
Gets the linear gradient bounds.
Tvg_Result
Tvg_Result
Enumeration specifying the result from the APIs.
Definition: thorvg_capi.h:92
TVG_STROKE_CAP_SQUARE
@ TVG_STROKE_CAP_SQUARE
The stroke is extended in both endpoints of a sub-path by a rectangle, with the width equal to the st...
Definition: thorvg_capi.h:139
tvg_shape_append_path
TVG_EXPORT Tvg_Result tvg_shape_append_path(Tvg_Paint *paint, const Tvg_Path_Command *cmds, uint32_t cmdCnt, const Tvg_Point *pts, uint32_t ptsCnt)
Appends a given sub-path to the path.
TVG_COMPOSITE_METHOD_NONE
@ TVG_COMPOSITE_METHOD_NONE
No composition is applied.
Definition: thorvg_capi.h:109
tvg_gradient_get_transform
TVG_EXPORT Tvg_Result tvg_gradient_get_transform(const Tvg_Gradient *grad, Tvg_Matrix *m)
Gets the matrix of the affine transformation of the gradient object.
tvg_shape_get_stroke_width
TVG_EXPORT Tvg_Result tvg_shape_get_stroke_width(const Tvg_Paint *paint, float *width)
Gets the shape's stroke width.
tvg_picture_load_raw
TVG_EXPORT Tvg_Result tvg_picture_load_raw(Tvg_Paint *paint, uint32_t *data, uint32_t w, uint32_t h, bool copy)
Loads a picture data from a memory block of a given size. (BETA_API)
TVG_COLORSPACE_ARGB8888
@ TVG_COLORSPACE_ARGB8888
The 8-bit color channels are combined into 32-bit color in the order: alpha, red, green,...
Definition: thorvg_capi.h:332
tvg_shape_get_stroke_dash
TVG_EXPORT Tvg_Result tvg_shape_get_stroke_dash(const Tvg_Paint *paint, const float **dashPattern, uint32_t *cnt)
Gets the dash pattern of the stroke.
TVG_STROKE_FILL_REFLECT
@ TVG_STROKE_FILL_REFLECT
The gradient pattern is reflected outside the gradient area until the expected region is filled.
Definition: thorvg_capi.h:160
tvg_paint_set_transform
TVG_EXPORT Tvg_Result tvg_paint_set_transform(Tvg_Paint *paint, const Tvg_Matrix *m)
Transforms the given Tvg_Paint using the augmented transformation matrix.
tvg_shape_set_stroke_linear_gradient
TVG_EXPORT Tvg_Result tvg_shape_set_stroke_linear_gradient(Tvg_Paint *paint, Tvg_Gradient *grad)
Sets the linear gradient fill of the stroke for all of the figures from the path.
tvg_paint_set_composite_method
TVG_EXPORT Tvg_Result tvg_paint_set_composite_method(Tvg_Paint *paint, Tvg_Paint *target, Tvg_Composite_Method method)
Sets the composition target object and the composition method.
tvg_shape_get_fill_color
TVG_EXPORT Tvg_Result tvg_shape_get_fill_color(const Tvg_Paint *paint, uint8_t *r, uint8_t *g, uint8_t *b, uint8_t *a)
Gets the shape's solid color.
TVG_RESULT_NOT_SUPPORTED
@ TVG_RESULT_NOT_SUPPORTED
The value returned in case of choosing unsupported options.
Definition: thorvg_capi.h:98
tvg_shape_line_to
TVG_EXPORT Tvg_Result tvg_shape_line_to(Tvg_Paint *paint, float x, float y)
Adds a new point to the sub-path, which results in drawing a line from the current point to the given...
TVG_COMPOSITE_METHOD_CLIP_PATH
@ TVG_COMPOSITE_METHOD_CLIP_PATH
The intersection of the source and the target is determined and only the resulting pixels from the so...
Definition: thorvg_capi.h:110
tvg_shape_set_stroke_dash
TVG_EXPORT Tvg_Result tvg_shape_set_stroke_dash(Tvg_Paint *paint, const float *dashPattern, uint32_t cnt)
Sets the shape's stroke dash pattern.
tvg_gradient_duplicate
TVG_EXPORT Tvg_Gradient * tvg_gradient_duplicate(Tvg_Gradient *grad)
Duplicates the given Tvg_Gradient object.
tvg_shape_get_stroke_join
TVG_EXPORT Tvg_Result tvg_shape_get_stroke_join(const Tvg_Paint *paint, Tvg_Stroke_Join *join)
The function gets the stroke join method.
Tvg_Stroke_Cap
Tvg_Stroke_Cap
Enumeration determining the ending type of a stroke in the open sub-paths.
Definition: thorvg_capi.h:138
TVG_PATH_COMMAND_CLOSE
@ TVG_PATH_COMMAND_CLOSE
Ends the current sub-path and connects it with its initial point - corresponds to Z command in the sv...
Definition: thorvg_capi.h:128
TVG_COLORSPACE_ABGR8888
@ TVG_COLORSPACE_ABGR8888
The 8-bit color channels are combined into 32-bit color in the order: alpha, blue,...
Definition: thorvg_capi.h:331
Tvg_Stroke_Fill
Tvg_Stroke_Fill
Enumeration specifying how to fill the area outside the gradient bounds.
Definition: thorvg_capi.h:158
tvg_paint_rotate
TVG_EXPORT Tvg_Result tvg_paint_rotate(Tvg_Paint *paint, float degree)
Rotates the given Tvg_Paint by the given angle.
tvg_linear_gradient_set
TVG_EXPORT Tvg_Result tvg_linear_gradient_set(Tvg_Gradient *grad, float x1, float y1, float x2, float y2)
Sets the linear gradient bounds.
Tvg_Color_Stop::offset
float offset
Definition: thorvg_capi.h:186
tvg_picture_get_size
TVG_EXPORT Tvg_Result tvg_picture_get_size(const Tvg_Paint *paint, float *w, float *h)
Gets the size of the loaded picture.
Tvg_Gradient
struct _Tvg_Gradient Tvg_Gradient
A structure representing a gradient fill of a Tvg_Paint object.
Definition: thorvg_capi.h:69
TVG_STROKE_FILL_REPEAT
@ TVG_STROKE_FILL_REPEAT
The gradient pattern is repeated continuously beyond the gradient area until the expected region is f...
Definition: thorvg_capi.h:161
TVG_RESULT_SUCCESS
@ TVG_RESULT_SUCCESS
The value returned in case of a correct request execution.
Definition: thorvg_capi.h:93
Tvg_Paint
struct _Tvg_Paint Tvg_Paint
A structure representing a graphical element.
Definition: thorvg_capi.h:63
tvg_linear_gradient_new
TVG_EXPORT Tvg_Gradient * tvg_linear_gradient_new()
Creates a new linear gradient object.
tvg_canvas_destroy
TVG_EXPORT Tvg_Result tvg_canvas_destroy(Tvg_Canvas *canvas)
Clears the canvas internal data, releases all paints stored by the canvas and destroys the canvas obj...
TVG_RESULT_INSUFFICIENT_CONDITION
@ TVG_RESULT_INSUFFICIENT_CONDITION
The value returned in case the request cannot be processed - e.g. asking for properties of an object,...
Definition: thorvg_capi.h:95
tvg_shape_cubic_to
TVG_EXPORT Tvg_Result tvg_shape_cubic_to(Tvg_Paint *paint, float cx1, float cy1, float cx2, float cy2, float x, float y)
Adds new points to the sub-path, which results in drawing a cubic Bezier curve.
tvg_saver_del
TVG_EXPORT Tvg_Result tvg_saver_del(Tvg_Saver *saver)
Deletes the given Tvg_Saver object.
TVG_STROKE_FILL_PAD
@ TVG_STROKE_FILL_PAD
The remaining area is filled with the closest stop color.
Definition: thorvg_capi.h:159
tvg_gradient_set_transform
TVG_EXPORT Tvg_Result tvg_gradient_set_transform(Tvg_Gradient *grad, const Tvg_Matrix *m)
Sets the matrix of the affine transformation for the gradient object.
Tvg_Color_Stop
A data structure storing the information about the color and its relative position inside the gradien...
Definition: thorvg_capi.h:184
tvg_shape_close
TVG_EXPORT Tvg_Result tvg_shape_close(Tvg_Paint *paint)
Closes the current sub-path by drawing a line from the current point to the initial point of the sub-...
Tvg_Stroke_Join
Tvg_Stroke_Join
Enumeration specifying how to fill the area outside the gradient bounds.
Definition: thorvg_capi.h:148
tvg_shape_set_stroke_width
TVG_EXPORT Tvg_Result tvg_shape_set_stroke_width(Tvg_Paint *paint, float width)
Sets the stroke width for all of the figures from the paint.
tvg_gradient_get_color_stops
TVG_EXPORT Tvg_Result tvg_gradient_get_color_stops(const Tvg_Gradient *grad, const Tvg_Color_Stop **color_stop, uint32_t *cnt)
Gets the parameters of the colors of the gradient, their position and number.
Tvg_Color_Stop::b
uint8_t b
Definition: thorvg_capi.h:189
TVG_PATH_COMMAND_MOVE_TO
@ TVG_PATH_COMMAND_MOVE_TO
Sets a new initial point of the sub-path and a new current point - corresponds to M command in the sv...
Definition: thorvg_capi.h:129
tvg_shape_move_to
TVG_EXPORT Tvg_Result tvg_shape_move_to(Tvg_Paint *paint, float x, float y)
Sets the initial point of the sub-path.
TVG_PATH_COMMAND_CUBIC_TO
@ TVG_PATH_COMMAND_CUBIC_TO
Draws a cubic Bezier curve from the current point to the given point using two given control points a...
Definition: thorvg_capi.h:131
TVG_STROKE_CAP_ROUND
@ TVG_STROKE_CAP_ROUND
The stroke is extended in both endpoints of a sub-path by a half circle, with a radius equal to the h...
Definition: thorvg_capi.h:140
tvg_shape_set_stroke_color
TVG_EXPORT Tvg_Result tvg_shape_set_stroke_color(Tvg_Paint *paint, uint8_t r, uint8_t g, uint8_t b, uint8_t a)
Sets the shape's stroke color.
tvg_picture_new
TVG_EXPORT Tvg_Paint * tvg_picture_new()
Creates a new picture object.
tvg_engine_term
TVG_EXPORT Tvg_Result tvg_engine_term(Tvg_Engine engine_method)
Terminates TVG engines.
tvg_shape_get_stroke_gradient
TVG_EXPORT Tvg_Result tvg_shape_get_stroke_gradient(const Tvg_Paint *paint, Tvg_Gradient **grad)
Gets the gradient fill of the shape's stroke.
TVG_STROKE_JOIN_MITER
@ TVG_STROKE_JOIN_MITER
The outer corner of the joined path segments is spiked. The spike is created by extension beyond the ...
Definition: thorvg_capi.h:151
tvg_picture_set_size
TVG_EXPORT Tvg_Result tvg_picture_set_size(Tvg_Paint *paint, float w, float h)
Resizes the picture content to the given width and height.
Tvg_Path_Command
Tvg_Path_Command
Enumeration specifying the values of the path commands accepted by TVG.
Definition: thorvg_capi.h:127
TVG_STROKE_JOIN_ROUND
@ TVG_STROKE_JOIN_ROUND
The outer corner of the joined path segments is rounded. The circular region is centered at the join ...
Definition: thorvg_capi.h:150
tvg_picture_load_data
TVG_EXPORT Tvg_Result tvg_picture_load_data(Tvg_Paint *paint, const char *data, uint32_t size, const char *mimetype, bool copy)
Loads a picture data from a memory block of a given size.
tvg_shape_append_arc
TVG_EXPORT Tvg_Result tvg_shape_append_arc(Tvg_Paint *paint, float cx, float cy, float radius, float startAngle, float sweep, uint8_t pie)
Appends a circular arc to the path.
tvg_shape_set_radial_gradient
TVG_EXPORT Tvg_Result tvg_shape_set_radial_gradient(Tvg_Paint *paint, Tvg_Gradient *grad)
Sets the radial gradient fill for all of the figures from the path.
tvg_canvas_update_paint
TVG_EXPORT Tvg_Result tvg_canvas_update_paint(Tvg_Canvas *canvas, Tvg_Paint *paint)
Updates the given Tvg_Paint object from the canvas before the rendering.
tvg_saver_save
TVG_EXPORT Tvg_Result tvg_saver_save(Tvg_Saver *saver, Tvg_Paint *paint, const char *path, bool compress)
Exports the given paint data to the given path.
TVG_RESULT_INVALID_ARGUMENT
@ TVG_RESULT_INVALID_ARGUMENT
The value returned in the event of a problem with the arguments given to the API - e....
Definition: thorvg_capi.h:94
tvg_canvas_reserve
TVG_EXPORT Tvg_Result tvg_canvas_reserve(Tvg_Canvas *canvas, uint32_t n)
Reserves a memory block where the objects pushed into a canvas are stored.
tvg_paint_get_bounds
TVG_EXPORT Tvg_Result tvg_paint_get_bounds(const Tvg_Paint *paint, float *x, float *y, float *w, float *h, bool transformed)
Gets the axis-aligned bounding box of the Tvg_Paint object.
TVG_COMPOSITE_METHOD_INVERSE_ALPHA_MASK
@ TVG_COMPOSITE_METHOD_INVERSE_ALPHA_MASK
The pixels of the source and the complement to the target's pixels are alpha blended....
Definition: thorvg_capi.h:112
tvg_shape_get_gradient
TVG_EXPORT Tvg_Result tvg_shape_get_gradient(const Tvg_Paint *paint, Tvg_Gradient **grad)
Gets the gradient fill of the shape.
TVG_RESULT_MEMORY_CORRUPTION
@ TVG_RESULT_MEMORY_CORRUPTION
The value returned in the event of bad memory handling - e.g. failing in pointer releasing or casting...
Definition: thorvg_capi.h:97