OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ui/gfx/skbitmap_operations.h" | 5 #include "ui/gfx/skbitmap_operations.h" |
6 | 6 |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 #include "third_party/skia/include/core/SkBitmap.h" | 8 #include "third_party/skia/include/core/SkBitmap.h" |
9 #include "third_party/skia/include/core/SkColorPriv.h" | 9 #include "third_party/skia/include/core/SkColorPriv.h" |
10 #include "third_party/skia/include/core/SkUnPreMultiply.h" | 10 #include "third_party/skia/include/core/SkUnPreMultiply.h" |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 // Shift to red. | 266 // Shift to red. |
267 color_utils::HSL hsl = { 0, -1, -1 }; | 267 color_utils::HSL hsl = { 0, -1, -1 }; |
268 | 268 |
269 SkBitmap shifted = SkBitmapOperations::CreateHSLShiftedBitmap(src, hsl); | 269 SkBitmap shifted = SkBitmapOperations::CreateHSLShiftedBitmap(src, hsl); |
270 | 270 |
271 SkAutoLockPixels src_lock(src); | 271 SkAutoLockPixels src_lock(src); |
272 SkAutoLockPixels shifted_lock(shifted); | 272 SkAutoLockPixels shifted_lock(shifted); |
273 | 273 |
274 for (int y = 0, i = 0; y < src_h; y++) { | 274 for (int y = 0, i = 0; y < src_h; y++) { |
275 for (int x = 0; x < src_w; x++) { | 275 for (int x = 0; x < src_w; x++) { |
276 EXPECT_TRUE(ColorsClose(*shifted.getAddr32(x, y), | 276 EXPECT_TRUE(ColorsClose(shifted.getColor(x, y), |
277 SkColorSetARGB(255, i % 255, 0, 0))); | 277 SkColorSetARGB(255, i % 255, 0, 0))); |
278 i++; | 278 i++; |
279 } | 279 } |
280 } | 280 } |
281 } | 281 } |
282 | 282 |
283 // Validate HSL shift. | 283 // Validate HSL shift. |
284 TEST(SkBitmapOperationsTest, ValidateHSLShift) { | 284 TEST(SkBitmapOperationsTest, ValidateHSLShift) { |
285 // Note: 255/51 = 5 (exactly) => 6 including 0! | 285 // Note: 255/51 = 5 (exactly) => 6 including 0! |
286 const int inc = 51; | 286 const int inc = 51; |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
470 // The result should be divided in half 100x43 -> 50x22 -> 25x11 | 470 // The result should be divided in half 100x43 -> 50x22 -> 25x11 |
471 EXPECT_EQ(25, result.width()); | 471 EXPECT_EQ(25, result.width()); |
472 EXPECT_EQ(11, result.height()); | 472 EXPECT_EQ(11, result.height()); |
473 } | 473 } |
474 | 474 |
475 TEST(SkBitmapOperationsTest, UnPreMultiply) { | 475 TEST(SkBitmapOperationsTest, UnPreMultiply) { |
476 SkBitmap input; | 476 SkBitmap input; |
477 input.setConfig(SkBitmap::kARGB_8888_Config, 2, 2); | 477 input.setConfig(SkBitmap::kARGB_8888_Config, 2, 2); |
478 input.allocPixels(); | 478 input.allocPixels(); |
479 | 479 |
480 *input.getAddr32(0, 0) = 0x80000000; | 480 // Set PMColors into the bitmap |
481 *input.getAddr32(1, 0) = 0x80808080; | 481 *input.getAddr32(0, 0) = SkPackARGB32NoCheck(0x80, 0x00, 0x00, 0x00); |
482 *input.getAddr32(0, 1) = 0xFF00CC88; | 482 *input.getAddr32(1, 0) = SkPackARGB32NoCheck(0x80, 0x80, 0x80, 0x80); |
483 *input.getAddr32(1, 1) = 0x0000CC88; | 483 *input.getAddr32(0, 1) = SkPackARGB32NoCheck(0xFF, 0x00, 0xCC, 0x88); |
| 484 *input.getAddr32(1, 1) = SkPackARGB32NoCheck(0x00, 0x00, 0xCC, 0x88); |
484 | 485 |
485 SkBitmap result = SkBitmapOperations::UnPreMultiply(input); | 486 SkBitmap result = SkBitmapOperations::UnPreMultiply(input); |
486 EXPECT_EQ(2, result.width()); | 487 EXPECT_EQ(2, result.width()); |
487 EXPECT_EQ(2, result.height()); | 488 EXPECT_EQ(2, result.height()); |
488 | 489 |
489 SkAutoLockPixels lock(result); | 490 SkAutoLockPixels lock(result); |
490 EXPECT_EQ(0x80000000, *result.getAddr32(0, 0)); | 491 EXPECT_EQ(0x80000000, *result.getAddr32(0, 0)); |
491 EXPECT_EQ(0x80FFFFFF, *result.getAddr32(1, 0)); | 492 EXPECT_EQ(0x80FFFFFF, *result.getAddr32(1, 0)); |
492 EXPECT_EQ(0xFF00CC88, *result.getAddr32(0, 1)); | 493 EXPECT_EQ(0xFF00CC88, *result.getAddr32(0, 1)); |
493 EXPECT_EQ(0x00000000u, *result.getAddr32(1, 1)); // "Division by zero". | 494 EXPECT_EQ(0x00000000u, *result.getAddr32(1, 1)); // "Division by zero". |
(...skipping 14 matching lines...) Expand all Loading... |
508 EXPECT_EQ(3, result.width()); | 509 EXPECT_EQ(3, result.width()); |
509 EXPECT_EQ(2, result.height()); | 510 EXPECT_EQ(2, result.height()); |
510 | 511 |
511 SkAutoLockPixels lock(result); | 512 SkAutoLockPixels lock(result); |
512 for (int x = 0; x < input.width(); ++x) { | 513 for (int x = 0; x < input.width(); ++x) { |
513 for (int y = 0; y < input.height(); ++y) { | 514 for (int y = 0; y < input.height(); ++y) { |
514 EXPECT_EQ(*input.getAddr32(x, y), *result.getAddr32(y, x)); | 515 EXPECT_EQ(*input.getAddr32(x, y), *result.getAddr32(y, x)); |
515 } | 516 } |
516 } | 517 } |
517 } | 518 } |
OLD | NEW |