From 63789ccc03f6e63caa3e6c74fee9ad18e073cecf Mon Sep 17 00:00:00 2001 From: Mike Klein Date: Thu, 14 Dec 2017 12:10:05 +0000 Subject: 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 > Reviewed-by: Mike Klein 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 Commit-Queue: Mike Klein --- tests/ColorSpaceTest.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) (limited to 'tests/ColorSpaceTest.cpp') 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 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 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 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 monitorData = GetResourceAsData("icc_profiles/HP_ZR30w.icc"); @@ -220,6 +264,7 @@ DEF_TEST(ColorSpace_Serialize, r) { DEF_TEST(ColorSpace_Equals, r) { sk_sp srgb = SkColorSpace::MakeSRGB(); + sk_sp adobe = SkColorSpace_Base::MakeNamed(SkColorSpace_Base::kAdobeRGB_Named); sk_sp data = GetResourceAsData("icc_profiles/HP_ZR30w.icc"); sk_sp 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; -- cgit v1.2.3