lottieitem: apply transform for linear gradient coordinates. 60/192860/1
authorHermet Park <hermetpark@gmail.com>
Mon, 12 Nov 2018 05:58:04 +0000 (14:58 +0900)
committerHermet Park <hermetpark@gmail.com>
Mon, 12 Nov 2018 05:58:04 +0000 (14:58 +0900)
gradient and shape coordinates must be in same space,
gradient coordinates didn't on it.

Change-Id: Ic697c066c4303c47dd382f11af2f9afb33d6a937

src/lottie/lottieitem.cpp

index be40d97..db85170 100644 (file)
@@ -1095,15 +1095,20 @@ void LOTDrawable::sync()
         mCNode->mColor.b = mBrush.mColor.b;
         mCNode->mColor.a = mBrush.mColor.a;
         break;
-    case VBrush::Type::LinearGradient:
+    case VBrush::Type::LinearGradient: {
         mCNode->mBrushType = LOTBrushType::BrushGradient;
         mCNode->mGradient.type = LOTGradientType::GradientLinear;
-        mCNode->mGradient.start.x = mBrush.mGradient->linear.x1;
-        mCNode->mGradient.start.y = mBrush.mGradient->linear.y1;
-        mCNode->mGradient.end.x = mBrush.mGradient->linear.x2;
-        mCNode->mGradient.end.y = mBrush.mGradient->linear.y2;
+        VPointF s = mBrush.mGradient->mMatrix.map({mBrush.mGradient->linear.x1,
+                                                   mBrush.mGradient->linear.y1});
+        VPointF e = mBrush.mGradient->mMatrix.map({mBrush.mGradient->linear.x2,
+                                                   mBrush.mGradient->linear.y2});
+        mCNode->mGradient.start.x = s.x();
+        mCNode->mGradient.start.y = s.y();
+        mCNode->mGradient.end.x = e.x();
+        mCNode->mGradient.end.y = e.y();
         updateGStops(mCNode.get(), mBrush.mGradient);
         break;
+     }
     case VBrush::Type::RadialGradient:
         mCNode->mBrushType = LOTBrushType::BrushGradient;
         mCNode->mGradient.type = LOTGradientType::GradientRadial;