OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2016 Google Inc. | 2 * Copyright 2016 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "Resources.h" | 8 #include "Resources.h" |
9 #include "SkCodec.h" | 9 #include "SkCodec.h" |
10 #include "SkColorSpace.h" | 10 #include "SkColorSpace.h" |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 srgbToxyzD50); | 106 srgbToxyzD50); |
107 REPORTER_ASSERT(r, rgbColorSpace == namedColorSpace); | 107 REPORTER_ASSERT(r, rgbColorSpace == namedColorSpace); |
108 | 108 |
109 // Change a single value from the sRGB matrix | 109 // Change a single value from the sRGB matrix |
110 srgbToxyzD50.set(2, 2, 0.5f); | 110 srgbToxyzD50.set(2, 2, 0.5f); |
111 sk_sp<SkColorSpace> strangeColorSpace = SkColorSpace::NewRGB(SkColorSpace::k
SRGB_GammaNamed, | 111 sk_sp<SkColorSpace> strangeColorSpace = SkColorSpace::NewRGB(SkColorSpace::k
SRGB_GammaNamed, |
112 srgbToxyzD50); | 112 srgbToxyzD50); |
113 REPORTER_ASSERT(r, strangeColorSpace != namedColorSpace); | 113 REPORTER_ASSERT(r, strangeColorSpace != namedColorSpace); |
114 } | 114 } |
115 | 115 |
| 116 class ColorSpaceTest { |
| 117 public: |
| 118 static sk_sp<SkData> WriteToICC(SkColorSpace* space) { |
| 119 return as_CSB(space)->writeToICC(); |
| 120 } |
| 121 }; |
| 122 |
116 DEF_TEST(ColorSpaceWriteICC, r) { | 123 DEF_TEST(ColorSpaceWriteICC, r) { |
117 // Test writing a new ICC profile | 124 // Test writing a new ICC profile |
118 sk_sp<SkColorSpace> namedColorSpace = SkColorSpace::NewNamed(SkColorSpace::k
SRGB_Named); | 125 sk_sp<SkColorSpace> namedColorSpace = SkColorSpace::NewNamed(SkColorSpace::k
SRGB_Named); |
119 sk_sp<SkData> namedData = as_CSB(namedColorSpace)->writeToICC(); | 126 sk_sp<SkData> namedData = ColorSpaceTest::WriteToICC(namedColorSpace.get()); |
120 sk_sp<SkColorSpace> iccColorSpace = SkColorSpace::NewICC(namedData->data(),
namedData->size()); | 127 sk_sp<SkColorSpace> iccColorSpace = SkColorSpace::NewICC(namedData->data(),
namedData->size()); |
121 test_space(r, iccColorSpace.get(), g_sRGB_XYZ, &g_sRGB_XYZ[3], &g_sRGB_XYZ[6
], | 128 test_space(r, iccColorSpace.get(), g_sRGB_XYZ, &g_sRGB_XYZ[3], &g_sRGB_XYZ[6
], |
122 SkColorSpace::k2Dot2Curve_GammaNamed); | 129 SkColorSpace::k2Dot2Curve_GammaNamed); |
123 // FIXME (msarett): Test disabled. sRGB profiles are written approximately
as 2.2f curves. | 130 // FIXME (msarett): Test disabled. sRGB profiles are written approximately
as 2.2f curves. |
124 // REPORTER_ASSERT(r, iccColorSpace == namedColorSpace); | 131 // REPORTER_ASSERT(r, iccColorSpace == namedColorSpace); |
125 | 132 |
126 // Test saving the original ICC data | 133 // Test saving the original ICC data |
127 sk_sp<SkData> monitorData = SkData::MakeFromFileName( | 134 sk_sp<SkData> monitorData = SkData::MakeFromFileName( |
128 GetResourcePath("icc_profiles/HP_ZR30w.icc").c_str()); | 135 GetResourcePath("icc_profiles/HP_ZR30w.icc").c_str()); |
129 REPORTER_ASSERT(r, monitorData); | 136 REPORTER_ASSERT(r, monitorData); |
130 if (!monitorData) { | 137 if (!monitorData) { |
131 return; | 138 return; |
132 } | 139 } |
133 sk_sp<SkColorSpace> monitorSpace = SkColorSpace::NewICC(monitorData->data(), | 140 sk_sp<SkColorSpace> monitorSpace = SkColorSpace::NewICC(monitorData->data(), |
134 monitorData->size())
; | 141 monitorData->size())
; |
135 sk_sp<SkData> newMonitorData = as_CSB(monitorSpace)->writeToICC(); | 142 sk_sp<SkData> newMonitorData = ColorSpaceTest::WriteToICC(monitorSpace.get()
); |
136 sk_sp<SkColorSpace> newMonitorSpace = SkColorSpace::NewICC(newMonitorData->d
ata(), | 143 sk_sp<SkColorSpace> newMonitorSpace = SkColorSpace::NewICC(newMonitorData->d
ata(), |
137 newMonitorData->s
ize()); | 144 newMonitorData->s
ize()); |
138 REPORTER_ASSERT(r, monitorSpace->xyz() == newMonitorSpace->xyz()); | 145 REPORTER_ASSERT(r, monitorSpace->xyz() == newMonitorSpace->xyz()); |
139 REPORTER_ASSERT(r, monitorSpace->gammaNamed() == newMonitorSpace->gammaNamed
()); | 146 REPORTER_ASSERT(r, monitorSpace->gammaNamed() == newMonitorSpace->gammaNamed
()); |
140 } | 147 } |
141 | 148 |
142 DEF_TEST(ColorSpace_Named, r) { | 149 DEF_TEST(ColorSpace_Named, r) { |
143 const struct { | 150 const struct { |
144 SkColorSpace::Named fNamed; | 151 SkColorSpace::Named fNamed; |
145 bool fExpectedToSucceed; | 152 bool fExpectedToSucceed; |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 REPORTER_ASSERT(r, !SkColorSpace::Equals(nullptr, srgb.get())); | 252 REPORTER_ASSERT(r, !SkColorSpace::Equals(nullptr, srgb.get())); |
246 REPORTER_ASSERT(r, !SkColorSpace::Equals(srgb.get(), nullptr)); | 253 REPORTER_ASSERT(r, !SkColorSpace::Equals(srgb.get(), nullptr)); |
247 REPORTER_ASSERT(r, !SkColorSpace::Equals(adobe.get(), srgb.get())); | 254 REPORTER_ASSERT(r, !SkColorSpace::Equals(adobe.get(), srgb.get())); |
248 REPORTER_ASSERT(r, !SkColorSpace::Equals(z30.get(), srgb.get())); | 255 REPORTER_ASSERT(r, !SkColorSpace::Equals(z30.get(), srgb.get())); |
249 REPORTER_ASSERT(r, !SkColorSpace::Equals(z32.get(), z30.get())); | 256 REPORTER_ASSERT(r, !SkColorSpace::Equals(z32.get(), z30.get())); |
250 REPORTER_ASSERT(r, !SkColorSpace::Equals(upperLeft.get(), srgb.get())); | 257 REPORTER_ASSERT(r, !SkColorSpace::Equals(upperLeft.get(), srgb.get())); |
251 REPORTER_ASSERT(r, !SkColorSpace::Equals(upperLeft.get(), upperRight.get()))
; | 258 REPORTER_ASSERT(r, !SkColorSpace::Equals(upperLeft.get(), upperRight.get()))
; |
252 REPORTER_ASSERT(r, !SkColorSpace::Equals(z30.get(), upperRight.get())); | 259 REPORTER_ASSERT(r, !SkColorSpace::Equals(z30.get(), upperRight.get())); |
253 REPORTER_ASSERT(r, !SkColorSpace::Equals(upperRight.get(), adobe.get())); | 260 REPORTER_ASSERT(r, !SkColorSpace::Equals(upperRight.get(), adobe.get())); |
254 } | 261 } |
OLD | NEW |