aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkColorSpaceXformer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/SkColorSpaceXformer.cpp')
-rw-r--r--src/core/SkColorSpaceXformer.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/core/SkColorSpaceXformer.cpp b/src/core/SkColorSpaceXformer.cpp
index 38e717de0d..fe66e74c79 100644
--- a/src/core/SkColorSpaceXformer.cpp
+++ b/src/core/SkColorSpaceXformer.cpp
@@ -71,7 +71,8 @@ SkColor SkColorSpaceXformer::apply(SkColor srgb) {
sk_sp<SkShader> SkColorSpaceXformer::apply(const SkShader* shader) {
SkColor color;
if (shader->isConstant() && shader->asLuminanceColor(&color)) {
- return SkShader::MakeColorShader(this->apply(color));
+ return SkShader::MakeColorShader(this->apply(color))
+ ->makeWithLocalMatrix(shader->getLocalMatrix());
}
SkShader::TileMode xy[2];
@@ -85,7 +86,8 @@ sk_sp<SkShader> SkColorSpaceXformer::apply(const SkShader* shader) {
auto A = this->apply(compose.fShaderA),
B = this->apply(compose.fShaderB);
if (A && B) {
- return SkShader::MakeComposeShader(std::move(A), std::move(B), compose.fBlendMode);
+ return SkShader::MakeComposeShader(std::move(A), std::move(B), compose.fBlendMode)
+ ->makeWithLocalMatrix(shader->getLocalMatrix());
}
}
@@ -147,7 +149,7 @@ sk_sp<SkShader> SkColorSpaceXformer::apply(const SkShader* shader) {
}
}
- return nullptr;
+ return sk_ref_sp(const_cast<SkShader*>(shader));
}
const SkPaint& SkColorSpaceXformer::apply(const SkPaint& src) {