diff options
author | Matt Sarett <msarett@google.com> | 2017-01-04 10:53:31 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-01-04 16:26:58 +0000 |
commit | 1e854246e6ce431838de882116b86f085eb7b08e (patch) | |
tree | 884fa978dca95b0bd0494af1f9a216dec418725c /tests/ColorSpaceTest.cpp | |
parent | e2b66a769b19780c87a5baf1ecff48158fd63e45 (diff) |
Improve detection of color space transfer fns
BUG=skia:
Change-Id: I744af0efd4d48a8932b834092ed2dbad13008c1d
Reviewed-on: https://skia-review.googlesource.com/6556
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'tests/ColorSpaceTest.cpp')
-rw-r--r-- | tests/ColorSpaceTest.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/ColorSpaceTest.cpp b/tests/ColorSpaceTest.cpp index df253c09e3..ba355cd612 100644 --- a/tests/ColorSpaceTest.cpp +++ b/tests/ColorSpaceTest.cpp @@ -10,6 +10,7 @@ #include "SkColorSpace.h" #include "SkColorSpace_Base.h" #include "SkColorSpace_XYZ.h" +#include "SkColorSpacePriv.h" #include "Test.h" #include "png.h" @@ -111,6 +112,17 @@ DEF_TEST(ColorSpaceSRGBCompare, r) { SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, srgbToxyzD50); REPORTER_ASSERT(r, rgbColorSpace == namedColorSpace); + SkColorSpaceTransferFn srgbFn; + srgbFn.fA = (1.0f / 1.055f); + srgbFn.fB = (0.055f / 1.055f); + srgbFn.fC = (1.0f / 12.92f); + srgbFn.fD = 0.04045f; + srgbFn.fE = 0.0f; + srgbFn.fF = 0.0f; + srgbFn.fG = 2.4f; + sk_sp<SkColorSpace> rgbColorSpace2 = SkColorSpace::MakeRGB(srgbFn, srgbToxyzD50); + REPORTER_ASSERT(r, rgbColorSpace2 == namedColorSpace); + // Change a single value from the sRGB matrix srgbToxyzD50.set(2, 2, 0.5f); sk_sp<SkColorSpace> strangeColorSpace = @@ -135,6 +147,28 @@ DEF_TEST(ColorSpaceSRGBLinearCompare, r) { SkColorSpace::MakeRGB(SkColorSpace::kLinear_RenderTargetGamma, srgbToxyzD50); REPORTER_ASSERT(r, rgbColorSpace == namedColorSpace); + SkColorSpaceTransferFn linearExpFn; + linearExpFn.fA = 1.0f; + linearExpFn.fB = 0.0f; + linearExpFn.fC = 0.0f; + linearExpFn.fD = 0.0f; + linearExpFn.fE = 0.0f; + linearExpFn.fF = 0.0f; + linearExpFn.fG = 1.0f; + sk_sp<SkColorSpace> rgbColorSpace2 = SkColorSpace::MakeRGB(linearExpFn, srgbToxyzD50); + REPORTER_ASSERT(r, rgbColorSpace2 == namedColorSpace); + + SkColorSpaceTransferFn linearFn; + linearFn.fA = 0.0f; + linearFn.fB = 0.0f; + linearFn.fC = 1.0f; + linearFn.fD = 1.0f; + linearFn.fE = 0.0f; + linearFn.fF = 0.0f; + linearFn.fG = 0.0f; + sk_sp<SkColorSpace> rgbColorSpace3 = SkColorSpace::MakeRGB(linearFn, srgbToxyzD50); + REPORTER_ASSERT(r, rgbColorSpace3 == namedColorSpace); + // Change a single value from the sRGB matrix srgbToxyzD50.set(2, 2, 0.5f); sk_sp<SkColorSpace> strangeColorSpace = @@ -142,6 +176,26 @@ 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::MakeNamed(SkColorSpace::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::Named fNamed; |