capi: revise some common paint interfaces and added picture stuff. 29/240129/1
authorHermet Park <chuneon.park@samsung.com>
Tue, 4 Aug 2020 00:37:08 +0000 (09:37 +0900)
committerHermet Park <chuneon.park@samsung.com>
Tue, 4 Aug 2020 00:37:08 +0000 (09:37 +0900)
Change-Id: I9850cbead5ce1ab172f284738fe8456cd19dc3f9

inc/thorvg_capi.h
src/bindings/capi/tvgCapi.cpp

index 5c0428b..ecd7ee6 100644 (file)
@@ -128,10 +128,19 @@ TVG_EXPORT Tvg_Result tvg_canvas_sync(Tvg_Canvas* canvas);
 
 
 /************************************************************************/
+/* Paint API                                                            */
+/************************************************************************/
+TVG_EXPORT Tvg_Result tvg_paint_del(Tvg_Paint* paint);
+TVG_EXPORT Tvg_Result tvg_paint_scale(Tvg_Paint* paint, float factor);
+TVG_EXPORT Tvg_Result tvg_paint_rotate(Tvg_Paint* paint, float degree);
+TVG_EXPORT Tvg_Result tvg_paint_translate(Tvg_Paint* paint, float x, float y);
+TVG_EXPORT Tvg_Result tvg_paint_transform(Tvg_Paint* paint, const Tvg_Matrix* m);
+
+
+/************************************************************************/
 /* Shape API                                                            */
 /************************************************************************/
 TVG_EXPORT Tvg_Paint* tvg_shape_new();
-TVG_EXPORT Tvg_Result tvg_shape_del(Tvg_Paint* paint);
 TVG_EXPORT Tvg_Result tvg_shape_reset(Tvg_Paint* paint);
 TVG_EXPORT Tvg_Result tvg_shape_move_to(Tvg_Paint* paint, float x, float y);
 TVG_EXPORT Tvg_Result tvg_shape_line_to(Tvg_Paint* paint, float x, float y);
