lottieitem: apply transform for radial gradient values. 42/192942/2
authorHermet Park <hermetpark@gmail.com>
Tue, 13 Nov 2018 05:54:23 +0000 (14:54 +0900)
committerSubhransu Mohanty <sub.mohanty@samsung.com>
Tue, 13 Nov 2018 06:18:41 +0000 (06:18 +0000)
gradient and shape cooridnates must be in same space,
implement them of missing calc.

Change-Id: I21d3024718e9cb64e0072db680ec07e77b8c3d43

src/lottie/lottieitem.cpp

index db85170634845ca405165edb2bce5b65eae92469..cb36b13acf03a9eb4a30f7fbce89d61404ea3060 100644 (file)
@@ -1108,18 +1108,25 @@ void LOTDrawable::sync()
         mCNode->mGradient.end.y = e.y();
         updateGStops(mCNode.get(), mBrush.mGradient);
         break;
-     }
-    case VBrush::Type::RadialGradient:
+    }
+    case VBrush::Type::RadialGradient: {
         mCNode->mBrushType = LOTBrushType::BrushGradient;
         mCNode->mGradient.type = LOTGradientType::GradientRadial;
-        mCNode->mGradient.center.x = mBrush.mGradient->radial.cx;
-        mCNode->mGradient.center.y = mBrush.mGradient->radial.cy;
-        mCNode->mGradient.focal.x = mBrush.mGradient->radial.fx;
-        mCNode->mGradient.focal.y = mBrush.mGradient->radial.fy;
-        mCNode->mGradient.cradius = mBrush.mGradient->radial.cradius;
-        mCNode->mGradient.fradius = mBrush.mGradient->radial.fradius;
+        VPointF c = mBrush.mGradient->mMatrix.map({mBrush.mGradient->radial.cx,
+                                                   mBrush.mGradient->radial.cy});
+        VPointF f = mBrush.mGradient->mMatrix.map({mBrush.mGradient->radial.fx,
+                                                   mBrush.mGradient->radial.fy});
+        mCNode->mGradient.center.x = c.x();
+        mCNode->mGradient.center.y = c.y();
+        mCNode->mGradient.focal.x = f.x();
+        mCNode->mGradient.focal.y = f.y();
+
+        float scale = getScale(mBrush.mGradient->mMatrix);
+        mCNode->mGradient.cradius = mBrush.mGradient->radial.cradius * scale;
+        mCNode->mGradient.fradius = mBrush.mGradient->radial.fradius * scale;
         updateGStops(mCNode.get(), mBrush.mGradient);
         break;
+    }
     default:
         break;
     }