diff options
author | Mike Klein <mtklein@google.com> | 2017-12-14 12:10:05 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-12-14 12:10:12 +0000 |
commit | 63789ccc03f6e63caa3e6c74fee9ad18e073cecf (patch) | |
tree | fdfdf4e8627c10eb7d579ab41140a5c2e25026b3 /src | |
parent | 32af335e7abbf562dad8f1bd21bb013610b8b021 (diff) |
Revert "Remove SkColorSpace_Base::MakeNamed, along with most uses of Adobe RGB"
This reverts commit 411b8ea74d66d08252d9b617d7e7d458604dbc2e.
Reason for revert: a couple layout tests in the roll. :/
Original change's description:
> Remove SkColorSpace_Base::MakeNamed, along with most uses of Adobe RGB
>
> Bug: skia:
> Change-Id: If5935eac48184bc8cbe4db21dac4d6033a8704e6
> Reviewed-on: https://skia-review.googlesource.com/84200
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Mike Klein <mtklein@chromium.org>
TBR=mtklein@chromium.org,brianosman@google.com
Change-Id: I6d2eb57b613035ec26da15218182c808bed364ed
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/84920
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/codec/SkRawCodec.cpp | 4 | ||||
-rw-r--r-- | src/core/SkColorSpace.cpp | 55 | ||||
-rw-r--r-- | src/core/SkColorSpace_Base.h | 9 | ||||
-rw-r--r-- | src/gpu/GrTestUtils.cpp | 14 |
4 files changed, 50 insertions, 32 deletions
diff --git a/src/codec/SkRawCodec.cpp b/src/codec/SkRawCodec.cpp index 4fda120bb8..5f3d469b5d 100644 --- a/src/codec/SkRawCodec.cpp +++ b/src/codec/SkRawCodec.cpp @@ -7,7 +7,6 @@ #include "SkCodec.h" #include "SkCodecPriv.h" -#include "SkColorSpacePriv.h" #include "SkColorData.h" #include "SkData.h" #include "SkJpegCodec.h" @@ -655,8 +654,7 @@ std::unique_ptr<SkCodec> SkRawCodec::MakeFromStream(std::unique_ptr<SkStream> st colorSpace = SkColorSpace::MakeSRGB(); break; case ::piex::PreviewImageData::kAdobeRgb: - colorSpace = SkColorSpace::MakeRGB(g2Dot2_TransferFn, - SkColorSpace::kAdobeRGB_Gamut); + colorSpace = SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kAdobeRGB_Named); break; } diff --git a/src/core/SkColorSpace.cpp b/src/core/SkColorSpace.cpp index 33f8402da3..06ec26d101 100644 --- a/src/core/SkColorSpace.cpp +++ b/src/core/SkColorSpace.cpp @@ -116,12 +116,17 @@ sk_sp<SkColorSpace> SkColorSpace_Base::MakeRGB(SkGammaNamed gammaNamed, const Sk switch (gammaNamed) { case kSRGB_SkGammaNamed: if (xyz_almost_equal(toXYZD50, gSRGB_toXYZD50)) { - return SkColorSpace::MakeSRGB(); + return SkColorSpace_Base::MakeNamed(kSRGB_Named); + } + break; + case k2Dot2Curve_SkGammaNamed: + if (xyz_almost_equal(toXYZD50, gAdobeRGB_toXYZD50)) { + return SkColorSpace_Base::MakeNamed(kAdobeRGB_Named); } break; case kLinear_SkGammaNamed: if (xyz_almost_equal(toXYZD50, gSRGB_toXYZD50)) { - return SkColorSpace::MakeSRGBLinear(); + return SkColorSpace_Base::MakeNamed(kSRGBLinear_Named); } break; case kNonStandard_SkGammaNamed: @@ -196,6 +201,10 @@ static SkColorSpace* singleton_colorspace(SkGammaNamed gamma, const float to_xyz return new SkColorSpace_XYZ(gamma, m44); } +static SkColorSpace* adobe_rgb() { + static SkColorSpace* cs = singleton_colorspace(k2Dot2Curve_SkGammaNamed, gAdobeRGB_toXYZD50); + return cs; +} static SkColorSpace* srgb() { static SkColorSpace* cs = singleton_colorspace(kSRGB_SkGammaNamed, gSRGB_toXYZD50); return cs; @@ -205,12 +214,22 @@ static SkColorSpace* srgb_linear() { return cs; } +sk_sp<SkColorSpace> SkColorSpace_Base::MakeNamed(Named named) { + switch (named) { + case kSRGB_Named: return sk_ref_sp(srgb()); + case kAdobeRGB_Named: return sk_ref_sp(adobe_rgb()); + case kSRGBLinear_Named: return sk_ref_sp(srgb_linear()); + default: break; + } + return nullptr; +} + sk_sp<SkColorSpace> SkColorSpace::MakeSRGB() { - return sk_ref_sp(srgb()); + return SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kSRGB_Named); } sk_sp<SkColorSpace> SkColorSpace::MakeSRGBLinear() { - return sk_ref_sp(srgb_linear()); + return SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kSRGBLinear_Named); } /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -271,13 +290,6 @@ enum Version { k0_Version, // Initial version, header + flags for matrix and profile }; -enum NamedColorSpace { - kSRGB_NamedColorSpace, - // No longer a singleton, preserved to support reading data from branches m65 and older - kAdobeRGB_NamedColorSpace, - kSRGBLinear_NamedColorSpace, -}; - struct ColorSpaceHeader { /** * It is only valid to set zero or one flags. @@ -310,7 +322,7 @@ struct ColorSpaceHeader { SkASSERT(k0_Version == version); header.fVersion = (uint8_t) version; - SkASSERT(named <= kSRGBLinear_NamedColorSpace); + SkASSERT(named <= SkColorSpace_Base::kSRGBLinear_Named); header.fNamed = (uint8_t) named; SkASSERT(gammaNamed <= kNonStandard_SkGammaNamed); @@ -339,13 +351,19 @@ size_t SkColorSpace::writeToMemory(void* memory) const { if (this == srgb()) { if (memory) { *((ColorSpaceHeader*) memory) = ColorSpaceHeader::Pack( - k0_Version, kSRGB_NamedColorSpace, gammaNamed, 0); + k0_Version, SkColorSpace_Base::kSRGB_Named, gammaNamed, 0); + } + return sizeof(ColorSpaceHeader); + } else if (this == adobe_rgb()) { + if (memory) { + *((ColorSpaceHeader*) memory) = ColorSpaceHeader::Pack( + k0_Version, SkColorSpace_Base::kAdobeRGB_Named, gammaNamed, 0); } return sizeof(ColorSpaceHeader); } else if (this == srgb_linear()) { if (memory) { *((ColorSpaceHeader*) memory) = ColorSpaceHeader::Pack( - k0_Version, kSRGBLinear_NamedColorSpace, gammaNamed, 0); + k0_Version, SkColorSpace_Base::kSRGBLinear_Named, gammaNamed, 0); } return sizeof(ColorSpaceHeader); } @@ -437,14 +455,7 @@ sk_sp<SkColorSpace> SkColorSpace::Deserialize(const void* data, size_t length) { data = SkTAddOffset<const void>(data, sizeof(ColorSpaceHeader)); length -= sizeof(ColorSpaceHeader); if (0 == header.fFlags) { - switch ((NamedColorSpace)header.fNamed) { - case kSRGB_NamedColorSpace: - return SkColorSpace::MakeSRGB(); - case kSRGBLinear_NamedColorSpace: - return SkColorSpace::MakeSRGBLinear(); - case kAdobeRGB_NamedColorSpace: - return SkColorSpace::MakeRGB(g2Dot2_TransferFn, SkColorSpace::kAdobeRGB_Gamut); - } + return SkColorSpace_Base::MakeNamed((SkColorSpace_Base::Named) header.fNamed); } switch ((SkGammaNamed) header.fGammaNamed) { diff --git a/src/core/SkColorSpace_Base.h b/src/core/SkColorSpace_Base.h index 1b58280ccb..c59a827a96 100644 --- a/src/core/SkColorSpace_Base.h +++ b/src/core/SkColorSpace_Base.h @@ -141,6 +141,15 @@ public: static sk_sp<SkColorSpace> MakeRGB(SkGammaNamed gammaNamed, const SkMatrix44& toXYZD50); + enum Named : uint8_t { + kSRGB_Named, + kAdobeRGB_Named, + kSRGBLinear_Named, + kSRGB_NonLinearBlending_Named, + }; + + static sk_sp<SkColorSpace> MakeNamed(Named); + protected: SkColorSpace_Base(sk_sp<SkData> profileData); diff --git a/src/gpu/GrTestUtils.cpp b/src/gpu/GrTestUtils.cpp index 4c35264643..bd190a42ee 100644 --- a/src/gpu/GrTestUtils.cpp +++ b/src/gpu/GrTestUtils.cpp @@ -309,9 +309,9 @@ sk_sp<SkColorSpace> TestColorSpace(SkRandom* random) { gOnce = true; // No color space (legacy mode) gColorSpaces[0] = nullptr; - // sRGB or color-spin sRGB + // sRGB or Adobe gColorSpaces[1] = SkColorSpace::MakeSRGB(); - gColorSpaces[2] = SkColorSpace::MakeSRGB()->makeColorSpin(); + gColorSpaces[2] = SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kAdobeRGB_Named); } return gColorSpaces[random->nextULessThan(static_cast<uint32_t>(SK_ARRAY_COUNT(gColorSpaces)))]; } @@ -322,13 +322,13 @@ sk_sp<GrColorSpaceXform> TestColorXform(SkRandom* random) { if (!gOnce) { gOnce = true; sk_sp<SkColorSpace> srgb = SkColorSpace::MakeSRGB(); - sk_sp<SkColorSpace> spin = SkColorSpace::MakeSRGB()->makeColorSpin(); + sk_sp<SkColorSpace> adobe = SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kAdobeRGB_Named); // No gamut change gXforms[0] = nullptr; - // To different gamut (with automatic transfer function) - gXforms[1] = GrColorSpaceXform::Make(srgb.get(), kSRGBA_8888_GrPixelConfig, spin.get()); - // To different gamut (with manual transfer function) - gXforms[2] = GrColorSpaceXform::Make(spin.get(), kRGBA_8888_GrPixelConfig, srgb.get()); + // To larger gamut (with automatic transfer function) + gXforms[1] = GrColorSpaceXform::Make(srgb.get(), kSRGBA_8888_GrPixelConfig, adobe.get()); + // To smaller gamut (with manual transfer function) + gXforms[2] = GrColorSpaceXform::Make(adobe.get(), kRGBA_8888_GrPixelConfig, srgb.get()); } return gXforms[random->nextULessThan(static_cast<uint32_t>(SK_ARRAY_COUNT(gXforms)))]; } |