Chromium Code Reviews| Index: cc/test/pixel_comparator.cc |
| diff --git a/cc/test/pixel_comparator.cc b/cc/test/pixel_comparator.cc |
| index 44fa7dd21ac81e91c59cfdd6a6ae6de713ee32bc..bbfb6f7983bbbe0bae4ea3835f1a5d0d406e9b73 100644 |
| --- a/cc/test/pixel_comparator.cc |
| +++ b/cc/test/pixel_comparator.cc |
| @@ -18,6 +18,11 @@ bool ExactPixelComparator::Compare(const SkBitmap& actual_bmp, |
| const SkBitmap& expected_bmp) const { |
| // Number of pixels with an error |
| int error_pixels_count = 0; |
| + // Min/Max X,Y for bounding box |
| + int minimum_difference_x = -99; |
|
danakj
2014/07/07 16:07:02
Can you just use a gfx::Rect that starts empty and
sohanjg
2014/07/08 07:31:08
Done.
|
| + int minimum_difference_y = -99; |
| + int maximum_difference_x = 0; |
| + int maximum_difference_y = 0; |
| // Check that bitmaps have identical dimensions. |
| DCHECK(actual_bmp.width() == expected_bmp.width() && |
| @@ -25,7 +30,6 @@ bool ExactPixelComparator::Compare(const SkBitmap& actual_bmp, |
| SkAutoLockPixels lock_actual_bmp(actual_bmp); |
| SkAutoLockPixels lock_expected_bmp(expected_bmp); |
| - |
| for (int x = 0; x < actual_bmp.width(); ++x) { |
| for (int y = 0; y < actual_bmp.height(); ++y) { |
| SkColor actual_color = actual_bmp.getColor(x, y); |
| @@ -34,26 +38,32 @@ bool ExactPixelComparator::Compare(const SkBitmap& actual_bmp, |
| actual_color = SkColorSetA(actual_color, 0); |
| expected_color = SkColorSetA(expected_color, 0); |
| } |
| - |
| if (actual_color != expected_color) { |
| ++error_pixels_count; |
| - LOG(ERROR) << "Pixel error at x=" << x << " y=" << y << "; " |
| - << "actual RGBA=(" |
| - << SkColorGetR(actual_color) << "," |
| - << SkColorGetG(actual_color) << "," |
| - << SkColorGetB(actual_color) << "," |
| - << SkColorGetA(actual_color) << "); " |
| - << "expected RGBA=(" |
| - << SkColorGetR(expected_color) << "," |
| - << SkColorGetG(expected_color) << "," |
| - << SkColorGetB(expected_color) << "," |
| - << SkColorGetA(expected_color) << ")"; |
| + int difference_color = actual_color - expected_color; |
| + if (difference_color < 0) |
| + difference_color = 0 - difference_color; |
| + if ((error_pixels_count == 1) || |
| + (x < minimum_difference_x && y < minimum_difference_y)) { |
| + minimum_difference_x = x; |
| + minimum_difference_y = y; |
| + } |
| + if (x > maximum_difference_x && y > maximum_difference_y) { |
| + maximum_difference_x = x; |
| + maximum_difference_y = y; |
| + } |
| } |
| } |
| } |
| if (error_pixels_count != 0) { |
| LOG(ERROR) << "Number of pixel with an error: " << error_pixels_count; |
| + LOG(ERROR) << "Error Bounding Box : " |
| + << " Max X-Y Co-ordinates X = " << maximum_difference_x |
|
danakj
2014/07/07 16:07:02
You can just use ToString() on the Rect if you use
sohanjg
2014/07/08 07:31:08
Done.
|
| + << " Y = " << maximum_difference_y; |
| + LOG(ERROR) << "Error Bounding Box : " |
| + << " Min X-Y Co-ordinates X = " << minimum_difference_x |
| + << " Y = " << minimum_difference_y; |
| return false; |
| } |
| @@ -92,6 +102,12 @@ bool FuzzyPixelComparator::Compare(const SkBitmap& actual_bmp, |
| int max_abs_error_b = 0; |
| int max_abs_error_a = 0; |
| + // Min/Max X,Y for bounding box |
| + int minimum_difference_x = -99; |
| + int minimum_difference_y = -99; |
| + int maximum_difference_x = 0; |
| + int maximum_difference_y = 0; |
| + |
| // Check that bitmaps have identical dimensions. |
| DCHECK(actual_bmp.width() == expected_bmp.width() && |
| actual_bmp.height() == expected_bmp.height()); |
| @@ -192,7 +208,7 @@ bool FuzzyPixelComparator::Compare(const SkBitmap& actual_bmp, |
| << "G=" << max_abs_error_g << " " |
| << "B=" << max_abs_error_b << " " |
| << "A=" << max_abs_error_a; |
| - |
| + error_pixels_count = 0; |
| for (int x = 0; x < actual_bmp.width(); ++x) { |
| for (int y = 0; y < actual_bmp.height(); ++y) { |
| SkColor actual_color = actual_bmp.getColor(x, y); |
| @@ -202,21 +218,28 @@ bool FuzzyPixelComparator::Compare(const SkBitmap& actual_bmp, |
| expected_color = SkColorSetA(expected_color, 0); |
| } |
| if (actual_color != expected_color) { |
| - LOG(ERROR) << "Pixel error at x=" << x << " y=" << y << "; " |
| - << "actual RGBA=(" |
| - << SkColorGetR(actual_color) << "," |
| - << SkColorGetG(actual_color) << "," |
| - << SkColorGetB(actual_color) << "," |
| - << SkColorGetA(actual_color) << "); " |
| - << "expected RGBA=(" |
| - << SkColorGetR(expected_color) << "," |
| - << SkColorGetG(expected_color) << "," |
| - << SkColorGetB(expected_color) << "," |
| - << SkColorGetA(expected_color) << ")"; |
| + ++error_pixels_count; |
| + int difference_color = actual_color - expected_color; |
| + if (difference_color < 0) |
| + difference_color = 0 - difference_color; |
| + if ((error_pixels_count == 1) || |
| + (x < minimum_difference_x && y < minimum_difference_y)) { |
| + minimum_difference_x = x; |
| + minimum_difference_y = y; |
| + } |
| + if (x > maximum_difference_x && y > maximum_difference_y) { |
| + maximum_difference_x = x; |
| + maximum_difference_y = y; |
| + } |
| } |
| } |
| } |
| - |
| + LOG(ERROR) << "Error Bounding Box : " |
| + << " Max X-Y Co-ordinates X = " << maximum_difference_x |
| + << " Y = " << maximum_difference_y; |
| + LOG(ERROR) << "Error Bounding Box : " |
| + << " Min X-Y Co-ordinates X = " << minimum_difference_x |
| + << " Y = " << minimum_difference_y; |
| return false; |
| } else { |
| return true; |