| // Copyright 2019 Google LLC | |
| // Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. | |
| #include "src/core/SkOSFile.h" | |
| #include "src/utils/SkOSPath.h" | |
| #include "tools/flags/CommonFlags.h" | |
| using namespace skia_private; | |
| namespace CommonFlags { | |
| bool CollectImages(const CommandLineFlags::StringArray& images, TArray<SkString>* output) { | |
| SkASSERT(output); | |
| static const char* const exts[] = { | |
| "bmp", | |
| "gif", | |
| "jpg", | |
| "jpeg", | |
| "png", | |
| "webp", | |
| "ktx", | |
| "astc", | |
| "wbmp", | |
| "ico", | |
| #if !defined(SK_BUILD_FOR_WIN) | |
| "BMP", | |
| "GIF", | |
| "JPG", | |
| "JPEG", | |
| "PNG", | |
| "WEBP", | |
| "KTX", | |
| "ASTC", | |
| "WBMP", | |
| "ICO", | |
| #endif | |
| #ifdef SK_CODEC_DECODES_RAW | |
| "arw", | |
| "cr2", | |
| "dng", | |
| "nef", | |
| "nrw", | |
| "orf", | |
| "raf", | |
| "rw2", | |
| "pef", | |
| "srw", | |
| #if !defined(SK_BUILD_FOR_WIN) | |
| "ARW", | |
| "CR2", | |
| "DNG", | |
| "NEF", | |
| "NRW", | |
| "ORF", | |
| "RAF", | |
| "RW2", | |
| "PEF", | |
| "SRW", | |
| #endif | |
| #endif | |
| }; | |
| for (int i = 0; i < images.size(); ++i) { | |
| const char* flag = 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; | |
| } | |
| } // namespace CommonFlags |