aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@google.com>2017-12-14 12:10:05 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-14 12:10:12 +0000
commit63789ccc03f6e63caa3e6c74fee9ad18e073cecf (patch)
treefdfdf4e8627c10eb7d579ab41140a5c2e25026b3 /src
parent32af335e7abbf562dad8f1bd21bb013610b8b021 (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.cpp4
-rw-r--r--src/core/SkColorSpace.cpp55
-rw-r--r--src/core/SkColorSpace_Base.h9
-rw-r--r--src/gpu/GrTestUtils.cpp14
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)))];
}