Index: tools/flags/SkCommonFlags.cpp |
diff --git a/tools/flags/SkCommonFlags.cpp b/tools/flags/SkCommonFlags.cpp |
index a2da1314fc637575764703f2ff0cdd8de524e2ee..e29c824a7ac1f470438b7f12fb36dc74914c8558 100644 |
--- a/tools/flags/SkCommonFlags.cpp |
+++ b/tools/flags/SkCommonFlags.cpp |
@@ -6,6 +6,7 @@ |
*/ |
#include "SkCommonFlags.h" |
+#include "SkOSFile.h" |
DEFINE_bool(cpu, true, "master switch for running CPU-bound work."); |
@@ -14,7 +15,8 @@ DEFINE_bool(dryRun, false, |
DEFINE_bool(gpu, true, "master switch for running GPU-bound work."); |
-DEFINE_string(images, "", "Directory of images to decode."); |
+DEFINE_string(images, "", "List of images and/or directories to decode. A directory with no images" |
+ " is treated as a fatal error."); |
DEFINE_string2(match, m, nullptr, |
"[~][^]substring[$] [...] of GM name to run.\n" |
@@ -48,3 +50,40 @@ DEFINE_string(key, "", |
DEFINE_string(properties, "", |
"Space-separated key/value pairs to add to JSON identifying this run."); |
+namespace SkCommonFlags { |
+ void collectImages(SkTArray<SkString>* output) { |
+ SkASSERT(output); |
+ |
+ static const char* const exts[] = { |
+ "bmp", "gif", "jpg", "jpeg", "png", "webp", "ktx", "astc", "wbmp", "ico", |
+ "BMP", "GIF", "JPG", "JPEG", "PNG", "WEBP", "KTX", "ASTC", "WBMP", "ICO", |
+ }; |
+ |
+ for (int i = 0; i < FLAGS_images.count(); ++i) { |
+ const char* flag = FLAGS_images[i]; |
+ if (!sk_exists(flag)) { |
+ SkDebugf("%s does not exits\n", flag); |
+ } |
+ |
+ if (sk_isdir(flag)) { |
+ // If the value passed in is a directory, add all the images |
+ bool foundAnImage = false; |
+ for (const char* ext : exts) { |
+ SkOSFile::Iter it(flag, ext); |
+ SkString file; |
+ while (it.next(&file)) { |
+ foundAnImage = true; |
+ output->push_back() = SkOSPath::Join(flag, file.c_str()); |
+ } |
+ } |
+ if (!foundAnImage) { |
+ SkDebugf("No supported images found in %s! Exiting\n", flag); |
+ exit(1); |
+ } |
+ } else { |
+ // Also add the value if it is a single image |
+ output->push_back() = flag; |
+ } |
+ } |
+ } |
+} |