From 9dad8b7d6fb37961e6beb062c1a123b61230da8e Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Tue, 13 Nov 2018 14:54:23 +0900 Subject: [PATCH] lottieitem: apply transform for radial gradient values. gradient and shape cooridnates must be in same space, implement them of missing calc. Change-Id: I21d3024718e9cb64e0072db680ec07e77b8c3d43 --- src/lottie/lottieitem.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/lottie/lottieitem.cpp b/src/lottie/lottieitem.cpp index db85170..cb36b13 100644 --- a/src/lottie/lottieitem.cpp +++ b/src/lottie/lottieitem.cpp @@ -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; } -- 2.34.1