Index: src/effects/gradients/SkTwoPointConicalGradient.cpp |
diff --git a/src/effects/gradients/SkTwoPointConicalGradient.cpp b/src/effects/gradients/SkTwoPointConicalGradient.cpp |
index ffc64572862f33272da0c65cb6336be033507ee0..1e6a0d81268a28c30e630a3be37039510e761aea 100644 |
--- a/src/effects/gradients/SkTwoPointConicalGradient.cpp |
+++ b/src/effects/gradients/SkTwoPointConicalGradient.cpp |
@@ -95,8 +95,8 @@ void TwoPtRadial::setup(SkScalar fx, SkScalar fy, SkScalar dfx, SkScalar dfy) { |
SkFixed TwoPtRadial::nextT() { |
float roots[2]; |
- float C = sqr(fRelX) + sqr(fRelY) - fRec.fRadius2; |
- int countRoots = find_quad_roots(fRec.fA, fB, C, roots, fRec.fFlipped); |
+ float C = sqr(fRelX) + sqr(fRelY) - fRadius2; |
+ int countRoots = find_quad_roots(fA, fB, C, roots, fFlipped); |
fRelX += fIncX; |
fRelY += fIncY; |
@@ -306,14 +306,19 @@ SkShader::BitmapType SkTwoPointConicalGradient::asABitmap( |
return kTwoPointConical_BitmapType; |
} |
+// Returns the original non-sorted version of the gradient |
SkShader::GradientType SkTwoPointConicalGradient::asAGradient( |
GradientInfo* info) const { |
if (info) { |
- commonAsAGradient(info); |
+ commonAsAGradient(info, fFlippedGrad); |
info->fPoint[0] = fCenter1; |
info->fPoint[1] = fCenter2; |
info->fRadius[0] = fRadius1; |
info->fRadius[1] = fRadius2; |
+ if (fFlippedGrad) { |
+ SkTSwap(info->fPoint[0], info->fPoint[1]); |
+ SkTSwap(info->fRadius[0], info->fRadius[1]); |
+ } |
} |
return kConical_GradientType; |
} |