2 #include "thorvg_capi.h"
13 //Dummy for Direct Casting
18 //Dummy for Direct Casting
22 /************************************************************************/
24 /************************************************************************/
26 TVG_EXPORT Tvg_Result tvg_engine_init(unsigned engine_method) {
27 Result ret = Result::Success;
29 if (engine_method & TVG_ENGINE_SW) ret = tvg::Initializer::init(tvg::CanvasEngine::Sw);
30 if (ret != Result::Success) return (Tvg_Result) ret;
32 if (engine_method & TVG_ENGINE_GL) ret = tvg::Initializer::init(tvg::CanvasEngine::Gl);
33 return (Tvg_Result) ret;
37 TVG_EXPORT Tvg_Result tvg_engine_term(unsigned engine_method) {
38 Result ret = Result::Success;
40 if (engine_method & TVG_ENGINE_SW) ret = tvg::Initializer::init(tvg::CanvasEngine::Sw);
41 if (ret != Result::Success) return (Tvg_Result) ret;
43 if (engine_method & TVG_ENGINE_GL) ret = tvg::Initializer::init(tvg::CanvasEngine::Gl);
44 return (Tvg_Result) ret;
47 /************************************************************************/
49 /************************************************************************/
51 TVG_EXPORT Tvg_Canvas* tvg_swcanvas_create()
53 return (Tvg_Canvas*) SwCanvas::gen().release();
57 TVG_EXPORT Tvg_Result tvg_canvas_destroy(Tvg_Canvas* canvas)
60 return TVG_RESULT_SUCCESS;
64 TVG_EXPORT Tvg_Result tvg_swcanvas_set_target(Tvg_Canvas* canvas, uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t h)
66 return (Tvg_Result) reinterpret_cast<SwCanvas*>(canvas)->target(buffer, stride, w, h);
70 TVG_EXPORT Tvg_Result tvg_canvas_push(Tvg_Canvas* canvas, Tvg_Paint* paint)
72 return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->push(unique_ptr<Paint>((Paint*)paint));
76 TVG_EXPORT Tvg_Result tvg_canvas_reserve(Tvg_Canvas* canvas, uint32_t n)
78 return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->reserve(n);
82 TVG_EXPORT Tvg_Result tvg_canvas_clear(Tvg_Canvas* canvas)
84 return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->clear();
88 TVG_EXPORT Tvg_Result tvg_canvas_update(Tvg_Canvas* canvas)
90 return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->update();
94 TVG_EXPORT Tvg_Result tvg_canvas_update_paint(Tvg_Canvas* canvas, Tvg_Paint* paint)
96 return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->update((Paint*) paint);
100 TVG_EXPORT Tvg_Result tvg_canvas_draw(Tvg_Canvas* canvas, unsigned char async)
102 return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->draw(async);
106 TVG_EXPORT Tvg_Result tvg_canvas_sync(Tvg_Canvas* canvas)
108 return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->sync();
112 /************************************************************************/
114 /************************************************************************/
116 TVG_EXPORT Tvg_Paint* tvg_shape_new()
118 return (Tvg_Paint*) Shape::gen().release();
122 TVG_EXPORT Tvg_Result tvg_shape_del(Tvg_Paint* paint)
125 return TVG_RESULT_SUCCESS;
129 TVG_EXPORT Tvg_Result tvg_shape_reset(Tvg_Paint* paint)
131 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->reset();
135 TVG_EXPORT Tvg_Result tvg_shape_move_to(Tvg_Paint* paint, float x, float y)
137 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->moveTo(x, y);
141 TVG_EXPORT Tvg_Result tvg_shape_line_to(Tvg_Paint* paint, float x, float y)
143 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->lineTo(x, y);
147 TVG_EXPORT Tvg_Result tvg_shape_cubic_to(Tvg_Paint* paint, float cx1, float cy1, float cx2, float cy2, float x, float y)
149 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->cubicTo(cx1, cy1, cx2, cy2, x, y);
153 TVG_EXPORT Tvg_Result tvg_shape_close(Tvg_Paint* paint)
155 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->close();
159 TVG_EXPORT Tvg_Result tvg_shape_append_rect(Tvg_Paint* paint, float x, float y, float w, float h, float rx, float ry)
161 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->appendRect(x, y, w, h, rx, ry);
165 TVG_EXPORT Tvg_Result tvg_shape_append_circle(Tvg_Paint* paint, float cx, float cy, float rx, float ry)
167 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->appendCircle(cx, cy, rx, ry);
171 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)
173 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->appendPath((PathCommand*)cmds, cmdCnt, (Point*)pts, ptsCnt);
177 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_width(Tvg_Paint* paint, float width)
179 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->stroke(width);
183 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_color(Tvg_Paint* paint, uint8_t r, uint8_t g, uint8_t b, uint8_t a)
185 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->stroke(r, g, b, a);
189 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_dash(Tvg_Paint* paint, const float* dashPattern, uint32_t cnt)
191 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->stroke(dashPattern, cnt);
195 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_cap(Tvg_Paint* paint, Tvg_Stroke_Cap cap)
197 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->stroke((StrokeCap)cap);
201 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_join(Tvg_Paint* paint, Tvg_Stroke_Join join)
203 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->stroke((StrokeJoin)join);
207 TVG_EXPORT Tvg_Result tvg_shape_fill_color(Tvg_Paint* paint, uint8_t r, uint8_t g, uint8_t b, uint8_t a)
209 return (Tvg_Result) reinterpret_cast<Shape*>(paint)->fill(r, g, b, a);