example, renderer: implements viewport, save and restore transform matrix function.
authorTaehyub Kim <taehyub.kim@samsung.com>
Wed, 17 Mar 2021 08:55:03 +0000 (17:55 +0900)
committerHermet Park <hermetpark@gmail.com>
Wed, 17 Mar 2021 10:01:21 +0000 (19:01 +0900)
example/rive_viewer.cpp
src/renderer/include/thorvg_renderer.hpp
src/renderer/src/thorvg_renderer.cpp

index 76eb22b..4299da8 100644 (file)
@@ -142,6 +142,10 @@ Eina_Bool animationLoop(void *data)
 
        rive::TvgRenderer renderer(renderCanvas);
        renderer.save();
+       renderer.align(rive::Fit::contain,
+                      rive::Alignment::center,
+                      rive::AABB(0, 0, WIDTH, HEIGHT),
+                      artboard->bounds());
        artboard->draw(&renderer);
        renderer.restore();
     }
index 267f22a..32bda53 100644 (file)
@@ -116,6 +116,7 @@ namespace rive
    private:
       Canvas* m_Canvas;
       Mat2D m_Transform;
+      Mat2D m_SaveTransform;
 
    public:
       TvgRenderer(Canvas* canvas) : m_Canvas(canvas) {}
index fd7d609..d0eb3f3 100644 (file)
@@ -248,17 +248,17 @@ void TvgLinearGradientBuilder::make(TvgPaint* paint)
 
 void TvgRenderer::save()
 {
-
+   m_SaveTransform = m_Transform;
 }
 
 void TvgRenderer::restore()
 {
-
+   m_Transform = m_SaveTransform;
 }
 
 void TvgRenderer::transform(const Mat2D& transform)
 {
-   m_Transform = transform;
+   m_Transform = m_Transform * transform;
 }
 
 void TvgRenderer::drawPath(RenderPath* path, RenderPaint* paint)