| OLD | NEW |
| 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/logging.h" | 5 #include "base/logging.h" |
| 6 #include "testing/gtest/include/gtest/gtest.h" | 6 #include "testing/gtest/include/gtest/gtest.h" |
| 7 #include "ui/gfx/color_space.h" | 7 #include "ui/gfx/color_space.h" |
| 8 #include "ui/gfx/color_transform.h" | 8 #include "ui/gfx/color_transform.h" |
| 9 #include "ui/gfx/icc_profile.h" | 9 #include "ui/gfx/icc_profile.h" |
| 10 #include "ui/gfx/test/icc_profiles.h" | 10 #include "ui/gfx/test/icc_profiles.h" |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 ColorTransform::Intent intents[] = {ColorTransform::Intent::INTENT_ABSOLUTE, | 59 ColorTransform::Intent intents[] = {ColorTransform::Intent::INTENT_ABSOLUTE, |
| 60 ColorTransform::Intent::TEST_NO_OPT}; | 60 ColorTransform::Intent::TEST_NO_OPT}; |
| 61 | 61 |
| 62 TEST(SimpleColorSpace, BT709toSRGB) { | 62 TEST(SimpleColorSpace, BT709toSRGB) { |
| 63 ColorSpace bt709 = ColorSpace::CreateREC709(); | 63 ColorSpace bt709 = ColorSpace::CreateREC709(); |
| 64 ColorSpace sRGB = ColorSpace::CreateSRGB(); | 64 ColorSpace sRGB = ColorSpace::CreateSRGB(); |
| 65 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform( | 65 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform( |
| 66 bt709, sRGB, ColorTransform::Intent::INTENT_ABSOLUTE)); | 66 bt709, sRGB, ColorTransform::Intent::INTENT_ABSOLUTE)); |
| 67 | 67 |
| 68 ColorTransform::TriStim tmp(16.0f / 255.0f, 0.5f, 0.5f); | 68 ColorTransform::TriStim tmp(16.0f / 255.0f, 0.5f, 0.5f); |
| 69 t->transform(&tmp, 1); | 69 t->Transform(&tmp, 1); |
| 70 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f); | 70 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f); |
| 71 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f); | 71 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f); |
| 72 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f); | 72 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f); |
| 73 | 73 |
| 74 tmp = ColorTransform::TriStim(235.0f / 255.0f, 0.5f, 0.5f); | 74 tmp = ColorTransform::TriStim(235.0f / 255.0f, 0.5f, 0.5f); |
| 75 t->transform(&tmp, 1); | 75 t->Transform(&tmp, 1); |
| 76 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f); | 76 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f); |
| 77 EXPECT_NEAR(tmp.y(), 1.0f, 0.001f); | 77 EXPECT_NEAR(tmp.y(), 1.0f, 0.001f); |
| 78 EXPECT_NEAR(tmp.z(), 1.0f, 0.001f); | 78 EXPECT_NEAR(tmp.z(), 1.0f, 0.001f); |
| 79 | 79 |
| 80 // Test a blue color | 80 // Test a blue color |
| 81 tmp = ColorTransform::TriStim(128.0f / 255.0f, 240.0f / 255.0f, 0.5f); | 81 tmp = ColorTransform::TriStim(128.0f / 255.0f, 240.0f / 255.0f, 0.5f); |
| 82 t->transform(&tmp, 1); | 82 t->Transform(&tmp, 1); |
| 83 EXPECT_GT(tmp.z(), tmp.x()); | 83 EXPECT_GT(tmp.z(), tmp.x()); |
| 84 EXPECT_GT(tmp.z(), tmp.y()); | 84 EXPECT_GT(tmp.z(), tmp.y()); |
| 85 } | 85 } |
| 86 | 86 |
| 87 TEST(SimpleColorSpace, SRGBFromICCAndNotICC) { |
| 88 float kEpsilon = 0.001f; |
| 89 ColorTransform::TriStim value_fromicc; |
| 90 ColorTransform::TriStim value_default; |
| 91 |
| 92 ICCProfile srgb_icc_profile = ICCProfileForTestingSRGB(); |
| 93 ColorSpace srgb_fromicc = srgb_icc_profile.GetColorSpace(); |
| 94 ColorSpace srgb_default = gfx::ColorSpace::CreateSRGB(); |
| 95 ColorSpace xyzd50 = gfx::ColorSpace::CreateXYZD50(); |
| 96 |
| 97 value_fromicc = value_default = ColorTransform::TriStim(0.1f, 0.5f, 0.9f); |
| 98 |
| 99 std::unique_ptr<ColorTransform> toxyzd50_fromicc( |
| 100 ColorTransform::NewColorTransform( |
| 101 srgb_fromicc, xyzd50, ColorTransform::Intent::INTENT_ABSOLUTE)); |
| 102 // This will have 1 step, namely, the QCMS transform. |
| 103 EXPECT_EQ(toxyzd50_fromicc->NumberOfStepsForTesting(), 1u); |
| 104 toxyzd50_fromicc->Transform(&value_fromicc, 1); |
| 105 |
| 106 std::unique_ptr<ColorTransform> toxyzd50_default( |
| 107 ColorTransform::NewColorTransform( |
| 108 srgb_default, xyzd50, ColorTransform::Intent::INTENT_ABSOLUTE)); |
| 109 // This will have a transfer function and then linear transform. |
| 110 EXPECT_EQ(toxyzd50_default->NumberOfStepsForTesting(), 2u); |
| 111 toxyzd50_default->Transform(&value_default, 1); |
| 112 |
| 113 EXPECT_NEAR(value_fromicc.x(), value_default.x(), kEpsilon); |
| 114 EXPECT_NEAR(value_fromicc.y(), value_default.y(), kEpsilon); |
| 115 EXPECT_NEAR(value_fromicc.z(), value_default.z(), kEpsilon); |
| 116 |
| 117 value_fromicc = value_default = ColorTransform::TriStim(0.1f, 0.5f, 0.9f); |
| 118 |
| 119 std::unique_ptr<ColorTransform> fromxyzd50_fromicc( |
| 120 ColorTransform::NewColorTransform( |
| 121 xyzd50, srgb_fromicc, ColorTransform::Intent::INTENT_ABSOLUTE)); |
| 122 fromxyzd50_fromicc->Transform(&value_fromicc, 1); |
| 123 |
| 124 std::unique_ptr<ColorTransform> fromxyzd50_default( |
| 125 ColorTransform::NewColorTransform( |
| 126 xyzd50, srgb_default, ColorTransform::Intent::INTENT_ABSOLUTE)); |
| 127 fromxyzd50_default->Transform(&value_default, 1); |
| 128 |
| 129 EXPECT_NEAR(value_fromicc.x(), value_default.x(), kEpsilon); |
| 130 EXPECT_NEAR(value_fromicc.y(), value_default.y(), kEpsilon); |
| 131 EXPECT_NEAR(value_fromicc.z(), value_default.z(), kEpsilon); |
| 132 } |
| 133 |
| 87 TEST(SimpleColorSpace, BT709toSRGBICC) { | 134 TEST(SimpleColorSpace, BT709toSRGBICC) { |
| 88 ICCProfile srgb_icc = ICCProfileForTestingSRGB(); | 135 ICCProfile srgb_icc = ICCProfileForTestingSRGB(); |
| 89 ColorSpace bt709 = ColorSpace::CreateREC709(); | 136 ColorSpace bt709 = ColorSpace::CreateREC709(); |
| 90 ColorSpace sRGB = srgb_icc.GetColorSpace(); | 137 ColorSpace sRGB = srgb_icc.GetColorSpace(); |
| 91 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform( | 138 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform( |
| 92 bt709, sRGB, ColorTransform::Intent::INTENT_ABSOLUTE)); | 139 bt709, sRGB, ColorTransform::Intent::INTENT_ABSOLUTE)); |
| 93 | 140 |
| 94 ColorTransform::TriStim tmp(16.0f / 255.0f, 0.5f, 0.5f); | 141 ColorTransform::TriStim tmp(16.0f / 255.0f, 0.5f, 0.5f); |
| 95 t->transform(&tmp, 1); | 142 t->Transform(&tmp, 1); |
| 96 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f); | 143 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f); |
| 97 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f); | 144 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f); |
| 98 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f); | 145 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f); |
| 99 | 146 |
| 100 tmp = ColorTransform::TriStim(235.0f / 255.0f, 0.5f, 0.5f); | 147 tmp = ColorTransform::TriStim(235.0f / 255.0f, 0.5f, 0.5f); |
| 101 t->transform(&tmp, 1); | 148 t->Transform(&tmp, 1); |
| 102 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f); | 149 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f); |
| 103 EXPECT_NEAR(tmp.y(), 1.0f, 0.001f); | 150 EXPECT_NEAR(tmp.y(), 1.0f, 0.001f); |
| 104 EXPECT_NEAR(tmp.z(), 1.0f, 0.001f); | 151 EXPECT_NEAR(tmp.z(), 1.0f, 0.001f); |
| 105 | 152 |
| 106 // Test a blue color | 153 // Test a blue color |
| 107 tmp = ColorTransform::TriStim(128.0f / 255.0f, 240.0f / 255.0f, 0.5f); | 154 tmp = ColorTransform::TriStim(128.0f / 255.0f, 240.0f / 255.0f, 0.5f); |
| 108 t->transform(&tmp, 1); | 155 t->Transform(&tmp, 1); |
| 109 EXPECT_GT(tmp.z(), tmp.x()); | 156 EXPECT_GT(tmp.z(), tmp.x()); |
| 110 EXPECT_GT(tmp.z(), tmp.y()); | 157 EXPECT_GT(tmp.z(), tmp.y()); |
| 111 } | 158 } |
| 112 | 159 |
| 113 TEST(SimpleColorSpace, GetColorSpace) { | 160 TEST(SimpleColorSpace, GetColorSpace) { |
| 114 ICCProfile srgb_icc = ICCProfileForTestingSRGB(); | 161 ICCProfile srgb_icc = ICCProfileForTestingSRGB(); |
| 115 ColorSpace sRGB = srgb_icc.GetColorSpace(); | 162 ColorSpace sRGB = srgb_icc.GetColorSpace(); |
| 116 ColorSpace sRGB2 = sRGB; | 163 ColorSpace sRGB2 = sRGB; |
| 117 const float kEpsilon = 1.5f / 255.f; | 164 const float kEpsilon = 1.5f / 255.f; |
| 118 | 165 |
| 119 // Prevent sRGB2 from using a cached ICC profile. | 166 // Prevent sRGB2 from using a cached ICC profile. |
| 120 sRGB2.icc_profile_id_ = 0; | 167 sRGB2.icc_profile_id_ = 0; |
| 121 | 168 |
| 122 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform( | 169 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform( |
| 123 sRGB, sRGB2, ColorTransform::Intent::INTENT_ABSOLUTE)); | 170 sRGB, sRGB2, ColorTransform::Intent::INTENT_ABSOLUTE)); |
| 124 | 171 |
| 125 ColorTransform::TriStim tmp(1.0f, 1.0f, 1.0f); | 172 ColorTransform::TriStim tmp(1.0f, 1.0f, 1.0f); |
| 126 t->transform(&tmp, 1); | 173 t->Transform(&tmp, 1); |
| 127 EXPECT_NEAR(tmp.x(), 1.0f, kEpsilon); | 174 EXPECT_NEAR(tmp.x(), 1.0f, kEpsilon); |
| 128 EXPECT_NEAR(tmp.y(), 1.0f, kEpsilon); | 175 EXPECT_NEAR(tmp.y(), 1.0f, kEpsilon); |
| 129 EXPECT_NEAR(tmp.z(), 1.0f, kEpsilon); | 176 EXPECT_NEAR(tmp.z(), 1.0f, kEpsilon); |
| 130 | 177 |
| 131 tmp = ColorTransform::TriStim(1.0f, 0.0f, 0.0f); | 178 tmp = ColorTransform::TriStim(1.0f, 0.0f, 0.0f); |
| 132 t->transform(&tmp, 1); | 179 t->Transform(&tmp, 1); |
| 133 EXPECT_NEAR(tmp.x(), 1.0f, kEpsilon); | 180 EXPECT_NEAR(tmp.x(), 1.0f, kEpsilon); |
| 134 EXPECT_NEAR(tmp.y(), 0.0f, kEpsilon); | 181 EXPECT_NEAR(tmp.y(), 0.0f, kEpsilon); |
| 135 EXPECT_NEAR(tmp.z(), 0.0f, kEpsilon); | 182 EXPECT_NEAR(tmp.z(), 0.0f, kEpsilon); |
| 136 | 183 |
| 137 tmp = ColorTransform::TriStim(0.0f, 1.0f, 0.0f); | 184 tmp = ColorTransform::TriStim(0.0f, 1.0f, 0.0f); |
| 138 t->transform(&tmp, 1); | 185 t->Transform(&tmp, 1); |
| 139 EXPECT_NEAR(tmp.x(), 0.0f, kEpsilon); | 186 EXPECT_NEAR(tmp.x(), 0.0f, kEpsilon); |
| 140 EXPECT_NEAR(tmp.y(), 1.0f, kEpsilon); | 187 EXPECT_NEAR(tmp.y(), 1.0f, kEpsilon); |
| 141 EXPECT_NEAR(tmp.z(), 0.0f, kEpsilon); | 188 EXPECT_NEAR(tmp.z(), 0.0f, kEpsilon); |
| 142 | 189 |
| 143 tmp = ColorTransform::TriStim(0.0f, 0.0f, 1.0f); | 190 tmp = ColorTransform::TriStim(0.0f, 0.0f, 1.0f); |
| 144 t->transform(&tmp, 1); | 191 t->Transform(&tmp, 1); |
| 145 EXPECT_NEAR(tmp.x(), 0.0f, kEpsilon); | 192 EXPECT_NEAR(tmp.x(), 0.0f, kEpsilon); |
| 146 EXPECT_NEAR(tmp.y(), 0.0f, kEpsilon); | 193 EXPECT_NEAR(tmp.y(), 0.0f, kEpsilon); |
| 147 EXPECT_NEAR(tmp.z(), 1.0f, kEpsilon); | 194 EXPECT_NEAR(tmp.z(), 1.0f, kEpsilon); |
| 148 } | 195 } |
| 149 | 196 |
| 150 TEST(SimpleColorSpace, UnknownToSRGB) { | 197 TEST(SimpleColorSpace, UnknownToSRGB) { |
| 151 ColorSpace unknown; | 198 ColorSpace unknown; |
| 152 ColorSpace sRGB = ColorSpace::CreateSRGB(); | 199 ColorSpace sRGB = ColorSpace::CreateSRGB(); |
| 153 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform( | 200 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform( |
| 154 unknown, sRGB, ColorTransform::Intent::INTENT_PERCEPTUAL)); | 201 unknown, sRGB, ColorTransform::Intent::INTENT_PERCEPTUAL)); |
| 155 | 202 |
| 156 ColorTransform::TriStim tmp(16.0f / 255.0f, 0.5f, 0.5f); | 203 ColorTransform::TriStim tmp(16.0f / 255.0f, 0.5f, 0.5f); |
| 157 t->transform(&tmp, 1); | 204 t->Transform(&tmp, 1); |
| 158 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f); | 205 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f); |
| 159 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f); | 206 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f); |
| 160 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f); | 207 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f); |
| 161 | 208 |
| 162 tmp = ColorTransform::TriStim(235.0f / 255.0f, 0.5f, 0.5f); | 209 tmp = ColorTransform::TriStim(235.0f / 255.0f, 0.5f, 0.5f); |
| 163 t->transform(&tmp, 1); | 210 t->Transform(&tmp, 1); |
| 164 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f); | 211 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f); |
| 165 EXPECT_NEAR(tmp.y(), 1.0f, 0.001f); | 212 EXPECT_NEAR(tmp.y(), 1.0f, 0.001f); |
| 166 EXPECT_NEAR(tmp.z(), 1.0f, 0.001f); | 213 EXPECT_NEAR(tmp.z(), 1.0f, 0.001f); |
| 167 | 214 |
| 168 // Test a blue color | 215 // Test a blue color |
| 169 tmp = ColorTransform::TriStim(128.0f / 255.0f, 240.0f / 255.0f, 0.5f); | 216 tmp = ColorTransform::TriStim(128.0f / 255.0f, 240.0f / 255.0f, 0.5f); |
| 170 t->transform(&tmp, 1); | 217 t->Transform(&tmp, 1); |
| 171 EXPECT_GT(tmp.z(), tmp.x()); | 218 EXPECT_GT(tmp.z(), tmp.x()); |
| 172 EXPECT_GT(tmp.z(), tmp.y()); | 219 EXPECT_GT(tmp.z(), tmp.y()); |
| 173 } | 220 } |
| 174 | 221 |
| 175 class TransferTest : public testing::TestWithParam<ColorSpace::TransferID> {}; | 222 class TransferTest : public testing::TestWithParam<ColorSpace::TransferID> {}; |
| 176 | 223 |
| 177 TEST_P(TransferTest, basicTest) { | 224 TEST_P(TransferTest, basicTest) { |
| 225 gfx::ColorSpace space_with_transfer(ColorSpace::PrimaryID::BT709, GetParam(), |
| 226 ColorSpace::MatrixID::RGB, |
| 227 ColorSpace::RangeID::FULL); |
| 228 gfx::ColorSpace space_linear( |
| 229 ColorSpace::PrimaryID::BT709, ColorSpace::TransferID::LINEAR, |
| 230 ColorSpace::MatrixID::RGB, ColorSpace::RangeID::FULL); |
| 231 |
| 232 std::unique_ptr<ColorTransform> to_linear(ColorTransform::NewColorTransform( |
| 233 space_with_transfer, space_linear, |
| 234 ColorTransform::Intent::INTENT_ABSOLUTE)); |
| 235 |
| 236 std::unique_ptr<ColorTransform> from_linear(ColorTransform::NewColorTransform( |
| 237 space_linear, space_with_transfer, |
| 238 ColorTransform::Intent::INTENT_ABSOLUTE)); |
| 239 |
| 240 // The transforms will ahve 1 or 0 steps (0 for linear). |
| 241 size_t expected_steps = 1u; |
| 242 if (GetParam() == ColorSpace::TransferID::LINEAR) |
| 243 expected_steps = 0u; |
| 244 EXPECT_EQ(to_linear->NumberOfStepsForTesting(), expected_steps); |
| 245 EXPECT_EQ(from_linear->NumberOfStepsForTesting(), expected_steps); |
| 246 |
| 178 for (float x = 0.0f; x <= 1.0f; x += 1.0f / 128.0f) { | 247 for (float x = 0.0f; x <= 1.0f; x += 1.0f / 128.0f) { |
| 179 float linear = ColorTransform::ToLinearForTesting(GetParam(), x); | 248 ColorTransform::TriStim tristim(x, x, x); |
| 180 float x2 = ColorTransform::FromLinearForTesting(GetParam(), linear); | 249 to_linear->Transform(&tristim, 1); |
| 181 EXPECT_NEAR(x, x2, 0.001f); | 250 from_linear->Transform(&tristim, 1); |
| 251 EXPECT_NEAR(x, tristim.x(), 0.001f); |
| 182 } | 252 } |
| 183 } | 253 } |
| 184 | 254 |
| 185 INSTANTIATE_TEST_CASE_P(ColorSpace, | 255 INSTANTIATE_TEST_CASE_P(ColorSpace, |
| 186 TransferTest, | 256 TransferTest, |
| 187 testing::ValuesIn(all_transfers)); | 257 testing::ValuesIn(all_transfers)); |
| 188 | 258 |
| 189 typedef std::tr1::tuple<ColorSpace::PrimaryID, | 259 typedef std::tr1::tuple<ColorSpace::PrimaryID, |
| 190 ColorSpace::TransferID, | 260 ColorSpace::TransferID, |
| 191 ColorSpace::MatrixID, | 261 ColorSpace::MatrixID, |
| (...skipping 12 matching lines...) Expand all Loading... |
| 204 | 274 |
| 205 protected: | 275 protected: |
| 206 ColorSpace color_space_; | 276 ColorSpace color_space_; |
| 207 ColorTransform::Intent intent_; | 277 ColorTransform::Intent intent_; |
| 208 }; | 278 }; |
| 209 | 279 |
| 210 TEST_P(ColorSpaceTest, testNullTransform) { | 280 TEST_P(ColorSpaceTest, testNullTransform) { |
| 211 std::unique_ptr<ColorTransform> t( | 281 std::unique_ptr<ColorTransform> t( |
| 212 ColorTransform::NewColorTransform(color_space_, color_space_, intent_)); | 282 ColorTransform::NewColorTransform(color_space_, color_space_, intent_)); |
| 213 ColorTransform::TriStim tristim(0.4f, 0.5f, 0.6f); | 283 ColorTransform::TriStim tristim(0.4f, 0.5f, 0.6f); |
| 214 t->transform(&tristim, 1); | 284 t->Transform(&tristim, 1); |
| 215 EXPECT_NEAR(tristim.x(), 0.4f, 0.001f); | 285 EXPECT_NEAR(tristim.x(), 0.4f, 0.001f); |
| 216 EXPECT_NEAR(tristim.y(), 0.5f, 0.001f); | 286 EXPECT_NEAR(tristim.y(), 0.5f, 0.001f); |
| 217 EXPECT_NEAR(tristim.z(), 0.6f, 0.001f); | 287 EXPECT_NEAR(tristim.z(), 0.6f, 0.001f); |
| 218 } | 288 } |
| 219 | 289 |
| 220 TEST_P(ColorSpaceTest, toXYZandBack) { | 290 TEST_P(ColorSpaceTest, toXYZandBack) { |
| 221 std::unique_ptr<ColorTransform> t1(ColorTransform::NewColorTransform( | 291 std::unique_ptr<ColorTransform> t1(ColorTransform::NewColorTransform( |
| 222 color_space_, ColorSpace::CreateXYZD50(), intent_)); | 292 color_space_, ColorSpace::CreateXYZD50(), intent_)); |
| 223 std::unique_ptr<ColorTransform> t2(ColorTransform::NewColorTransform( | 293 std::unique_ptr<ColorTransform> t2(ColorTransform::NewColorTransform( |
| 224 ColorSpace::CreateXYZD50(), color_space_, intent_)); | 294 ColorSpace::CreateXYZD50(), color_space_, intent_)); |
| 225 ColorTransform::TriStim tristim(0.4f, 0.5f, 0.6f); | 295 ColorTransform::TriStim tristim(0.4f, 0.5f, 0.6f); |
| 226 t1->transform(&tristim, 1); | 296 t1->Transform(&tristim, 1); |
| 227 t2->transform(&tristim, 1); | 297 t2->Transform(&tristim, 1); |
| 228 EXPECT_NEAR(tristim.x(), 0.4f, 0.001f); | 298 EXPECT_NEAR(tristim.x(), 0.4f, 0.001f); |
| 229 EXPECT_NEAR(tristim.y(), 0.5f, 0.001f); | 299 EXPECT_NEAR(tristim.y(), 0.5f, 0.001f); |
| 230 EXPECT_NEAR(tristim.z(), 0.6f, 0.001f); | 300 EXPECT_NEAR(tristim.z(), 0.6f, 0.001f); |
| 231 } | 301 } |
| 232 | 302 |
| 233 INSTANTIATE_TEST_CASE_P( | 303 INSTANTIATE_TEST_CASE_P( |
| 234 A, | 304 A, |
| 235 ColorSpaceTest, | 305 ColorSpaceTest, |
| 236 testing::Combine(testing::ValuesIn(all_primaries), | 306 testing::Combine(testing::ValuesIn(all_primaries), |
| 237 testing::ValuesIn(all_transfers), | 307 testing::ValuesIn(all_transfers), |
| (...skipping 12 matching lines...) Expand all Loading... |
| 250 | 320 |
| 251 INSTANTIATE_TEST_CASE_P( | 321 INSTANTIATE_TEST_CASE_P( |
| 252 C, | 322 C, |
| 253 ColorSpaceTest, | 323 ColorSpaceTest, |
| 254 testing::Combine(testing::ValuesIn(all_primaries), | 324 testing::Combine(testing::ValuesIn(all_primaries), |
| 255 testing::Values(ColorSpace::TransferID::BT709), | 325 testing::Values(ColorSpace::TransferID::BT709), |
| 256 testing::ValuesIn(all_matrices), | 326 testing::ValuesIn(all_matrices), |
| 257 testing::ValuesIn(all_ranges), | 327 testing::ValuesIn(all_ranges), |
| 258 testing::ValuesIn(intents))); | 328 testing::ValuesIn(intents))); |
| 259 } // namespace | 329 } // namespace |
| OLD | NEW |