12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- // 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"
- bool CollectImages(CommandLineFlags::StringArray images, SkTArray<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_HAS_HEIF_LIBRARY
- "heic",
- #if !defined(SK_BUILD_FOR_WIN)
- "HEIC",
- #endif
- #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.count(); ++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;
- }
|