aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/ColorSpaceTest.cpp
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 /tests/ColorSpaceTest.cpp
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 'tests/ColorSpaceTest.cpp')
-rw-r--r--tests/ColorSpaceTest.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/ColorSpaceTest.cpp b/tests/ColorSpaceTest.cpp
index ff784baf0a..5aa9f17e94 100644
--- a/tests/ColorSpaceTest.cpp
+++ b/tests/ColorSpaceTest.cpp
@@ -174,6 +174,49 @@ DEF_TEST(ColorSpaceSRGBLinearCompare, r) {
REPORTER_ASSERT(r, strangeColorSpace != namedColorSpace);
}
+DEF_TEST(ColorSpaceAdobeCompare, r) {
+ // Create an sRGB color space by name
+ sk_sp<SkColorSpace> namedColorSpace =
+ SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kAdobeRGB_Named);
+
+ // Create an sRGB color space by value
+ SkMatrix44 adobeToxyzD50(SkMatrix44::kUninitialized_Constructor);
+ adobeToxyzD50.set3x3RowMajorf(gAdobeRGB_toXYZD50);
+
+ SkColorSpaceTransferFn fn;
+ fn.fA = 1.0f;
+ fn.fB = 0.0f;
+ fn.fC = 0.0f;
+ fn.fD = 0.0f;
+ fn.fE = 0.0f;
+ fn.fF = 0.0f;
+ fn.fG = 2.2f;
+ sk_sp<SkColorSpace> rgbColorSpace = SkColorSpace::MakeRGB(fn, adobeToxyzD50);
+ REPORTER_ASSERT(r, rgbColorSpace == namedColorSpace);
+}
+
+DEF_TEST(ColorSpace_Named, r) {
+ const struct {
+ SkColorSpace_Base::Named fNamed;
+ SkGammaNamed fExpectedGamma;
+ } recs[] {
+ { SkColorSpace_Base::kSRGB_Named, kSRGB_SkGammaNamed },
+ { SkColorSpace_Base::kAdobeRGB_Named, k2Dot2Curve_SkGammaNamed },
+ { SkColorSpace_Base::kSRGBLinear_Named, kLinear_SkGammaNamed },
+ };
+
+ for (auto rec : recs) {
+ auto cs = SkColorSpace_Base::MakeNamed(rec.fNamed);
+ REPORTER_ASSERT(r, cs);
+ if (cs) {
+ REPORTER_ASSERT(r, rec.fExpectedGamma == cs->gammaNamed());
+ }
+ }
+
+ SkImageInfo info = SkImageInfo::MakeS32(10, 10, kPremul_SkAlphaType);
+ REPORTER_ASSERT(r, info.gammaCloseToSRGB());
+}
+
static void test_serialize(skiatest::Reporter* r, SkColorSpace* space, bool isNamed) {
sk_sp<SkData> data1 = space->serialize();
@@ -195,6 +238,7 @@ static void test_serialize(skiatest::Reporter* r, SkColorSpace* space, bool isNa
DEF_TEST(ColorSpace_Serialize, r) {
test_serialize(r, SkColorSpace::MakeSRGB().get(), true);
+ test_serialize(r, SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kAdobeRGB_Named).get(), true);
test_serialize(r, SkColorSpace::MakeSRGBLinear().get(), true);
sk_sp<SkData> monitorData = GetResourceAsData("icc_profiles/HP_ZR30w.icc");
@@ -220,6 +264,7 @@ DEF_TEST(ColorSpace_Serialize, r) {
DEF_TEST(ColorSpace_Equals, r) {
sk_sp<SkColorSpace> srgb = SkColorSpace::MakeSRGB();
+ sk_sp<SkColorSpace> adobe = SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kAdobeRGB_Named);
sk_sp<SkData> data = GetResourceAsData("icc_profiles/HP_ZR30w.icc");
sk_sp<SkColorSpace> z30 = SkColorSpace::MakeICC(data->data(), data->size());
data = GetResourceAsData("icc_profiles/HP_Z32x.icc");
@@ -242,6 +287,7 @@ DEF_TEST(ColorSpace_Equals, r) {
REPORTER_ASSERT(r, SkColorSpace::Equals(nullptr, nullptr));
REPORTER_ASSERT(r, SkColorSpace::Equals(srgb.get(), srgb.get()));
+ REPORTER_ASSERT(r, SkColorSpace::Equals(adobe.get(), adobe.get()));
REPORTER_ASSERT(r, SkColorSpace::Equals(z30.get(), z30.get()));
REPORTER_ASSERT(r, SkColorSpace::Equals(z32.get(), z32.get()));
REPORTER_ASSERT(r, SkColorSpace::Equals(upperLeft.get(), upperLeft.get()));
@@ -250,11 +296,13 @@ DEF_TEST(ColorSpace_Equals, r) {
REPORTER_ASSERT(r, !SkColorSpace::Equals(nullptr, srgb.get()));
REPORTER_ASSERT(r, !SkColorSpace::Equals(srgb.get(), nullptr));
+ REPORTER_ASSERT(r, !SkColorSpace::Equals(adobe.get(), srgb.get()));
REPORTER_ASSERT(r, !SkColorSpace::Equals(z30.get(), srgb.get()));
REPORTER_ASSERT(r, !SkColorSpace::Equals(z32.get(), z30.get()));
REPORTER_ASSERT(r, !SkColorSpace::Equals(upperLeft.get(), srgb.get()));
REPORTER_ASSERT(r, !SkColorSpace::Equals(upperLeft.get(), upperRight.get()));
REPORTER_ASSERT(r, !SkColorSpace::Equals(z30.get(), upperRight.get()));
+ REPORTER_ASSERT(r, !SkColorSpace::Equals(upperRight.get(), adobe.get()));
REPORTER_ASSERT(r, !SkColorSpace::Equals(z30.get(), rgb4.get()));
REPORTER_ASSERT(r, !SkColorSpace::Equals(srgb.get(), rgb4.get()));
}
@@ -305,6 +353,27 @@ DEF_TEST(ColorSpace_Primaries, r) {
srgbToXYZ);
REPORTER_ASSERT(r, SkColorSpace::MakeSRGB() == space);
+ // AdobeRGB primaries (D65)
+ SkColorSpacePrimaries adobe;
+ adobe.fRX = 0.64f;
+ adobe.fRY = 0.33f;
+ adobe.fGX = 0.21f;
+ adobe.fGY = 0.71f;
+ adobe.fBX = 0.15f;
+ adobe.fBY = 0.06f;
+ adobe.fWX = 0.3127f;
+ adobe.fWY = 0.3290f;
+ SkMatrix44 adobeToXYZ(SkMatrix44::kUninitialized_Constructor);
+ result = adobe.toXYZD50(&adobeToXYZ);
+ REPORTER_ASSERT(r, result);
+
+ SkColorSpaceTransferFn fn;
+ fn.fA = 1.0f;
+ fn.fB = fn.fC = fn.fD = fn.fE = fn.fF = 0.0f;
+ fn.fG = 2.2f;
+ space = SkColorSpace::MakeRGB(fn, adobeToXYZ);
+ REPORTER_ASSERT(r, SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kAdobeRGB_Named) == space);
+
// ProPhoto (D50)
SkColorSpacePrimaries proPhoto;
proPhoto.fRX = 0.7347f;