| Index: dm/DM.cpp
|
| diff --git a/dm/DM.cpp b/dm/DM.cpp
|
| index 52c86d5f6880dc6f79f0e759808ec1d021a84f07..bda9995e35d20cfec908a126b7b2a30c62bacd0c 100644
|
| --- a/dm/DM.cpp
|
| +++ b/dm/DM.cpp
|
| @@ -18,6 +18,7 @@
|
| #include "DMCpuGMTask.h"
|
| #include "DMGpuGMTask.h"
|
| #include "DMGpuSupport.h"
|
| +#include "DMImageTask.h"
|
| #include "DMJsonWriter.h"
|
| #include "DMPDFTask.h"
|
| #include "DMReporter.h"
|
| @@ -50,6 +51,7 @@ DEFINE_bool(gms, true, "Run GMs?");
|
| DEFINE_bool(tests, true, "Run tests?");
|
| DEFINE_bool(reportUsedChars, false, "Output test font construction data to be pasted into"
|
| " create_test_font.cpp.");
|
| +DEFINE_string(images, "resources", "Path to directory containing images to decode.");
|
|
|
| __SK_FORCE_IMAGE_DECODER_LINKING;
|
|
|
| @@ -119,16 +121,21 @@ static void kick_off_tests(const SkTDArray<TestRegistry::Factory>& tests,
|
| }
|
| }
|
|
|
| -static void find_skps(SkTArray<SkString>* skps) {
|
| - if (FLAGS_skps.isEmpty()) {
|
| +static void find_files(const char* dir,
|
| + const char* suffixes[],
|
| + size_t num_suffixes,
|
| + SkTArray<SkString>* files) {
|
| + if (0 == strcmp(dir, "")) {
|
| return;
|
| }
|
|
|
| - SkOSFile::Iter it(FLAGS_skps[0], ".skp");
|
| SkString filename;
|
| - while (it.next(&filename)) {
|
| - if (!SkCommandLineFlags::ShouldSkip(FLAGS_match, filename.c_str())) {
|
| - skps->push_back(SkOSPath::Join(FLAGS_skps[0], filename.c_str()));
|
| + for (size_t i = 0; i < num_suffixes; i++) {
|
| + SkOSFile::Iter it(dir, suffixes[i]);
|
| + while (it.next(&filename)) {
|
| + if (!SkCommandLineFlags::ShouldSkip(FLAGS_match, filename.c_str())) {
|
| + files->push_back(SkOSPath::Join(dir, filename.c_str()));
|
| + }
|
| }
|
| }
|
| }
|
| @@ -155,6 +162,22 @@ static void kick_off_skps(const SkTArray<SkString>& skps,
|
| }
|
| }
|
|
|
| +static void kick_off_images(const SkTArray<SkString>& images,
|
| + DM::Reporter* reporter,
|
| + DM::TaskRunner* tasks) {
|
| + for (int i = 0; i < images.count(); i++) {
|
| + SkAutoTUnref<SkData> image(SkData::NewFromFileName(images[i].c_str()));
|
| + if (!image) {
|
| + SkDebugf("Could not read %s.\n", images[i].c_str());
|
| + exit(1);
|
| + }
|
| + SkString filename = SkOSPath::Basename(images[i].c_str());
|
| + tasks->add(SkNEW_ARGS(DM::ImageTask, (reporter, tasks, image, filename)));
|
| + tasks->add(SkNEW_ARGS(DM::ImageTask, (reporter, tasks, image, filename, 5/*subsets*/)));
|
| + }
|
| +}
|
| +
|
| +
|
| static void report_failures(const SkTArray<SkString>& failures) {
|
| if (failures.count() == 0) {
|
| return;
|
| @@ -217,17 +240,28 @@ int dm_main() {
|
| append_matching_factories<Test>(TestRegistry::Head(), &tests);
|
| }
|
|
|
| +
|
| SkTArray<SkString> skps;
|
| - find_skps(&skps);
|
| + if (!FLAGS_skps.isEmpty()) {
|
| + const char* suffixes[] = { "skp" };
|
| + find_files(FLAGS_skps[0], suffixes, SK_ARRAY_COUNT(suffixes), &skps);
|
| + }
|
| +
|
| + SkTArray<SkString> images;
|
| + if (!FLAGS_images.isEmpty()) {
|
| + const char* suffixes[] = { "bmp", "gif", "jpg", "png", "webp", "ktx", "astc" };
|
| + find_files(FLAGS_images[0], suffixes, SK_ARRAY_COUNT(suffixes), &images);
|
| + }
|
|
|
| - SkDebugf("%d GMs x %d configs, %d tests, %d pictures\n",
|
| - gms.count(), configs.count(), tests.count(), skps.count());
|
| + SkDebugf("%d GMs x %d configs, %d tests, %d pictures, %d images\n",
|
| + gms.count(), configs.count(), tests.count(), skps.count(), images.count());
|
| DM::Reporter reporter;
|
|
|
| DM::TaskRunner tasks;
|
| kick_off_tests(tests, &reporter, &tasks);
|
| kick_off_gms(gms, configs, gpuAPI, &reporter, &tasks);
|
| kick_off_skps(skps, &reporter, &tasks);
|
| + kick_off_images(images, &reporter, &tasks);
|
| tasks.wait();
|
|
|
| DM::JsonWriter::DumpJson();
|
|
|