aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/shaders
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2018-07-25 13:05:17 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-25 23:51:15 +0000
commite28a6b55dfbcd510d86cca39a167d179b81e4f4c (patch)
tree7d9151d55b67f749fd701b7c8fe52b6f922988d3 /src/shaders
parent68300c270916b2740fccdbe6c6dce8f085e83316 (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.cpp3
-rw-r--r--src/shaders/gradients/SkGradientShader.cpp9
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)) {