rlottie: Use opacity value when rendering gradient. 62/201462/1 submit/tizen/20190318.043137 submit/tizen/20190318.043555 submit/tizen/20190318.114709 submit/tizen/20190319.041006
authorsubhransu mohanty <sub.mohanty@samsung.com>
Thu, 14 Mar 2019 08:34:03 +0000 (17:34 +0900)
committersubhransu mohanty <sub.mohanty@samsung.com>
Thu, 14 Mar 2019 09:51:45 +0000 (18:51 +0900)
Change-Id: I73d663bf9236ac7899eb6d781cf7cfbb9f9f9728

src/lottie/lottieitem.cpp
src/lottie/lottieitem.h

index 21a2e13..49e029b 100644 (file)
@@ -1172,6 +1172,7 @@ LOTGFillItem::LOTGFillItem(LOTGFillData *data)
 
 void LOTGFillItem::updateContent(int frameNo)
 {
+    mAlpha = mData->opacity(frameNo);
     mData->update(mGradient, frameNo);
     mGradient->mMatrix = static_cast<LOTContentGroupItem *>(parent())->matrix();
     mFillRule = mData->fillRule();
@@ -1179,7 +1180,7 @@ void LOTGFillItem::updateContent(int frameNo)
 
 void LOTGFillItem::updateRenderNode()
 {
-    mGradient->setAlpha(parentAlpha());
+    mGradient->setAlpha(mAlpha * parentAlpha());
     mDrawable->setBrush(VBrush(mGradient.get()));
     mDrawable->setFillRule(mFillRule);
 }
@@ -1245,6 +1246,7 @@ LOTGStrokeItem::LOTGStrokeItem(LOTGStrokeData *data)
 
 void LOTGStrokeItem::updateContent(int frameNo)
 {
+    mAlpha = mData->opacity(frameNo);
     mData->update(mGradient, frameNo);
     mGradient->mMatrix = static_cast<LOTContentGroupItem *>(parent())->matrix();
     mCap = mData->capStyle();
@@ -1259,7 +1261,7 @@ void LOTGStrokeItem::updateContent(int frameNo)
 void LOTGStrokeItem::updateRenderNode()
 {
     float scale = getScale(mGradient->mMatrix);
-    mGradient->setAlpha(parentAlpha());
+    mGradient->setAlpha(mAlpha * parentAlpha());
     mDrawable->setBrush(VBrush(mGradient.get()));
     mDrawable->setStrokeInfo(mCap, mJoin, mMiterLimit,
                             mWidth * scale);
index 9eda6d1..bdf1362 100644 (file)
@@ -413,6 +413,7 @@ protected:
 private:
    LOTGFillData                 *mData;
    std::unique_ptr<VGradient>    mGradient;
+   float                         mAlpha{1.0};
    FillRule                      mFillRule{FillRule::Winding};
 };
 
@@ -448,6 +449,7 @@ private:
    JoinStyle                     mJoin{JoinStyle::Miter};
    float                         mMiterLimit{0};
    VColor                        mColor;
+   float                         mAlpha{1.0};
    float                         mWidth{0};
    float                         mDashArray[6];
    int                           mDashArraySize{0};