lottie/capi: updated cliper info in layernode. 61/196661/1
authorsubhransu mohanty <sub.mohanty@samsung.com>
Thu, 3 Jan 2019 07:57:50 +0000 (16:57 +0900)
committersubhransu mohanty <sub.mohanty@samsung.com>
Thu, 3 Jan 2019 08:00:15 +0000 (17:00 +0900)
Change-Id: I338dc65c6ccf2a1952f2c457ba9168faa242e08c

inc/lottiecommon.h
src/lottie/lottieitem.cpp

index df6552a..d35fcdf 100644 (file)
@@ -195,6 +195,13 @@ typedef struct LOTLayerNode {
     } mMaskList;
 
     struct {
+        const float *ptPtr;
+        int          ptCount;
+        const char*  elmPtr;
+        int          elmCount;
+    } mClipPath;
+
+    struct {
         struct LOTLayerNode   **ptr;
         unsigned int          size;
     } mLayerList;
index 3a9bfbd..886b8c0 100644 (file)
@@ -188,6 +188,10 @@ void LOTLayerItem::buildLayerNode()
         mLayerCNode->mNodeList.size = 0;
         mLayerCNode->mMatte = MatteNone;
         mLayerCNode->mVisible = 0;
+        mLayerCNode->mClipPath.ptPtr = nullptr;
+        mLayerCNode->mClipPath.elmPtr = nullptr;
+        mLayerCNode->mClipPath.ptCount = 0;
+        mLayerCNode->mClipPath.elmCount = 0;
     }
     mLayerCNode->mVisible = visible();
     // update matte
@@ -477,6 +481,16 @@ void LOTCompLayerItem::updateStaticProperty()
 void LOTCompLayerItem::buildLayerNode()
 {
     LOTLayerItem::buildLayerNode();
+    if (mClipper) {
+        const std::vector<VPath::Element> &elm = mClipper->mPath.elements();
+        const std::vector<VPointF> &       pts = mClipper->mPath.points();
+        const float *ptPtr = reinterpret_cast<const float *>(pts.data());
+        const char * elmPtr = reinterpret_cast<const char *>(elm.data());
+        layerNode()->mClipPath.ptPtr = ptPtr;
+        layerNode()->mClipPath.elmPtr = elmPtr;
+        layerNode()->mClipPath.ptCount = 2 * pts.size();
+        layerNode()->mClipPath.elmCount = elm.size();
+    }
     if (mLayers.size() != mLayersCNode.size()) {
         for (const auto &layer : mLayers) {
             layer->buildLayerNode();