@@ -147,10 +156,6 @@ TVG_EXPORT Tvg_Result tvg_shape_set_stroke_dash(Tvg_Paint* paint, const float* d
 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_cap(Tvg_Paint* paint, Tvg_Stroke_Cap cap);
 TVG_EXPORT Tvg_Result tvg_shape_set_stroke_join(Tvg_Paint* paint, Tvg_Stroke_Join join);
 TVG_EXPORT Tvg_Result tvg_shape_fill_color(Tvg_Paint* paint, uint8_t r, uint8_t g, uint8_t b, uint8_t a);
-TVG_EXPORT Tvg_Result tvg_shape_scale(Tvg_Paint* paint, float factor);
-TVG_EXPORT Tvg_Result tvg_shape_rotate(Tvg_Paint* paint, float degree);
-TVG_EXPORT Tvg_Result tvg_shape_translate(Tvg_Paint* paint, float x, float y);
-TVG_EXPORT Tvg_Result tvg_shape_transform(Tvg_Paint* paint, const Tvg_Matrix* m);
 TVG_EXPORT Tvg_Result tvg_shape_linear_gradient_set(Tvg_Paint* paint, Tvg_Gradient *grad);
 TVG_EXPORT Tvg_Result tvg_shape_radial_gradient_set(Tvg_Paint* paint, Tvg_Gradient *grad);
 
@@ -166,6 +171,13 @@ TVG_EXPORT Tvg_Result tvg_radial_gradient_set(Tvg_Gradient* grad, float cx, floa
 TVG_EXPORT Tvg_Result tvg_gradient_color_stops(Tvg_Gradient* grad, const Tvg_Color_Stop* color_stop, uint32_t cnt);
 
 
+/************************************************************************/
+/* Picture API                                                          */
+/************************************************************************/
+TVG_EXPORT Tvg_Paint* tvg_picture_new();
+TVG_EXPORT Tvg_Result tvg_picture_load(Tvg_Paint* paint, const char* path);
+TVG_EXPORT Tvg_Result tvg_picture_get_viewbox(Tvg_Paint* paint, float* x, float* y, float* w, float* h);
+
 #ifdef __cplusplus
 }
 #endif
index 9897584..9f9646e 100644 (file)
@@ -132,19 +132,47 @@ TVG_EXPORT Tvg_Result tvg_canvas_sync(Tvg_Canvas* canvas)
 
 
 /************************************************************************/
-/* Shape API                                                            */
+/* Paint API                                                            */
 /************************************************************************/
 
-TVG_EXPORT Tvg_Paint* tvg_shape_new()
+TVG_EXPORT Tvg_Result tvg_paint_del(Tvg_Paint* paint)
 {
-    return (Tvg_Paint*) Shape::gen().release();
+    delete(paint);
+    return TVG_RESULT_SUCCESS;
 }
 
 
-TVG_EXPORT Tvg_Result tvg_shape_del(Tvg_Paint* paint)
+TVG_EXPORT Tvg_Result tvg_paint_scale(Tvg_Paint* paint, float factor)
 {
-    delete(paint);
-    return TVG_RESULT_SUCCESS;
+    return (Tvg_Result) reinterpret_cast<Paint*>(paint)->scale(factor);
+}
+
+
+TVG_EXPORT Tvg_Result tvg_paint_rotate(Tvg_Paint* paint, float degree)
+{
+    return (Tvg_Result) reinterpret_cast<Paint*>(paint)->rotate(degree);
+}
+
+
+TVG_EXPORT Tvg_Result tvg_paint_translate(Tvg_Paint* paint, float x, float y)
+{
+    return (Tvg_Result) reinterpret_cast<Paint*>(paint)->translate(x, y);
+}
+
+
+TVG_EXPORT Tvg_Result tvg_paint_transform(Tvg_Paint* paint, const Tvg_Matrix* m)
+{
+    return (Tvg_Result) reinterpret_cast<Paint*>(paint)->transform(*(reinterpret_cast<const Matrix*>(m)));
+}
+
+
+/************************************************************************/
+/* Shape API                                                            */
+/************************************************************************/
+
+TVG_EXPORT Tvg_Paint* tvg_shape_new()
+{
+    return (Tvg_Paint*) Shape::gen().release();
 }
 
 
@@ -235,34 +263,38 @@ TVG_EXPORT Tvg_Result tvg_shape_fill_color(Tvg_Paint* paint, uint8_t r, uint8_t
     return (Tvg_Result) reinterpret_cast<Shape*>(paint)->fill(r, g, b, a);
 }
 
-TVG_EXPORT Tvg_Result tvg_shape_scale(Tvg_Paint* paint, float factor)
-{
-    return (Tvg_Result) reinterpret_cast<Shape*>(paint)->scale(factor);
-}
 
-TVG_EXPORT Tvg_Result tvg_shape_rotate(Tvg_Paint* paint, float degree)
+TVG_EXPORT Tvg_Result tvg_shape_linear_gradient_set(Tvg_Paint* paint, Tvg_Gradient *gradient)
 {
-    return (Tvg_Result) reinterpret_cast<Shape*>(paint)->rotate(degree);
+    return (Tvg_Result) reinterpret_cast<Shape*>(paint)->fill(unique_ptr<LinearGradient>((LinearGradient*)(gradient)));
 }
 
-TVG_EXPORT Tvg_Result tvg_shape_translate(Tvg_Paint* paint, float x, float y)
+
+TVG_EXPORT Tvg_Result tvg_shape_radial_gradient_set(Tvg_Paint* paint, Tvg_Gradient *gradient)
 {
-    return (Tvg_Result) reinterpret_cast<Shape*>(paint)->translate(x, y);
+    return (Tvg_Result) reinterpret_cast<Shape*>(paint)->fill(unique_ptr<RadialGradient>((RadialGradient*)(gradient)));
 }
 
-TVG_EXPORT Tvg_Result tvg_shape_transform(Tvg_Paint* paint, const Tvg_Matrix* m)
+
+/************************************************************************/
+/* Picture API                                                          */
+/************************************************************************/
+
+TVG_EXPORT Tvg_Paint* tvg_picture_new()
 {
-    return (Tvg_Result) reinterpret_cast<Shape*>(paint)->transform(*(reinterpret_cast<const Matrix*>(m)));
+    return (Tvg_Paint*) Picture::gen().release();
 }
 
-TVG_EXPORT Tvg_Result tvg_shape_linear_gradient_set(Tvg_Paint* paint, Tvg_Gradient *grad)
+
+TVG_EXPORT Tvg_Result tvg_picture_load(Tvg_Paint* paint, const char* path)
 {
-    return (Tvg_Result) reinterpret_cast<Shape*>(paint)->fill(unique_ptr<LinearGradient>((LinearGradient*)(grad)));
+    return (Tvg_Result) reinterpret_cast<Picture*>(paint)->load(path);
 }
 
-TVG_EXPORT Tvg_Result tvg_shape_radial_gradient_set(Tvg_Paint* paint, Tvg_Gradient *grad)
+
+TVG_EXPORT Tvg_Result tvg_picture_get_viewbox(Tvg_Paint* paint, float* x, float* y, float* w, float* h)
 {
-    return (Tvg_Result) reinterpret_cast<Shape*>(paint)->fill(unique_ptr<RadialGradient>((RadialGradient*)(grad)));
+    return (Tvg_Result) reinterpret_cast<Picture*>(paint)->viewbox(x, y, w, h);
 }