diff options
author | Brian Osman <brianosman@google.com> | 2016-11-07 09:42:37 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2016-11-07 15:16:50 +0000 |
commit | 12313f072b3563d652a789e28140f70b48e57e03 (patch) | |
tree | 84986d857081b919315f69d56d9d2436a1b1b3f5 /src/core/SkColorSpace_XYZ.cpp | |
parent | 43513543de102500121afb9222dfdd8f35c50ca7 (diff) |
Add/promote gamma helpers to SkColorSpace_Base
When decoding images with strange transfer functions, we need to
pick an "equivalent" drawable format and color space. These help
when doing that.
Our default answer is to use F16 linear, but some GPUs may not
be able to draw that, in which case we'll fall back to sRGB 8888.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4453
Change-Id: I7f7342423d2a57fb45c965e1a023d255cdafedee
Reviewed-on: https://skia-review.googlesource.com/4453
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Matt Sarett <msarett@google.com>
Diffstat (limited to 'src/core/SkColorSpace_XYZ.cpp')
-rw-r--r-- | src/core/SkColorSpace_XYZ.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/core/SkColorSpace_XYZ.cpp b/src/core/SkColorSpace_XYZ.cpp index 35d3d29364..f99702d19b 100644 --- a/src/core/SkColorSpace_XYZ.cpp +++ b/src/core/SkColorSpace_XYZ.cpp @@ -63,6 +63,13 @@ sk_sp<SkColorSpace> SkColorSpace_XYZ::makeLinearGamma() { return SkColorSpace_Base::MakeRGB(kLinear_SkGammaNamed, fToXYZD50); } +sk_sp<SkColorSpace> SkColorSpace_XYZ::makeSRGBGamma() { + if (this->gammaCloseToSRGB()) { + return sk_ref_sp(this); + } + return SkColorSpace_Base::MakeRGB(kSRGB_SkGammaNamed, fToXYZD50); +} + void SkColorSpace_XYZ::toDstGammaTables(const uint8_t* tables[3], sk_sp<SkData>* storage, int numTables) const { fToDstGammaOnce([this, numTables] { |