Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Side by Side Diff: ui/gfx/color_transform_unittest.cc

Issue 2229953003: Support for custom primaries (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: test updated Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/gfx/color_transform_fuzzer.cc ('k') | ui/gfx/icc_profile.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/transform.h" 10 #include "ui/gfx/transform.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 ColorSpace::MatrixID::YDZDX, 52 ColorSpace::MatrixID::YDZDX,
53 }; 53 };
54 54
55 ColorSpace::RangeID all_ranges[] = {ColorSpace::RangeID::FULL, 55 ColorSpace::RangeID all_ranges[] = {ColorSpace::RangeID::FULL,
56 ColorSpace::RangeID::LIMITED}; 56 ColorSpace::RangeID::LIMITED};
57 57
58 TEST(SimpleColorSpace, BT709toSRGB) { 58 TEST(SimpleColorSpace, BT709toSRGB) {
59 ColorSpace bt709 = ColorSpace::CreateREC709(); 59 ColorSpace bt709 = ColorSpace::CreateREC709();
60 ColorSpace sRGB = ColorSpace::CreateSRGB(); 60 ColorSpace sRGB = ColorSpace::CreateSRGB();
61 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform( 61 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform(
62 bt709, sRGB, ColorTransform::Intent::ABSOLUTE)); 62 bt709, sRGB, ColorTransform::Intent::INTENT_ABSOLUTE));
63 63
64 ColorTransform::TriStim tmp(16.0f / 255.0f, 0.5f, 0.5f); 64 ColorTransform::TriStim tmp(16.0f / 255.0f, 0.5f, 0.5f);
65 t->transform(&tmp, 1); 65 t->transform(&tmp, 1);
66 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f); 66 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f);
67 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f); 67 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f);
68 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f); 68 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f);
69 69
70 tmp = ColorTransform::TriStim(235.0f / 255.0f, 0.5f, 0.5f); 70 tmp = ColorTransform::TriStim(235.0f / 255.0f, 0.5f, 0.5f);
71 t->transform(&tmp, 1); 71 t->transform(&tmp, 1);
72 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f); 72 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f);
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 0x00, 0x00, 0x07, 0x94, 0x00, 0x00, 0xfd, 0x8f, 0xff, 0xff, 0xfb, 0xa1, 336 0x00, 0x00, 0x07, 0x94, 0x00, 0x00, 0xfd, 0x8f, 0xff, 0xff, 0xfb, 0xa1,
337 0xff, 0xff, 0xfd, 0xa2, 0x00, 0x00, 0x03, 0xdb, 0x00, 0x00, 0xc0, 0x75}; 337 0xff, 0xff, 0xfd, 0xa2, 0x00, 0x00, 0x03, 0xdb, 0x00, 0x00, 0xc0, 0x75};
338 338
339 TEST(SimpleColorSpace, BT709toSRGBICC) { 339 TEST(SimpleColorSpace, BT709toSRGBICC) {
340 ICCProfile srgb_icc = ICCProfile::FromData( 340 ICCProfile srgb_icc = ICCProfile::FromData(
341 reinterpret_cast<char*>(srgb_icc_data), arraysize(srgb_icc_data)); 341 reinterpret_cast<char*>(srgb_icc_data), arraysize(srgb_icc_data));
342 342
343 ColorSpace bt709 = ColorSpace::CreateREC709(); 343 ColorSpace bt709 = ColorSpace::CreateREC709();
344 ColorSpace sRGB = srgb_icc.GetColorSpace(); 344 ColorSpace sRGB = srgb_icc.GetColorSpace();
345 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform( 345 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform(
346 bt709, sRGB, ColorTransform::Intent::ABSOLUTE)); 346 bt709, sRGB, ColorTransform::Intent::INTENT_ABSOLUTE));
347 347
348 ColorTransform::TriStim tmp(16.0f / 255.0f, 0.5f, 0.5f); 348 ColorTransform::TriStim tmp(16.0f / 255.0f, 0.5f, 0.5f);
349 t->transform(&tmp, 1); 349 t->transform(&tmp, 1);
350 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f); 350 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f);
351 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f); 351 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f);
352 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f); 352 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f);
353 353
354 tmp = ColorTransform::TriStim(235.0f / 255.0f, 0.5f, 0.5f); 354 tmp = ColorTransform::TriStim(235.0f / 255.0f, 0.5f, 0.5f);
355 t->transform(&tmp, 1); 355 t->transform(&tmp, 1);
356 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f); 356 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f);
357 EXPECT_NEAR(tmp.y(), 1.0f, 0.001f); 357 EXPECT_NEAR(tmp.y(), 1.0f, 0.001f);
358 EXPECT_NEAR(tmp.z(), 1.0f, 0.001f); 358 EXPECT_NEAR(tmp.z(), 1.0f, 0.001f);
359 359
360 // Test a blue color 360 // Test a blue color
361 tmp = ColorTransform::TriStim(128.0f / 255.0f, 240.0f / 255.0f, 0.5f); 361 tmp = ColorTransform::TriStim(128.0f / 255.0f, 240.0f / 255.0f, 0.5f);
362 t->transform(&tmp, 1); 362 t->transform(&tmp, 1);
363 EXPECT_GT(tmp.z(), tmp.x()); 363 EXPECT_GT(tmp.z(), tmp.x());
364 EXPECT_GT(tmp.z(), tmp.y()); 364 EXPECT_GT(tmp.z(), tmp.y());
365 } 365 }
366 366
367 TEST(SimpleColorSpace, GetColorSpace) {
368 ICCProfile srgb_icc = ICCProfile::FromData(
369 reinterpret_cast<char*>(srgb_icc_data), arraysize(srgb_icc_data));
370 ColorSpace sRGB = srgb_icc.GetColorSpace();
371 ColorSpace sRGB2 = sRGB;
372
373 // Prevent sRGB2 from using a cached ICC profile.
374 sRGB2.icc_profile_id_ = 0;
375
376 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform(
377 sRGB, sRGB2, ColorTransform::Intent::INTENT_ABSOLUTE));
378
379 ColorTransform::TriStim tmp(1.0f, 1.0f, 1.0f);
380 t->transform(&tmp, 1);
381 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f);
382 EXPECT_NEAR(tmp.y(), 1.0f, 0.001f);
383 EXPECT_NEAR(tmp.z(), 1.0f, 0.001f);
384
385 tmp = ColorTransform::TriStim(1.0f, 0.0f, 0.0f);
386 t->transform(&tmp, 1);
387 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f);
388 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f);
389 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f);
390
391 tmp = ColorTransform::TriStim(0.0f, 1.0f, 0.0f);
392 t->transform(&tmp, 1);
393 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f);
394 EXPECT_NEAR(tmp.y(), 1.0f, 0.001f);
395 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f);
396
397 tmp = ColorTransform::TriStim(0.0f, 0.0f, 1.0f);
398 t->transform(&tmp, 1);
399 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f);
400 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f);
401 EXPECT_NEAR(tmp.z(), 1.0f, 0.001f);
402 }
403
367 TEST(SimpleColorSpace, UnknownToSRGB) { 404 TEST(SimpleColorSpace, UnknownToSRGB) {
368 ColorSpace unknown; 405 ColorSpace unknown;
369 ColorSpace sRGB = ColorSpace::CreateSRGB(); 406 ColorSpace sRGB = ColorSpace::CreateSRGB();
370 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform( 407 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform(
371 unknown, sRGB, ColorTransform::Intent::PERCEPTUAL)); 408 unknown, sRGB, ColorTransform::Intent::INTENT_PERCEPTUAL));
372 409
373 ColorTransform::TriStim tmp(16.0f / 255.0f, 0.5f, 0.5f); 410 ColorTransform::TriStim tmp(16.0f / 255.0f, 0.5f, 0.5f);
374 t->transform(&tmp, 1); 411 t->transform(&tmp, 1);
375 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f); 412 EXPECT_NEAR(tmp.x(), 0.0f, 0.001f);
376 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f); 413 EXPECT_NEAR(tmp.y(), 0.0f, 0.001f);
377 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f); 414 EXPECT_NEAR(tmp.z(), 0.0f, 0.001f);
378 415
379 tmp = ColorTransform::TriStim(235.0f / 255.0f, 0.5f, 0.5f); 416 tmp = ColorTransform::TriStim(235.0f / 255.0f, 0.5f, 0.5f);
380 t->transform(&tmp, 1); 417 t->transform(&tmp, 1);
381 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f); 418 EXPECT_NEAR(tmp.x(), 1.0f, 0.001f);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 std::tr1::get<1>(GetParam()), 477 std::tr1::get<1>(GetParam()),
441 std::tr1::get<2>(GetParam()), 478 std::tr1::get<2>(GetParam()),
442 std::tr1::get<3>(GetParam())) {} 479 std::tr1::get<3>(GetParam())) {}
443 480
444 protected: 481 protected:
445 ColorSpace color_space_; 482 ColorSpace color_space_;
446 }; 483 };
447 484
448 TEST_P(ColorSpaceTest, testNullTransform) { 485 TEST_P(ColorSpaceTest, testNullTransform) {
449 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform( 486 std::unique_ptr<ColorTransform> t(ColorTransform::NewColorTransform(
450 color_space_, color_space_, ColorTransform::Intent::ABSOLUTE)); 487 color_space_, color_space_, ColorTransform::Intent::INTENT_ABSOLUTE));
451 ColorTransform::TriStim tristim(0.4f, 0.5f, 0.6f); 488 ColorTransform::TriStim tristim(0.4f, 0.5f, 0.6f);
452 t->transform(&tristim, 1); 489 t->transform(&tristim, 1);
453 EXPECT_NEAR(tristim.x(), 0.4f, 0.001f); 490 EXPECT_NEAR(tristim.x(), 0.4f, 0.001f);
454 EXPECT_NEAR(tristim.y(), 0.5f, 0.001f); 491 EXPECT_NEAR(tristim.y(), 0.5f, 0.001f);
455 EXPECT_NEAR(tristim.z(), 0.6f, 0.001f); 492 EXPECT_NEAR(tristim.z(), 0.6f, 0.001f);
456 } 493 }
457 494
458 TEST_P(ColorSpaceTest, toXYZandBack) { 495 TEST_P(ColorSpaceTest, toXYZandBack) {
459 std::unique_ptr<ColorTransform> t1(ColorTransform::NewColorTransform( 496 std::unique_ptr<ColorTransform> t1(ColorTransform::NewColorTransform(
460 color_space_, ColorSpace::CreateXYZD50(), 497 color_space_, ColorSpace::CreateXYZD50(),
461 ColorTransform::Intent::ABSOLUTE)); 498 ColorTransform::Intent::INTENT_ABSOLUTE));
462 std::unique_ptr<ColorTransform> t2(ColorTransform::NewColorTransform( 499 std::unique_ptr<ColorTransform> t2(ColorTransform::NewColorTransform(
463 ColorSpace::CreateXYZD50(), color_space_, 500 ColorSpace::CreateXYZD50(), color_space_,
464 ColorTransform::Intent::ABSOLUTE)); 501 ColorTransform::Intent::INTENT_ABSOLUTE));
465 ColorTransform::TriStim tristim(0.4f, 0.5f, 0.6f); 502 ColorTransform::TriStim tristim(0.4f, 0.5f, 0.6f);
466 t1->transform(&tristim, 1); 503 t1->transform(&tristim, 1);
467 t2->transform(&tristim, 1); 504 t2->transform(&tristim, 1);
468 EXPECT_NEAR(tristim.x(), 0.4f, 0.001f); 505 EXPECT_NEAR(tristim.x(), 0.4f, 0.001f);
469 EXPECT_NEAR(tristim.y(), 0.5f, 0.001f); 506 EXPECT_NEAR(tristim.y(), 0.5f, 0.001f);
470 EXPECT_NEAR(tristim.z(), 0.6f, 0.001f); 507 EXPECT_NEAR(tristim.z(), 0.6f, 0.001f);
471 } 508 }
472 509
473 INSTANTIATE_TEST_CASE_P( 510 INSTANTIATE_TEST_CASE_P(
474 A, 511 A,
(...skipping 12 matching lines...) Expand all
487 testing::ValuesIn(all_ranges))); 524 testing::ValuesIn(all_ranges)));
488 525
489 INSTANTIATE_TEST_CASE_P( 526 INSTANTIATE_TEST_CASE_P(
490 C, 527 C,
491 ColorSpaceTest, 528 ColorSpaceTest,
492 testing::Combine(testing::ValuesIn(all_primaries), 529 testing::Combine(testing::ValuesIn(all_primaries),
493 testing::Values(ColorSpace::TransferID::BT709), 530 testing::Values(ColorSpace::TransferID::BT709),
494 testing::ValuesIn(all_matrices), 531 testing::ValuesIn(all_matrices),
495 testing::ValuesIn(all_ranges))); 532 testing::ValuesIn(all_ranges)));
496 } // namespace 533 } // namespace
OLDNEW
« no previous file with comments | « ui/gfx/color_transform_fuzzer.cc ('k') | ui/gfx/icc_profile.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698