diff options
author | 2018-07-25 13:05:17 -0400 | |
---|---|---|
committer | 2018-07-25 23:51:15 +0000 | |
commit | e28a6b55dfbcd510d86cca39a167d179b81e4f4c (patch) | |
tree | 7d9151d55b67f749fd701b7c8fe52b6f922988d3 /src/shaders | |
parent | 68300c270916b2740fccdbe6c6dce8f085e83316 (diff) |
add explicit accessor for sRGB singleton colorspaces
SkColorSpace::MakeSRGB().get() is scary, and causes more ref/unref
pairs than strictly necessary for these singletons.
This time the implementation is still in SkColorSpace.cpp,
so these should really work as singletons.
Change-Id: I40f2942c8dcde3040663a04c4f5330aca90868ae
Reviewed-on: https://skia-review.googlesource.com/143305
Auto-Submit: Mike Klein <mtklein@chromium.org>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/shaders')
-rw-r--r-- | src/shaders/SkImageShader.cpp | 3 | ||||
-rw-r--r-- | src/shaders/gradients/SkGradientShader.cpp | 9 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/shaders/SkImageShader.cpp b/src/shaders/SkImageShader.cpp index 938b7d6da8..9ccd5cd4cf 100644 --- a/src/shaders/SkImageShader.cpp +++ b/src/shaders/SkImageShader.cpp @@ -9,6 +9,7 @@ #include "SkBitmapController.h" #include "SkBitmapProcShader.h" #include "SkBitmapProvider.h" +#include "SkColorSpacePriv.h" #include "SkColorSpaceXformSteps.h" #include "SkEmptyShader.h" #include "SkImage_Base.h" @@ -402,7 +403,7 @@ bool SkImageShader::onAppendStages(const StageRec& rec) const { if (!srcCS || info.colorType() == kAlpha_8_SkColorType) { // We treat untagged images as sRGB. // A8 images get their r,g,b from the paint color, so they're also sRGB. - srcCS = SkColorSpace::MakeSRGB().get(); + srcCS = sk_srgb_singleton(); } alloc->make<SkColorSpaceXformSteps>(srcCS, kPremul_SkAlphaType, rec.fDstCS) ->apply(p); diff --git a/src/shaders/gradients/SkGradientShader.cpp b/src/shaders/gradients/SkGradientShader.cpp index ff22cc598a..8536dd82eb 100644 --- a/src/shaders/gradients/SkGradientShader.cpp +++ b/src/shaders/gradients/SkGradientShader.cpp @@ -8,6 +8,7 @@ #include <algorithm> #include "Sk4fLinearGradient.h" #include "SkColorSpace_XYZ.h" +#include "SkColorSpacePriv.h" #include "SkColorSpaceXformer.h" #include "SkFlattenablePriv.h" #include "SkFloatBits.h" @@ -462,14 +463,14 @@ SkColor4fXformer::SkColor4fXformer(const SkColor4f* colors, int colorCount, // Transform all of the colors to destination color space fColors = colors; - // Treat null destinations as sRGB (safe because sRGB is a global singleton) + // Treat null destinations as sRGB. if (!dst) { - dst = SkColorSpace::MakeSRGB().get(); + dst = sk_srgb_singleton(); } - // Treat null sources as sRGB (safe because sRGB is a global singleton) + // Treat null sources as sRGB. if (!src) { - src = SkColorSpace::MakeSRGB().get(); + src = sk_srgb_singleton(); } if (!SkColorSpace::Equals(src, dst)) { |