diff options
author | keyar@chromium.org <keyar@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-07-13 18:22:59 +0000 |
---|---|---|
committer | keyar@chromium.org <keyar@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-07-13 18:22:59 +0000 |
commit | 1cbd47c4b1e44658013512a7b1086d8af71237a8 (patch) | |
tree | 3c29cdac57ca356307fce6f21b7493069781455e | |
parent | 3e8483e0ded180202fcf69a541b8d8d72239855e (diff) |
Preparations for adding options and different render types to render_pictures.
Review URL: https://codereview.appspot.com/6345107
git-svn-id: http://skia.googlecode.com/svn/trunk@4603 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r-- | tools/bench_pictures_main.cpp | 2 | ||||
-rw-r--r-- | tools/picture_utils.cpp | 4 | ||||
-rw-r--r-- | tools/picture_utils.h | 2 | ||||
-rw-r--r-- | tools/render_pictures_main.cpp | 48 |
4 files changed, 33 insertions, 23 deletions
diff --git a/tools/bench_pictures_main.cpp b/tools/bench_pictures_main.cpp index fca01bce3f..aca98e4300 100644 --- a/tools/bench_pictures_main.cpp +++ b/tools/bench_pictures_main.cpp @@ -318,7 +318,7 @@ static void process_input(const SkString& input, Options* options) { if (iter.next(&inputFilename)) { do { SkString inputPath; - sk_tools::make_filepath(&inputPath, input.c_str(), + sk_tools::make_filepath(&inputPath, input, inputFilename); run_single_benchmark(inputPath, options); } while(iter.next(&inputFilename)); diff --git a/tools/picture_utils.cpp b/tools/picture_utils.cpp index 98351b84b5..28e6293d2f 100644 --- a/tools/picture_utils.cpp +++ b/tools/picture_utils.cpp @@ -13,8 +13,8 @@ namespace sk_tools { - void make_filepath(SkString* path, const char* dir, const SkString& name) { - size_t len = strlen(dir); + void make_filepath(SkString* path, const SkString& dir, const SkString& name) { + size_t len = dir.size(); path->set(dir); if (0 < len && '/' != dir[len - 1]) { path->append("/"); diff --git a/tools/picture_utils.h b/tools/picture_utils.h index 18efcb79c2..aeb625f6e5 100644 --- a/tools/picture_utils.h +++ b/tools/picture_utils.h @@ -17,7 +17,7 @@ class SkPicture; namespace sk_tools { // Creates a posix style filepath by concatenating name onto dir with a // forward slash into path. - void make_filepath(SkString* path, const char* dir, const SkString& name); + void make_filepath(SkString* path, const SkString&, const SkString& name); // Returns the last part of the path (file name or leaf directory name) // diff --git a/tools/render_pictures_main.cpp b/tools/render_pictures_main.cpp index da7df634b3..09e1572f17 100644 --- a/tools/render_pictures_main.cpp +++ b/tools/render_pictures_main.cpp @@ -16,6 +16,7 @@ #include "SkString.h" #include "picture_utils.h" +typedef void (*RenderFunc) (SkPicture*, SkBitmap*); static void usage(const char* argv0) { SkDebugf("SkPicture rendering tool\n"); @@ -30,17 +31,17 @@ static void usage(const char* argv0) { " outputDir: directory to write the rendered images.\n"); } -static void make_output_filepath(SkString* path, const char* dir, +static void make_output_filepath(SkString* path, const SkString& dir, const SkString& name) { sk_tools::make_filepath(path, dir, name); path->remove(path->size() - 3, 3); path->append("png"); } -static void generate_image_from_picture(SkPicture& pict, SkBitmap* bitmap) { - sk_tools::setup_bitmap(bitmap, pict.width(), pict.height()); +static void simple_render(SkPicture* pict, SkBitmap* bitmap) { + sk_tools::setup_bitmap(bitmap, pict->width(), pict->height()); SkCanvas canvas(*bitmap); - canvas.drawPicture(pict); + canvas.drawPicture(*pict); } /* since PNG insists on unpremultiplying our alpha, we take no precision chances @@ -64,7 +65,7 @@ static bool write_bitmap(const SkString& path, const SkBitmap& bitmap) { SkImageEncoder::kPNG_Type, 100); } -static void write_output(const char* outputDir, const SkString& inputFilename, +static void write_output(const SkString& outputDir, const SkString& inputFilename, const SkBitmap& bitmap) { SkString outputPath; make_output_filepath(&outputPath, outputDir, inputFilename); @@ -74,7 +75,8 @@ static void write_output(const char* outputDir, const SkString& inputFilename, } } -static void render_picture(const SkString& inputPath, const char* outputDir) { +static void render_picture(const SkString& inputPath, const SkString& outputDir, + RenderFunc renderFunc) { SkString inputFilename; sk_tools::get_basename(&inputFilename, inputPath); @@ -87,36 +89,44 @@ static void render_picture(const SkString& inputPath, const char* outputDir) { SkPicture picture(&inputStream); SkBitmap bitmap; - generate_image_from_picture(picture, &bitmap); + renderFunc(&picture, &bitmap); write_output(outputDir, inputFilename, bitmap); } -static void process_input(const char* input, const char* outputDir) { - SkOSFile::Iter iter(input, "skp"); +static void process_input(const SkString& input, const SkString& outputDir, + RenderFunc renderFunc) { + SkOSFile::Iter iter(input.c_str(), "skp"); SkString inputFilename; if (iter.next(&inputFilename)) { do { SkString inputPath; sk_tools::make_filepath(&inputPath, input, inputFilename); - render_picture(inputPath, outputDir); + render_picture(inputPath, outputDir, renderFunc); } while(iter.next(&inputFilename)); } else { SkString inputPath(input); - render_picture(inputPath, outputDir); + render_picture(inputPath, outputDir, renderFunc); } } -int main(int argc, char* const argv[]) { - const char* outputDir; - if (argc < 3) { - usage(argv[0]); - return -1; +static void parse_commandline(int argc, char* const argv[], SkTArray<SkString>* inputs, + RenderFunc* renderFunc){ + const char* argv0 = argv[0]; + char* const* stop = argv + argc; + + for (++argv; argv < stop; ++argv) { + inputs->push_back(SkString(*argv)); } +} - outputDir = argv[argc - 1]; +int main(int argc, char* const argv[]) { + SkTArray<SkString> inputs; + RenderFunc renderFunc = simple_render; + parse_commandline(argc, argv, &inputs, &renderFunc); + SkString outputDir = inputs[inputs.count() - 1]; - for (int i = 1; i < argc - 1; i ++) { - process_input(argv[i], outputDir); + for (int i = 0; i < inputs.count() - 1; i ++) { + process_input(inputs[i], outputDir, renderFunc); } } |