renderer: fix wrong layering order. (#28)
authorHermet Park <chuneon.park@samsung.com>
Tue, 30 Mar 2021 09:05:23 +0000 (18:05 +0900)
committerTaehyub Kim <taehyub.kim@samsung.com>
Wed, 31 Mar 2021 08:20:30 +0000 (17:20 +0900)
we can push paint nodes in order for guarantee the layering,
instead canvas needs to clear it every frames.

example/rive_viewer.cpp
src/renderer/tvg_renderer.cpp

index 117a3db..0ec9166 100644 (file)
@@ -119,6 +119,8 @@ static std::vector<std::string> riveFiles(const std::string &dirName)
 
 Eina_Bool animationLoop(void *data)
 {
+    canvas->clear();
+
     double currentTime = ecore_time_get();
     float elapsed = currentTime - lastTime;
     lastTime = currentTime;
index 15fb08c..45d7005 100644 (file)
@@ -362,18 +362,10 @@ void TvgRenderer::drawPath(RenderPath* path, RenderPaint* paint)
    }
 
    shape->transform({m_Transform[0], m_Transform[2], m_Transform[4], m_Transform[1], m_Transform[3], m_Transform[5], 0, 0, 1});
-
-   if (renderPath->onCanvas())
-   {
-      m_Canvas->update(shape);
-   }
-   else
-   {
-      m_Canvas->push(unique_ptr<Shape>(shape));
-      renderPath->onCanvas(true);
-   }
+   m_Canvas->push(unique_ptr<Paint>(shape->duplicate()));
 }
 
+
 void TvgRenderer::clipPath(RenderPath* path)
 {
    //Note: ClipPath transform matrix is calculated by transfrom matrix in addRenderPath function