diff options
Diffstat (limited to 'src/effects/gradients/SkGradientShader.cpp')
-rw-r--r-- | src/effects/gradients/SkGradientShader.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp index 7b91a60f75..03a2db0995 100644 --- a/src/effects/gradients/SkGradientShader.cpp +++ b/src/effects/gradients/SkGradientShader.cpp @@ -944,6 +944,9 @@ sk_sp<SkShader> SkGradientShader::MakeLinear(const SkPoint pts[2], if (1 == colorCount) { return SkShader::MakeColorShader(colors[0], std::move(colorSpace)); } + if (localMatrix && !localMatrix->invert(nullptr)) { + return nullptr; + } ColorStopOptimizer opt(colors, pos, colorCount, mode); @@ -980,6 +983,9 @@ sk_sp<SkShader> SkGradientShader::MakeRadial(const SkPoint& center, SkScalar rad if (1 == colorCount) { return SkShader::MakeColorShader(colors[0], std::move(colorSpace)); } + if (localMatrix && !localMatrix->invert(nullptr)) { + return nullptr; + } ColorStopOptimizer opt(colors, pos, colorCount, mode); @@ -1026,6 +1032,9 @@ sk_sp<SkShader> SkGradientShader::MakeTwoPointConical(const SkPoint& start, return SkShader::MakeEmptyShader(); } } + if (localMatrix && !localMatrix->invert(nullptr)) { + return nullptr; + } EXPAND_1_COLOR(colorCount); ColorStopOptimizer opt(colors, pos, colorCount, mode); @@ -1086,6 +1095,9 @@ sk_sp<SkShader> SkGradientShader::MakeSweep(SkScalar cx, SkScalar cy, if (1 == colorCount) { return SkShader::MakeColorShader(colors[0], std::move(colorSpace)); } + if (localMatrix && !localMatrix->invert(nullptr)) { + return nullptr; + } auto mode = SkShader::kClamp_TileMode; |