diff options
Diffstat (limited to 'src/gpu')
-rw-r--r-- | src/gpu/GrColorSpaceXform.cpp | 9 | ||||
-rw-r--r-- | src/gpu/GrColorSpaceXform.h | 3 | ||||
-rw-r--r-- | src/gpu/SkGr.cpp | 2 |
3 files changed, 10 insertions, 4 deletions
diff --git a/src/gpu/GrColorSpaceXform.cpp b/src/gpu/GrColorSpaceXform.cpp index 0e98a87f6c..e43ccdc14d 100644 --- a/src/gpu/GrColorSpaceXform.cpp +++ b/src/gpu/GrColorSpaceXform.cpp @@ -121,11 +121,16 @@ bool GrColorSpaceXform::Equals(const GrColorSpaceXform* a, const GrColorSpaceXfo return a->fSrcToDst == b->fSrcToDst; } -GrColor4f GrColorSpaceXform::apply(const GrColor4f& srcColor) { +GrColor4f GrColorSpaceXform::unclampedXform(const GrColor4f& srcColor) { GrColor4f result; fSrcToDst.mapScalars(srcColor.fRGBA, result.fRGBA); - // We always operate on unpremul colors, so clamp to [0,1]. + return result; +} + +GrColor4f GrColorSpaceXform::clampedXform(const GrColor4f& srcColor) { + GrColor4f result = this->unclampedXform(srcColor); for (int i = 0; i < 4; ++i) { + // We always operate on unpremul colors, so clamp to [0,1]. result.fRGBA[i] = SkTPin(result.fRGBA[i], 0.0f, 1.0f); } return result; diff --git a/src/gpu/GrColorSpaceXform.h b/src/gpu/GrColorSpaceXform.h index b871563387..3f03e5652d 100644 --- a/src/gpu/GrColorSpaceXform.h +++ b/src/gpu/GrColorSpaceXform.h @@ -37,7 +37,8 @@ public: static bool Equals(const GrColorSpaceXform* a, const GrColorSpaceXform* b); - GrColor4f apply(const GrColor4f& srcColor); + GrColor4f unclampedXform(const GrColor4f& srcColor); + GrColor4f clampedXform(const GrColor4f& srcColor); private: SkMatrix44 fSrcToDst; diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp index 0c065f9c74..2d09f00719 100644 --- a/src/gpu/SkGr.cpp +++ b/src/gpu/SkGr.cpp @@ -342,7 +342,7 @@ GrColor4f SkColorToUnpremulGrColor4f(SkColor c, SkColorSpace* dstColorSpace, } if (gamutXform) { - color = gamutXform->apply(color); + color = gamutXform->clampedXform(color); } return color; |