lottie/performance: clip out path early during rle generation. 96/193296/2
authorsubhransu mohanty <sub.mohanty@samsung.com>
Mon, 19 Nov 2018 05:41:13 +0000 (14:41 +0900)
committerHermet Park <chuneon.park@samsung.com>
Mon, 19 Nov 2018 06:38:46 +0000 (06:38 +0000)
Change-Id: I0e7c8f9b8408a56e9fd197fe53c49b0a87517608

src/lottie/lottieitem.cpp
src/vector/vdrawable.cpp
src/vector/vdrawable.h

index ee29113..7c9bdc5 100644 (file)
@@ -116,8 +116,9 @@ bool LOTCompItem::render(const lottie::Surface &surface)
      */
     mDrawableList.clear();
     mRootLayer->renderList(mDrawableList);
+    VRect clip(0, 0, surface.width(), surface.height());
     for (auto &e : mDrawableList) {
-        e->preprocess();
+        e->preprocess(clip);
     }
 
     VPainter painter(&bitmap);
index eda7352..13b0a2d 100644 (file)
@@ -2,7 +2,7 @@
 #include "vdasher.h"
 #include "vraster.h"
 
-void VDrawable::preprocess()
+void VDrawable::preprocess(const VRect &clip)
 {
     if (mFlag & (DirtyState::Path)) {
         if (mStroke.enable) {
@@ -12,10 +12,10 @@ void VDrawable::preprocess()
             }
             mRleTask = VRaster::generateStrokeInfo(
                 std::move(mPath), std::move(mRle), mStroke.cap, mStroke.join,
-                mStroke.width, mStroke.meterLimit);
+                mStroke.width, mStroke.meterLimit, clip);
         } else {
             mRleTask = VRaster::generateFillInfo(
-                std::move(mPath), std::move(mRle), mFillRule);
+                std::move(mPath), std::move(mRle), mFillRule, clip);
         }
         mRle = VRle();
         mFlag &= ~DirtyFlag(DirtyState::Path);
index c24bee4..9d157f6 100644 (file)
@@ -26,7 +26,7 @@ public:
     void setStrokeInfo(CapStyle cap, JoinStyle join, float meterLimit,
                        float strokeWidth);
     void setDashInfo(float *array, uint size);
-    void preprocess();
+    void preprocess(const VRect &clip);
     VRle rle();
 
 public: