1cb93a386Sopenharmony_ci// Copyright 2019 Google LLC. 2cb93a386Sopenharmony_ci// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. 3cb93a386Sopenharmony_ci 4cb93a386Sopenharmony_ci#include "src/core/SkOSFile.h" 5cb93a386Sopenharmony_ci#include "src/utils/SkOSPath.h" 6cb93a386Sopenharmony_ci#include "tools/flags/CommonFlags.h" 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_cinamespace CommonFlags { 9cb93a386Sopenharmony_cibool CollectImages(CommandLineFlags::StringArray images, SkTArray<SkString>* output) { 10cb93a386Sopenharmony_ci SkASSERT(output); 11cb93a386Sopenharmony_ci 12cb93a386Sopenharmony_ci static const char* const exts[] = { 13cb93a386Sopenharmony_ci "bmp", 14cb93a386Sopenharmony_ci "gif", 15cb93a386Sopenharmony_ci "jpg", 16cb93a386Sopenharmony_ci "jpeg", 17cb93a386Sopenharmony_ci "png", 18cb93a386Sopenharmony_ci "webp", 19cb93a386Sopenharmony_ci "ktx", 20cb93a386Sopenharmony_ci "astc", 21cb93a386Sopenharmony_ci "wbmp", 22cb93a386Sopenharmony_ci "ico", 23cb93a386Sopenharmony_ci#if !defined(SK_BUILD_FOR_WIN) 24cb93a386Sopenharmony_ci "BMP", 25cb93a386Sopenharmony_ci "GIF", 26cb93a386Sopenharmony_ci "JPG", 27cb93a386Sopenharmony_ci "JPEG", 28cb93a386Sopenharmony_ci "PNG", 29cb93a386Sopenharmony_ci "WEBP", 30cb93a386Sopenharmony_ci "KTX", 31cb93a386Sopenharmony_ci "ASTC", 32cb93a386Sopenharmony_ci "WBMP", 33cb93a386Sopenharmony_ci "ICO", 34cb93a386Sopenharmony_ci#endif 35cb93a386Sopenharmony_ci#ifdef SK_HAS_HEIF_LIBRARY 36cb93a386Sopenharmony_ci "heic", 37cb93a386Sopenharmony_ci#if !defined(SK_BUILD_FOR_WIN) 38cb93a386Sopenharmony_ci "HEIC", 39cb93a386Sopenharmony_ci#endif 40cb93a386Sopenharmony_ci#endif 41cb93a386Sopenharmony_ci#ifdef SK_CODEC_DECODES_RAW 42cb93a386Sopenharmony_ci "arw", 43cb93a386Sopenharmony_ci "cr2", 44cb93a386Sopenharmony_ci "dng", 45cb93a386Sopenharmony_ci "nef", 46cb93a386Sopenharmony_ci "nrw", 47cb93a386Sopenharmony_ci "orf", 48cb93a386Sopenharmony_ci "raf", 49cb93a386Sopenharmony_ci "rw2", 50cb93a386Sopenharmony_ci "pef", 51cb93a386Sopenharmony_ci "srw", 52cb93a386Sopenharmony_ci#if !defined(SK_BUILD_FOR_WIN) 53cb93a386Sopenharmony_ci "ARW", 54cb93a386Sopenharmony_ci "CR2", 55cb93a386Sopenharmony_ci "DNG", 56cb93a386Sopenharmony_ci "NEF", 57cb93a386Sopenharmony_ci "NRW", 58cb93a386Sopenharmony_ci "ORF", 59cb93a386Sopenharmony_ci "RAF", 60cb93a386Sopenharmony_ci "RW2", 61cb93a386Sopenharmony_ci "PEF", 62cb93a386Sopenharmony_ci "SRW", 63cb93a386Sopenharmony_ci#endif 64cb93a386Sopenharmony_ci#endif 65cb93a386Sopenharmony_ci }; 66cb93a386Sopenharmony_ci 67cb93a386Sopenharmony_ci for (int i = 0; i < images.count(); ++i) { 68cb93a386Sopenharmony_ci const char* flag = images[i]; 69cb93a386Sopenharmony_ci if (!sk_exists(flag)) { 70cb93a386Sopenharmony_ci SkDebugf("%s does not exist!\n", flag); 71cb93a386Sopenharmony_ci return false; 72cb93a386Sopenharmony_ci } 73cb93a386Sopenharmony_ci 74cb93a386Sopenharmony_ci if (sk_isdir(flag)) { 75cb93a386Sopenharmony_ci // If the value passed in is a directory, add all the images 76cb93a386Sopenharmony_ci bool foundAnImage = false; 77cb93a386Sopenharmony_ci for (const char* ext : exts) { 78cb93a386Sopenharmony_ci SkOSFile::Iter it(flag, ext); 79cb93a386Sopenharmony_ci SkString file; 80cb93a386Sopenharmony_ci while (it.next(&file)) { 81cb93a386Sopenharmony_ci foundAnImage = true; 82cb93a386Sopenharmony_ci output->push_back() = SkOSPath::Join(flag, file.c_str()); 83cb93a386Sopenharmony_ci } 84cb93a386Sopenharmony_ci } 85cb93a386Sopenharmony_ci if (!foundAnImage) { 86cb93a386Sopenharmony_ci SkDebugf("No supported images found in %s!\n", flag); 87cb93a386Sopenharmony_ci return false; 88cb93a386Sopenharmony_ci } 89cb93a386Sopenharmony_ci } else { 90cb93a386Sopenharmony_ci // Also add the value if it is a single image 91cb93a386Sopenharmony_ci output->push_back() = flag; 92cb93a386Sopenharmony_ci } 93cb93a386Sopenharmony_ci } 94cb93a386Sopenharmony_ci return true; 95cb93a386Sopenharmony_ci} 96cb93a386Sopenharmony_ci 97cb93a386Sopenharmony_ci} // namespace CommonFlags 98