aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects/gradients/SkGradientShader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/effects/gradients/SkGradientShader.cpp')
-rw-r--r--src/effects/gradients/SkGradientShader.cpp12
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;