Add color space logic to skdiff

By default, decode images to a common color space (sRGB) before comparing.
This lets us compare images rendered to different gamuts (eg sRGB or P3),
where the raw pixel values are wildly different, even though the colors
being described are actually the same (or very similar).

Add a "--nocolorspace" option to get the existing behavior of comparing
the raw pixel values.

Also removed the source code for skimagediff, which hasn't been built in
a long time.

Change-Id: Ic55724b523348421bf21e9764d155730b94fc40a
Reviewed-on: https://skia-review.googlesource.com/141962
Auto-Submit: Brian Osman <brianosman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
diff --git a/tools/skdiff/skdiff_main.cpp b/tools/skdiff/skdiff_main.cpp
index 59e9b0a..56aebe7 100644
--- a/tools/skdiff/skdiff_main.cpp
+++ b/tools/skdiff/skdiff_main.cpp
@@ -344,7 +344,7 @@
     if (resource.fBitmap.empty() && !DiffResource::isStatusFailed(resource.fStatus)) {
         sk_sp<SkData> fileBits(read_file(resource.fFullPath.c_str()));
         if (fileBits) {
-            get_bitmap(fileBits, resource, true);
+            get_bitmap(fileBits, resource, true, true);
         } else {
             SkDebugf("WARNING: couldn't read %s file <%s>\n", name, resource.fFullPath.c_str());
             resource.fStatus = DiffResource::kCouldNotRead_Status;
@@ -375,6 +375,7 @@
 /// If outputDir.isEmpty(), don't write out diff files.
 static void create_diff_images (DiffMetricProc dmp,
                                 const int colorThreshold,
+                                bool ignoreColorSpace,
                                 RecordArray* differences,
                                 const SkString& baseDir,
                                 const SkString& comparisonDir,
@@ -495,8 +496,8 @@
                 VERBOSE_STATUS("MATCH", ANSI_COLOR_GREEN, baseFiles[i]);
             } else {
                 AutoReleasePixels arp(drp);
-                get_bitmap(baseFileBits, drp->fBase, false);
-                get_bitmap(comparisonFileBits, drp->fComparison, false);
+                get_bitmap(baseFileBits, drp->fBase, false, ignoreColorSpace);
+                get_bitmap(comparisonFileBits, drp->fComparison, false, ignoreColorSpace);
                 VERBOSE_STATUS("DIFFERENT", ANSI_COLOR_RED, baseFiles[i]);
                 if (DiffResource::kDecoded_Status == drp->fBase.fStatus &&
                     DiffResource::kDecoded_Status == drp->fComparison.fStatus) {
@@ -585,6 +586,7 @@
 "\n    --match <substring>: compare files whose filenames contain this substring;"
 "\n                         if unspecified, compare ALL files."
 "\n                         this flag may be repeated."
+"\n    --nocolorspace: Ignore color space of images."
 "\n    --nodiffs: don't write out image diffs or index.html, just generate"
 "\n               report on stdout"
 "\n    --nomatch <substring>: regardless of --match, DO NOT compare files whose"
@@ -630,6 +632,7 @@
     bool recurseIntoSubdirs = true;
     bool verbose = false;
     bool listFailingBase = false;
+    bool ignoreColorSpace = false;
 
     RecordArray differences;
     DiffSummary summary;
@@ -705,6 +708,10 @@
             matchSubstrings.push(new SkString(argv[++i]));
             continue;
         }
+        if (!strcmp(argv[i], "--nocolorspace")) {
+            ignoreColorSpace = true;
+            continue;
+        }
         if (!strcmp(argv[i], "--nodiffs")) {
             generateDiffs = false;
             continue;
@@ -805,7 +812,7 @@
         matchSubstrings.push(new SkString(""));
     }
 
-    create_diff_images(diffProc, colorThreshold, &differences,
+    create_diff_images(diffProc, colorThreshold, ignoreColorSpace, &differences,
                        baseDir, comparisonDir, outputDir,
                        matchSubstrings, nomatchSubstrings, recurseIntoSubdirs, generateDiffs,
                        verbose, &summary);