common: revise canvas interfaces. 04/239804/2
authorHermet Park <chuneon.park@samsung.com>
Thu, 30 Jul 2020 04:40:18 +0000 (13:40 +0900)
committerHermet Park <chuneon.park@samsung.com>
Thu, 30 Jul 2020 04:43:18 +0000 (13:43 +0900)
1. removed async option which doesn't work currently,
rather than it, we can add async option in initiailizer class.

2. removed update() method.
Instead, we can call update(paint = nullptr); which has exactly same behavior.

Change-Id: I7909a50d804b97baf413a2ff6365a3cf79a3689e

inc/thorvg.h
inc/thorvg_capi.h
src/bindings/capi/tvgCapi.cpp
src/lib/tvgCanvas.cpp
src/lib/tvgCanvasImpl.h
test/testCapi.c

index c8dafaf..6475890 100644 (file)
@@ -157,9 +157,8 @@ public:
     Result reserve(uint32_t n) noexcept;
     virtual Result push(std::unique_ptr<Paint> paint) noexcept;
     virtual Result clear() noexcept;
-    virtual Result update() noexcept;
     virtual Result update(Paint* paint) noexcept;
-    virtual Result draw(bool async = true) noexcept;
+    virtual Result draw() noexcept;
     virtual Result sync() noexcept;
 
     _TVG_DECLARE_ACCESSOR(Scene);
index efb135b..7189599 100644 (file)
@@ -117,7 +117,7 @@ TVG_EXPORT Tvg_Result tvg_canvas_reserve(Tvg_Canvas* canvas, uint32_t n);
 TVG_EXPORT Tvg_Result tvg_canvas_clear(Tvg_Canvas* canvas);
 TVG_EXPORT Tvg_Result tvg_canvas_update(Tvg_Canvas* canvas);
 TVG_EXPORT Tvg_Result tvg_canvas_update_paint(Tvg_Canvas* canvas, Tvg_Paint* paint);
-TVG_EXPORT Tvg_Result tvg_canvas_draw(Tvg_Canvas* canvas, unsigned char async);
+TVG_EXPORT Tvg_Result tvg_canvas_draw(Tvg_Canvas* canvas);
 TVG_EXPORT Tvg_Result tvg_canvas_sync(Tvg_Canvas* canvas);
 
 
index 5c6fd59..55fdecc 100644 (file)
@@ -104,7 +104,7 @@ TVG_EXPORT Tvg_Result tvg_canvas_clear(Tvg_Canvas* canvas)
 
 TVG_EXPORT Tvg_Result tvg_canvas_update(Tvg_Canvas* canvas)
 {
-     return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->update();
+     return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->update(nullptr);
 }
 
 
@@ -114,9 +114,9 @@ TVG_EXPORT Tvg_Result tvg_canvas_update_paint(Tvg_Canvas* canvas, Tvg_Paint* pai
 }
 
 
-TVG_EXPORT Tvg_Result tvg_canvas_draw(Tvg_Canvas* canvas, unsigned char async)
+TVG_EXPORT Tvg_Result tvg_canvas_draw(Tvg_Canvas* canvas)
 {
-    return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->draw(async);
+    return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->draw();
 }
 
 
index d110aee..e9db461 100644 (file)
@@ -53,18 +53,12 @@ Result Canvas::clear() noexcept
 }
 
 
-Result Canvas::draw(bool async) noexcept
+Result Canvas::draw() noexcept
 {
     return IMPL->draw();
 }
 
 
-Result Canvas::update() noexcept
-{
-    return IMPL->update();
-}
-
-
 Result Canvas::update(Paint* paint) noexcept
 {
     return IMPL->update(paint);
index 5960f02..77af3d5 100644 (file)
@@ -71,11 +71,12 @@ struct Canvas::Impl
         return Result::Success;
     }
 
-    Result update()
+    Result update(Paint* paint)
     {
         if (!renderer) return Result::InsufficientCondition;
 
-        for(auto paint: paints) {
+        //Update single paint node
+        if (paint) {
             if (paint->id() == PAINT_ID_SCENE) {
                 //We know renderer type, avoid dynamic_cast for performance.
                 auto scene = static_cast<Scene*>(paint);
@@ -84,21 +85,18 @@ struct Canvas::Impl
                 auto shape = static_cast<Shape*>(paint);
                 if (!SHAPE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
             }
-        }
-        return Result::Success;
-    }
-
-    Result update(Paint* paint)
-    {
-        if (!renderer) return Result::InsufficientCondition;
-
-        if (paint->id() == PAINT_ID_SCENE) {
-            //We know renderer type, avoid dynamic_cast for performance.
-            auto scene = static_cast<Scene*>(paint);
-            if (!SCENE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
+        //Update retained all paint nodes
         } else {
-            auto shape = static_cast<Shape*>(paint);
-            if (!SHAPE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
+            for(auto paint: paints) {
+                if (paint->id() == PAINT_ID_SCENE) {
+                    //We know renderer type, avoid dynamic_cast for performance.
+                    auto scene = static_cast<Scene*>(paint);
+                    if (!SCENE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
+                } else {
+                    auto shape = static_cast<Shape*>(paint);
+                    if (!SHAPE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
+                }
+            }
         }
         return Result::Success;
     }
index 5b8b91b..6a46e97 100644 (file)
@@ -26,7 +26,7 @@ void testCapi()
     tvg_shape_fill_color(shape, 255, 255, 0, 255);\r
     tvg_canvas_push(canvas, shape);\r
 \r
-    tvg_canvas_draw(canvas, 1);\r
+    tvg_canvas_draw(canvas);\r
     tvg_canvas_sync(canvas);\r
 \r
     tvg_canvas_destroy(canvas);\r