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 df6552adc23d77327f74ac306f5bd5b5f4e3a980..d35fcdf8816d8ac5a13a487a8ddb81c240895192 100644 (file)
@@ -194,6 +194,13 @@ typedef struct LOTLayerNode {
         unsigned int    size;
     } mMaskList;
 
+    struct {
+        const float *ptPtr;
+        int          ptCount;
+        const char*  elmPtr;
+        int          elmCount;
+    } mClipPath;
+
     struct {
         struct LOTLayerNode   **ptr;
         unsigned int          size;
index 3a9bfbdf108b8c1944a867190f65c61c004c701c..886b8c00112c7aafc9601deda989b5f6cdd59ac1 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();