aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/sk_tool_utils.cpp
diff options
context:
space:
mode:
authorGravatar Mike Reed <reed@google.com>2017-12-04 16:06:03 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-04 21:28:09 +0000
commit2484660d1b5ee11c97cb04e1772cac2a39bcaa26 (patch)
treef17293651af1bdc0d90631d1a21cba3224495df1 /tools/sk_tool_utils.cpp
parentd1ec4105f71744d5966ef0eb2fbf5eddaf921fde (diff)
add util to compare images
Bug: skia: Change-Id: Ia64e517c2fbb5560243c07ab17a887a104e07559 Reviewed-on: https://skia-review.googlesource.com/79721 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Mike Reed <reed@google.com>
Diffstat (limited to 'tools/sk_tool_utils.cpp')
-rw-r--r--tools/sk_tool_utils.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/tools/sk_tool_utils.cpp b/tools/sk_tool_utils.cpp
index 5321513a17..a025209166 100644
--- a/tools/sk_tool_utils.cpp
+++ b/tools/sk_tool_utils.cpp
@@ -13,6 +13,7 @@
#include "SkCommonFlags.h"
#include "SkFontMgr.h"
#include "SkFontStyle.h"
+#include "SkImage.h"
#include "SkPixelRef.h"
#include "SkPM4f.h"
#include "SkPoint3.h"
@@ -513,11 +514,12 @@ void copy_to_g8(SkBitmap* dst, const SkBitmap& src) {
return SkMax32(dr, SkMax32(dg, SkMax32(db, da)));
}
- bool equal_pixels(const SkPixmap& a, const SkPixmap& b, unsigned maxDiff) {
+ bool equal_pixels(const SkPixmap& a, const SkPixmap& b, unsigned maxDiff,
+ bool respectColorSpace) {
if (a.width() != b.width() ||
a.height() != b.height() ||
a.colorType() != b.colorType() ||
- a.colorSpace() != b.colorSpace())
+ (respectColorSpace && (a.colorSpace() != b.colorSpace())))
{
return false;
}
@@ -538,8 +540,23 @@ void copy_to_g8(SkBitmap* dst, const SkBitmap& src) {
return true;
}
- bool equal_pixels(const SkBitmap& bm0, const SkBitmap& bm1, unsigned maxDiff) {
+ bool equal_pixels(const SkBitmap& bm0, const SkBitmap& bm1, unsigned maxDiff,
+ bool respectColorSpaces) {
SkPixmap pm0, pm1;
- return bm0.peekPixels(&pm0) && bm1.peekPixels(&pm1) && equal_pixels(pm0, pm1, maxDiff);
+ return bm0.peekPixels(&pm0) && bm1.peekPixels(&pm1) &&
+ equal_pixels(pm0, pm1, maxDiff, respectColorSpaces);
+ }
+
+ bool equal_pixels(const SkImage* a, const SkImage* b, unsigned maxDiff,
+ bool respectColorSpaces) {
+ // ensure that peekPixels will succeed
+ auto imga = a->makeRasterImage();
+ auto imgb = b->makeRasterImage();
+ a = imga.get();
+ b = imgb.get();
+
+ SkPixmap pm0, pm1;
+ return a->peekPixels(&pm0) && b->peekPixels(&pm1) &&
+ equal_pixels(pm0, pm1, maxDiff, respectColorSpaces);
}
} // namespace sk_tool_utils