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

Unified Diff: cc/test/image_comparator.h

Issue 12558003: cc: Made image comparison for pixel tests error tolerant. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: cc/test/image_comparator.h
diff --git a/cc/test/image_comparator.h b/cc/test/image_comparator.h
new file mode 100644
index 0000000000000000000000000000000000000000..3dfd33ce39c568436225b7c8f34f5fbf6a6ed481
--- /dev/null
+++ b/cc/test/image_comparator.h
@@ -0,0 +1,61 @@
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CC_TEST_IMAGE_COMPARATOR_H_
+#define CC_TEST_IMAGE_COMPARATOR_H_
+
+#include "third_party/skia/include/core/SkBitmap.h"
+
+namespace cc {
+
+class ImageComparator {
+ public:
+
+ struct ErrorMetrics {
+ ErrorMetrics(float error_pixels_percentage = 0.0f,
+ float small_error_pixels_percentage = 0.0f,
+ float avg_abs_error_r = 0.0f,
+ float avg_abs_error_g = 0.0f,
+ float avg_abs_error_b = 0.0f,
+ unsigned int max_abs_error_r = 0,
+ unsigned int max_abs_error_g = 0,
+ unsigned int max_abs_error_b = 0,
+ unsigned int small_error_threshold = 1);
+ // Percentage of pixels that are different in any way.
+ float error_pixels_percentage;
+ // Percentage of pixels that are at most off by small_error_threshold
+ // in each color channel.
+ float small_error_pixels_percentage;
+ // The per channel average absolute error over all pixels that are different.
+ float avg_abs_error_r;
+ float avg_abs_error_g;
+ float avg_abs_error_b;
+ // The per channel maxiumum absolute error over all pixels that are different
+ // (average over all pixels is the same).
+ unsigned int max_abs_error_r;
+ unsigned int max_abs_error_g;
+ unsigned int max_abs_error_b;
+ // The threshold that was used to classify small vs. large errors.
+ // Small errors are less or equal to this value.
+ unsigned int small_error_threshold;
+ };
+
+ // Strict image comparator with zero thresholds.
+ ImageComparator();
+ // User defined comparator with given thresholds.
+ ImageComparator(const ErrorMetrics& thresholds);
+
+ // Configure the comparator to allow a given percentage of off-by-one pixel errors
+ void AllowOffByOneErrors(float off_by_one_pixels_percentage = 100.0f);
+
+ // Compare two bitmaps. Return true if they are equal within the given thresholds
+ bool Compare(const SkBitmap& a, const SkBitmap& b, ErrorMetrics* return_metrics = NULL) const;
+
+ private:
+ ErrorMetrics thresholds_;
+};
+
+} // namespace cc
+
+#endif // CC_TEST_IMAGE_COMPARATOR_H_

Powered by Google App Engine
This is Rietveld 408576698