| Index: src/effects/gradients/SkTwoPointConicalGradient.cpp
|
| diff --git a/src/effects/gradients/SkTwoPointConicalGradient.cpp b/src/effects/gradients/SkTwoPointConicalGradient.cpp
|
| index 37b49f0d475a22c9eecfb2027649e32e8b475587..7cb094391a60a46a1b3c6bae4f7610666216385d 100644
|
| --- a/src/effects/gradients/SkTwoPointConicalGradient.cpp
|
| +++ b/src/effects/gradients/SkTwoPointConicalGradient.cpp
|
| @@ -74,6 +74,8 @@ void TwoPtRadial::init(const SkPoint& center0, SkScalar rad0,
|
| fA = sqr(fDCenterX) + sqr(fDCenterY) - sqr(fDRadius);
|
| fRadius2 = sqr(fRadius);
|
| fRDR = fRadius * fDRadius;
|
| +
|
| + fConeFillsPlane = rad0 != rad1 && SkMaxScalar(rad0, rad1) > SkPoint::Distance(center0, center1);
|
| }
|
|
|
| void TwoPtRadial::setup(SkScalar fx, SkScalar fy, SkScalar dfx, SkScalar dfy) {
|
| @@ -189,10 +191,7 @@ SkTwoPointConicalGradient::SkTwoPointConicalGradient(
|
| }
|
|
|
| bool SkTwoPointConicalGradient::isOpaque() const {
|
| - // Because areas outside the cone are left untouched, we cannot treat the
|
| - // shader as opaque even if the gradient itself is opaque.
|
| - // TODO(junov): Compute whether the cone fills the plane crbug.com/222380
|
| - return false;
|
| + return INHERITED::isOpaque() && this->fRec.fConeFillsPlane;
|
| }
|
|
|
| void SkTwoPointConicalGradient::shadeSpan(int x, int y, SkPMColor* dstCParam,
|
|
|