diff options
author | msarett <msarett@google.com> | 2016-06-16 07:37:41 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-06-16 07:37:41 -0700 |
commit | c4ce6b592487305de251bbebaf8eeee38371b877 (patch) | |
tree | 8715df359e6f40c6eff5603abe43d9ac0dc2b724 /tests/ColorSpaceTest.cpp | |
parent | ded0f26a93a115fdb8f2eb99841b85cc16baf400 (diff) |
Differentiate between sRGBGamma and 2Dot2Gamma
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2067833003
Review-Url: https://codereview.chromium.org/2067833003
Diffstat (limited to 'tests/ColorSpaceTest.cpp')
-rw-r--r-- | tests/ColorSpaceTest.cpp | 45 |
1 files changed, 25 insertions, 20 deletions
diff --git a/tests/ColorSpaceTest.cpp b/tests/ColorSpaceTest.cpp index 6dd4789a8e..b06dc642fb 100644 --- a/tests/ColorSpaceTest.cpp +++ b/tests/ColorSpaceTest.cpp @@ -19,12 +19,9 @@ static bool almost_equal(float a, float b) { static void test_space(skiatest::Reporter* r, SkColorSpace* space, const float red[], const float green[], const float blue[], - const float expectedGammas[]) { + const SkColorSpace::GammaNamed expectedGamma) { - const sk_sp<SkGammas>& gammas = as_CSB(space)->gammas(); - REPORTER_ASSERT(r, almost_equal(expectedGammas[0], gammas->fRed.fValue)); - REPORTER_ASSERT(r, almost_equal(expectedGammas[1], gammas->fGreen.fValue)); - REPORTER_ASSERT(r, almost_equal(expectedGammas[2], gammas->fBlue.fValue)); + REPORTER_ASSERT(r, expectedGamma == space->gammaNamed()); SkMatrix44 mat = space->xyz(); @@ -46,11 +43,9 @@ const float g_sRGB_XYZ[] = { 0.4358f, 0.2224f, 0.0139f, // R 0.3853f, 0.7170f, 0.0971f, // G 0.1430f, 0.0606f, 0.7139f }; // B -const float g_sRGB_gamma[] = { 2.2f, 2.2f, 2.2f }; - DEF_TEST(ColorSpace_sRGB, r) { test_space(r, SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named).get(), - g_sRGB_XYZ, &g_sRGB_XYZ[3], &g_sRGB_XYZ[6], g_sRGB_gamma); + g_sRGB_XYZ, &g_sRGB_XYZ[3], &g_sRGB_XYZ[6], SkColorSpace::kSRGB_GammaNamed); } @@ -73,7 +68,8 @@ DEF_TEST(ColorSpaceParsePngICCProfile, r) { SkColorSpace* colorSpace = codec->getColorSpace(); REPORTER_ASSERT(r, nullptr != colorSpace); - test_space(r, colorSpace, &g_sRGB_XYZ[0], &g_sRGB_XYZ[3], &g_sRGB_XYZ[6], g_sRGB_gamma); + test_space(r, colorSpace, &g_sRGB_XYZ[0], &g_sRGB_XYZ[3], &g_sRGB_XYZ[6], + SkColorSpace::kSRGB_GammaNamed); #endif } @@ -96,7 +92,7 @@ DEF_TEST(ColorSpaceParseJpegICCProfile, r) { const float red[] = { 0.385117f, 0.716904f, 0.0970612f }; const float green[] = { 0.143051f, 0.0606079f, 0.713913f }; const float blue[] = { 0.436035f, 0.222488f, 0.013916f }; - test_space(r, colorSpace, red, green, blue, g_sRGB_gamma); + test_space(r, colorSpace, red, green, blue, SkColorSpace::k2Dot2Curve_GammaNamed); } DEF_TEST(ColorSpaceSRGBCompare, r) { @@ -106,12 +102,14 @@ DEF_TEST(ColorSpaceSRGBCompare, r) { // Create an sRGB color space by value SkMatrix44 srgbToxyzD50(SkMatrix44::kUninitialized_Constructor); srgbToxyzD50.set3x3ColMajorf(g_sRGB_XYZ); - sk_sp<SkColorSpace> rgbColorSpace = SkColorSpace::NewRGB(g_sRGB_gamma, srgbToxyzD50); + sk_sp<SkColorSpace> rgbColorSpace = SkColorSpace::NewRGB(SkColorSpace::kSRGB_GammaNamed, + srgbToxyzD50); REPORTER_ASSERT(r, rgbColorSpace == namedColorSpace); // Change a single value from the sRGB matrix srgbToxyzD50.set(2, 2, 0.5f); - sk_sp<SkColorSpace> strangeColorSpace = SkColorSpace::NewRGB(g_sRGB_gamma, srgbToxyzD50); + sk_sp<SkColorSpace> strangeColorSpace = SkColorSpace::NewRGB(SkColorSpace::kSRGB_GammaNamed, + srgbToxyzD50); REPORTER_ASSERT(r, strangeColorSpace != namedColorSpace); } @@ -120,8 +118,10 @@ DEF_TEST(ColorSpaceWriteICC, r) { sk_sp<SkColorSpace> namedColorSpace = SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named); sk_sp<SkData> namedData = as_CSB(namedColorSpace)->writeToICC(); sk_sp<SkColorSpace> iccColorSpace = SkColorSpace::NewICC(namedData->data(), namedData->size()); - test_space(r, iccColorSpace.get(), g_sRGB_XYZ, &g_sRGB_XYZ[3], &g_sRGB_XYZ[6], g_sRGB_gamma); - REPORTER_ASSERT(r, iccColorSpace == namedColorSpace); + test_space(r, iccColorSpace.get(), g_sRGB_XYZ, &g_sRGB_XYZ[3], &g_sRGB_XYZ[6], + SkColorSpace::k2Dot2Curve_GammaNamed); + // FIXME (msarett): Test disabled. sRGB profiles are written approximately as 2.2f curves. + // REPORTER_ASSERT(r, iccColorSpace == namedColorSpace); // Test saving the original ICC data sk_sp<SkData> monitorData = SkData::MakeFromFileName( @@ -136,28 +136,33 @@ DEF_TEST(ColorSpaceWriteICC, r) { sk_sp<SkColorSpace> newMonitorSpace = SkColorSpace::NewICC(newMonitorData->data(), newMonitorData->size()); REPORTER_ASSERT(r, monitorSpace->xyz() == newMonitorSpace->xyz()); - REPORTER_ASSERT(r, as_CSB(monitorSpace)->gammas() == as_CSB(newMonitorSpace)->gammas()); + REPORTER_ASSERT(r, monitorSpace->gammaNamed() == newMonitorSpace->gammaNamed()); } DEF_TEST(ColorSpace_Named, r) { const struct { SkColorSpace::Named fNamed; bool fExpectedToSucceed; + bool fIsSRGB; } recs[] { - { SkColorSpace::kUnknown_Named, false }, - { SkColorSpace::kSRGB_Named, true }, - { SkColorSpace::kAdobeRGB_Named, true }, + { SkColorSpace::kUnknown_Named, false, false }, + { SkColorSpace::kSRGB_Named, true, true }, + { SkColorSpace::kAdobeRGB_Named, true, false }, }; for (auto rec : recs) { auto cs = SkColorSpace::NewNamed(rec.fNamed); REPORTER_ASSERT(r, !cs == !rec.fExpectedToSucceed); if (cs) { - REPORTER_ASSERT(r, SkColorSpace::k2Dot2Curve_GammaNamed == cs->gammaNamed()); + if (rec.fIsSRGB) { + REPORTER_ASSERT(r, SkColorSpace::kSRGB_GammaNamed == cs->gammaNamed()); + } else { + REPORTER_ASSERT(r, SkColorSpace::k2Dot2Curve_GammaNamed == cs->gammaNamed()); + } } } SkImageInfo info = SkImageInfo::MakeS32(10, 10, kPremul_SkAlphaType); REPORTER_ASSERT(r, kSRGB_SkColorProfileType == info.profileType()); - REPORTER_ASSERT(r, SkColorSpace::k2Dot2Curve_GammaNamed == info.colorSpace()->gammaNamed()); + REPORTER_ASSERT(r, SkColorSpace::kSRGB_GammaNamed == info.colorSpace()->gammaNamed()); } |