From 8fcfcc5686604ede4f2a6d5da1af6459d39c36ad Mon Sep 17 00:00:00 2001 From: Mike Klein Date: Wed, 23 May 2018 12:43:42 -0400 Subject: update ColorSpaceTest.cpp to remove MakeICC The upperLeft and upperRight profiles are A2B/B2A-only, and so cannot be represented as SkColorSpace using SkColorSpace::Make(skcms_ICCProfile). They do parse fine, of course. Change-Id: Iaf51911c2b06b985037d3d5e74b043fb344e320e Reviewed-on: https://skia-review.googlesource.com/129653 Commit-Queue: Mike Klein Commit-Queue: Brian Osman Auto-Submit: Mike Klein Reviewed-by: Brian Osman --- resources/icc_profiles/SM2333SW.icc | Bin 2404 -> 0 bytes resources/icc_profiles/invalid_color_lut.icc | Bin 688 -> 0 bytes tests/ColorSpaceTest.cpp | 93 +++++++++++++-------------- 3 files changed, 44 insertions(+), 49 deletions(-) delete mode 100644 resources/icc_profiles/SM2333SW.icc delete mode 100644 resources/icc_profiles/invalid_color_lut.icc diff --git a/resources/icc_profiles/SM2333SW.icc b/resources/icc_profiles/SM2333SW.icc deleted file mode 100644 index cf6e91fb68..0000000000 Binary files a/resources/icc_profiles/SM2333SW.icc and /dev/null differ diff --git a/resources/icc_profiles/invalid_color_lut.icc b/resources/icc_profiles/invalid_color_lut.icc deleted file mode 100644 index 33384cd220..0000000000 Binary files a/resources/icc_profiles/invalid_color_lut.icc and /dev/null differ diff --git a/tests/ColorSpaceTest.cpp b/tests/ColorSpaceTest.cpp index d1eb75efe4..9324e8cf04 100644 --- a/tests/ColorSpaceTest.cpp +++ b/tests/ColorSpaceTest.cpp @@ -185,7 +185,7 @@ DEF_TEST(ColorSpaceSRGBLinearCompare, r) { REPORTER_ASSERT(r, strangeColorSpace != namedColorSpace); } -static void test_serialize(skiatest::Reporter* r, SkColorSpace* space, bool isNamed) { +static void test_serialize(skiatest::Reporter* r, sk_sp space, bool isNamed) { sk_sp data1 = space->serialize(); size_t bytes = space->writeToMemory(nullptr); @@ -196,26 +196,33 @@ static void test_serialize(skiatest::Reporter* r, SkColorSpace* space, bool isNa sk_sp newSpace2 = SkColorSpace::Deserialize(data2->data(), data2->size()); if (isNamed) { - REPORTER_ASSERT(r, space == newSpace1.get()); - REPORTER_ASSERT(r, space == newSpace2.get()); + REPORTER_ASSERT(r, space.get() == newSpace1.get()); + REPORTER_ASSERT(r, space.get() == newSpace2.get()); } else { - REPORTER_ASSERT(r, SkColorSpace::Equals(space, newSpace1.get())); - REPORTER_ASSERT(r, SkColorSpace::Equals(space, newSpace2.get())); + REPORTER_ASSERT(r, SkColorSpace::Equals(space.get(), newSpace1.get())); + REPORTER_ASSERT(r, SkColorSpace::Equals(space.get(), newSpace2.get())); } } DEF_TEST(ColorSpace_Serialize, r) { - test_serialize(r, SkColorSpace::MakeSRGB().get(), true); - test_serialize(r, SkColorSpace::MakeSRGBLinear().get(), true); - - sk_sp monitorData = GetResourceAsData("icc_profiles/HP_ZR30w.icc"); - test_serialize(r, SkColorSpace::MakeICC(monitorData->data(), monitorData->size()).get(), false); - monitorData = GetResourceAsData("icc_profiles/HP_Z32x.icc"); - test_serialize(r, SkColorSpace::MakeICC(monitorData->data(), monitorData->size()).get(), false); - monitorData = GetResourceAsData("icc_profiles/upperLeft.icc"); - test_serialize(r, SkColorSpace::MakeICC(monitorData->data(), monitorData->size()).get(), false); - monitorData = GetResourceAsData("icc_profiles/upperRight.icc"); - test_serialize(r, SkColorSpace::MakeICC(monitorData->data(), monitorData->size()).get(), false); + test_serialize(r, SkColorSpace::MakeSRGB(), true); + test_serialize(r, SkColorSpace::MakeSRGBLinear(), true); + +#if defined(SK_USE_SKCMS) + auto test = [&](const char* path) { + sk_sp data = GetResourceAsData(path); + + skcms_ICCProfile profile; + REPORTER_ASSERT(r, skcms_Parse(data->data(), data->size(), &profile)); + + sk_sp space = SkColorSpace::Make(profile); + REPORTER_ASSERT(r, space); + + test_serialize(r, space, false); + }; + test("icc_profiles/HP_ZR30w.icc"); + test("icc_profiles/HP_Z32x.icc"); +#endif SkColorSpaceTransferFn fn; fn.fA = 1.0f; @@ -226,19 +233,27 @@ DEF_TEST(ColorSpace_Serialize, r) { fn.fF = 0.0f; fn.fG = 1.0f; SkMatrix44 toXYZ(SkMatrix44::kIdentity_Constructor); - test_serialize(r, SkColorSpace::MakeRGB(fn, toXYZ).get(), false); + test_serialize(r, SkColorSpace::MakeRGB(fn, toXYZ), false); } DEF_TEST(ColorSpace_Equals, r) { sk_sp srgb = SkColorSpace::MakeSRGB(); - 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"); - sk_sp z32 = SkColorSpace::MakeICC(data->data(), data->size()); - data = GetResourceAsData("icc_profiles/upperLeft.icc"); - sk_sp upperLeft = SkColorSpace::MakeICC(data->data(), data->size()); - data = GetResourceAsData("icc_profiles/upperRight.icc"); - sk_sp upperRight = SkColorSpace::MakeICC(data->data(), data->size()); + +#if defined(SK_USE_SKCMS) + auto parse = [&](const char* path) { + sk_sp data = GetResourceAsData(path); + + skcms_ICCProfile profile; + REPORTER_ASSERT(r, skcms_Parse(data->data(), data->size(), &profile)); + + sk_sp space = SkColorSpace::Make(profile); + REPORTER_ASSERT(r, space); + + return space; + }; + sk_sp z30 = parse("icc_profiles/HP_ZR30w.icc"); + sk_sp z32 = parse("icc_profiles/HP_Z32x.icc"); +#endif SkColorSpaceTransferFn fn; fn.fA = 1.0f; @@ -253,20 +268,19 @@ DEF_TEST(ColorSpace_Equals, r) { REPORTER_ASSERT(r, SkColorSpace::Equals(nullptr, nullptr)); REPORTER_ASSERT(r, SkColorSpace::Equals(srgb.get(), srgb.get())); +#if defined(SK_USE_SKCMS) 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())); - REPORTER_ASSERT(r, SkColorSpace::Equals(upperRight.get(), upperRight.get())); +#endif REPORTER_ASSERT(r, SkColorSpace::Equals(rgb4.get(), rgb4.get())); REPORTER_ASSERT(r, !SkColorSpace::Equals(nullptr, srgb.get())); REPORTER_ASSERT(r, !SkColorSpace::Equals(srgb.get(), nullptr)); +#if defined(SK_USE_SKCMS) 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(z30.get(), rgb4.get())); +#endif REPORTER_ASSERT(r, !SkColorSpace::Equals(srgb.get(), rgb4.get())); } @@ -380,25 +394,6 @@ DEF_TEST(ColorSpace_Primaries, r) { check_primaries(r, rec2020, reference); } -DEF_TEST(ColorSpace_InvalidICC, r) { - // This color space has a matrix that is not D50. - sk_sp data = GetResourceAsData("icc_profiles/SM2333SW.icc"); - if (!data) { - return; - } - sk_sp cs = SkColorSpace::MakeICC(data->data(), data->size()); - REPORTER_ASSERT(r, !cs); - - // The color space has a color lut with only one entry in each dimension. - data = GetResourceAsData("icc_profiles/invalid_color_lut.icc"); - if (!data) { - return; - } - - cs = SkColorSpace::MakeICC(data->data(), data->size()); - REPORTER_ASSERT(r, !cs); -} - DEF_TEST(ColorSpace_MatrixHash, r) { sk_sp srgb = SkColorSpace::MakeSRGB(); -- cgit v1.2.3