Index: tools/skpdiff/skpdiff_main.cpp |
diff --git a/tools/skpdiff/skpdiff_main.cpp b/tools/skpdiff/skpdiff_main.cpp |
index b1bf9173c7c5fad03e6d30aa23f12f17d3a34afe..3d1bcda0f475159b3c36c203ffa0487c8dac4658 100644 |
--- a/tools/skpdiff/skpdiff_main.cpp |
+++ b/tools/skpdiff/skpdiff_main.cpp |
@@ -5,6 +5,11 @@ |
* found in the LICENSE file. |
*/ |
+// TODO(djsollen): Rename this whole package (perhaps to "SkMultiDiffer"). |
+// It's not just for "pdiff" (perceptual diffs)--it's a harness that allows |
+// the execution of an arbitrary set of difference algorithms. |
+// See http://skbug.com/2711 ('rename skpdiff') |
+ |
#if SK_SUPPORT_OPENCL |
#define __NO_STD_VECTOR // Uses cl::vectpr instead of std::vectpr |
@@ -37,10 +42,12 @@ DEFINE_bool2(list, l, false, "List out available differs"); |
DEFINE_string2(differs, d, "", "The names of the differs to use or all of them by default"); |
DEFINE_string2(folders, f, "", "Compare two folders with identical subfile names: <baseline folder> <test folder>"); |
DEFINE_string2(patterns, p, "", "Use two patterns to compare images: <baseline> <test>"); |
-DEFINE_string2(output, o, "", "Writes the output of these diffs to output: <output>"); |
-DEFINE_string(alphaDir, "", "Writes the alpha mask of these diffs to output: <output>"); |
+DEFINE_string2(output, o, "", "Writes a JSON summary of these diffs to file: <filepath>"); |
+DEFINE_string(alphaDir, "", "If the differ can generate an alpha mask, write it into directory: <dirpath>"); |
+DEFINE_string(rgbDiffDir, "", "If the differ can generate an image showing the RGB diff at each pixel, write it into directory: <dirpath>"); |
+DEFINE_string(whiteDiffDir, "", "If the differ can generate an image showing every changed pixel in white, write it into directory: <dirpath>"); |
DEFINE_bool(jsonp, true, "Output JSON with padding"); |
-DEFINE_string(csv, "", "Writes the output of these diffs to a csv file"); |
+DEFINE_string(csv, "", "Writes the output of these diffs to a csv file: <filepath>"); |
DEFINE_int32(threads, -1, "run N threads in parallel [default is derived from CPUs available]"); |
#if SK_SUPPORT_OPENCL |
@@ -193,12 +200,30 @@ int tool_main(int argc, char * argv[]) { |
return 1; |
} |
} |
+ if (!FLAGS_rgbDiffDir.isEmpty()) { |
+ if (1 != FLAGS_rgbDiffDir.count()) { |
+ SkDebugf("rgbDiffDir flag expects one argument: <directory>\n"); |
+ return 1; |
+ } |
+ } |
+ if (!FLAGS_whiteDiffDir.isEmpty()) { |
+ if (1 != FLAGS_whiteDiffDir.count()) { |
+ SkDebugf("whiteDiffDir flag expects one argument: <directory>\n"); |
+ return 1; |
+ } |
+ } |
SkDiffContext ctx; |
ctx.setDiffers(chosenDiffers); |
if (!FLAGS_alphaDir.isEmpty()) { |
- ctx.setDifferenceDir(SkString(FLAGS_alphaDir[0])); |
+ ctx.setAlphaMaskDir(SkString(FLAGS_alphaDir[0])); |
+ } |
+ if (!FLAGS_rgbDiffDir.isEmpty()) { |
+ ctx.setRgbDiffDir(SkString(FLAGS_rgbDiffDir[0])); |
+ } |
+ if (!FLAGS_whiteDiffDir.isEmpty()) { |
+ ctx.setWhiteDiffDir(SkString(FLAGS_whiteDiffDir[0])); |
} |
if (FLAGS_threads >= 0) { |