From 1092772b3a7944014f9c79fe58e4d18a9e5ae87b Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Mon, 12 Nov 2018 14:58:04 +0900 Subject: [PATCH] lottieitem: apply transform for linear gradient coordinates. gradient and shape coordinates must be in same space, gradient coordinates didn't on it. Change-Id: Ic697c066c4303c47dd382f11af2f9afb33d6a937 --- src/lottie/lottieitem.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/lottie/lottieitem.cpp b/src/lottie/lottieitem.cpp index be40d97..db85170 100644 --- a/src/lottie/lottieitem.cpp +++ b/src/lottie/lottieitem.cpp @@ -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; -- 2.34.1