Chromium Code Reviews| Index: tools/flags/SkCommonFlags.cpp |
| diff --git a/tools/flags/SkCommonFlags.cpp b/tools/flags/SkCommonFlags.cpp |
| index 2d5a855bf79262b1c229ae7f46f51dfdc6eb8031..e6d269b9e2e78772948fae03f0dd5ea170fff0e1 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" |
| @@ -47,5 +49,46 @@ DEFINE_string(key, "", |
| "Space-separated key/value pairs to add to JSON identifying this builder."); |
| DEFINE_string(properties, "", |
| "Space-separated key/value pairs to add to JSON identifying this run."); |
| - |
| DEFINE_bool2(pre_log, p, false, "Log before running each test. May be incomprehensible when threading"); |
| + |
| +bool 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", |
| +#ifdef SK_CODEC_DECODES_RAW |
|
scroggo
2016/01/27 15:43:37
This could go in its own CL, but I'm moving it any
|
| + "arw", "cr2", "dng", "nef", "nrw", "orf", "raf", "rw2", "pef", "srw", |
| + "ARW", "CR2", "DNG", "NEF", "NRW", "ORF", "RAF", "RW2", "PEF", "SRW", |
| +#endif |
| + }; |
| + |
| + for (int i = 0; i < FLAGS_images.count(); ++i) { |
| + const char* flag = FLAGS_images[i]; |
| + if (!sk_exists(flag)) { |
| + SkDebugf("%s does not exist!\n", flag); |
| + return false; |
| + } |
| + |
| + 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!\n", flag); |
| + return false; |
| + } |
| + } else { |
| + // Also add the value if it is a single image |
| + output->push_back() = flag; |
| + } |
| + } |
| + return true; |
| +} |