diff options
author | Mike Reed <reed@google.com> | 2017-12-04 16:06:03 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-12-04 21:28:09 +0000 |
commit | 2484660d1b5ee11c97cb04e1772cac2a39bcaa26 (patch) | |
tree | f17293651af1bdc0d90631d1a21cba3224495df1 /tools/sk_tool_utils.cpp | |
parent | d1ec4105f71744d5966ef0eb2fbf5eddaf921fde (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.cpp | 25 |
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 |