diff options
author | robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-10-04 13:00:33 +0000 |
---|---|---|
committer | robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-10-04 13:00:33 +0000 |
commit | c7e4a5a02a16b73d86e90e240c1708d6600f7318 (patch) | |
tree | aa7846ac896f2a2a11ae92eca98be62b3523ed8f /tools | |
parent | 4663822bc9e075c3304b7b9f48b10c5696fe7edc (diff) |
Created filter command line tool
https://codereview.appspot.com/6595066/
git-svn-id: http://skia.googlecode.com/svn/trunk@5803 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tools')
-rw-r--r-- | tools/filtermain.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/tools/filtermain.cpp b/tools/filtermain.cpp new file mode 100644 index 0000000000..903be5f442 --- /dev/null +++ b/tools/filtermain.cpp @@ -0,0 +1,92 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkGraphics.h" +#include "SkPicture.h" +#include "SkStream.h" + +/////////////////////////////////////////////////////////////////////////////// +static void usage() { + SkDebugf("Usage: filter -i inFile -o outFile [-h|--help]"); + SkDebugf("\n\n"); + SkDebugf(" -i inFile : file to file.\n"); + SkDebugf(" -o outFile : result of filtering.\n"); + SkDebugf(" -h|--help : Show this help message.\n"); +} + +int filter_main(int argc, char** argv); +int filter_main(int argc, char** argv) { + + SkGraphics::Init(); + + SkString inFile, outFile; + + if (argc < 5) { + usage(); + return -1; + } + + char* const* stop = argv + argc; + for (++argv; argv < stop; ++argv) { + if (strcmp(*argv, "-i") == 0) { + argv++; + if (argv < stop && **argv) { + inFile.set(*argv); + } else { + SkDebugf("missing arg for --i\n"); + usage(); + return -1; + } + } else if (strcmp(*argv, "-o") == 0) { + argv++; + if (argv < stop && **argv) { + outFile.set(*argv); + } else { + SkDebugf("missing arg for --o\n"); + usage(); + return -1; + } + } else if (strcmp(*argv, "--help") == 0 || strcmp(*argv, "-h") == 0) { + usage(); + return 0; + } else { + SkDebugf("unknown arg %s\n", *argv); + usage(); + return -1; + } + } + + SkPicture* inPicture = NULL; + + SkFILEStream inStream(inFile.c_str()); + if (inStream.isValid()) { + inPicture = SkNEW_ARGS(SkPicture, (&inStream)); + } + + if (NULL == inPicture) { + SkDebugf("Could not read file %s\n", inFile.c_str()); + return -1; + } + + SkPicture outPicture; + inPicture->draw(outPicture.beginRecording(inPicture->width(), inPicture->height())); + outPicture.endRecording(); + + SkFILEWStream outStream(outFile.c_str()); + outPicture.serialize(&outStream); + + SkGraphics::Term(); + + return 0; +} + +#if !defined SK_BUILD_FOR_IOS +int main(int argc, char * const argv[]) { + return filter_main(argc, (char**) argv); +} +#endif + |