aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-10-04 13:00:33 +0000
committerGravatar robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-10-04 13:00:33 +0000
commitc7e4a5a02a16b73d86e90e240c1708d6600f7318 (patch)
treeaa7846ac896f2a2a11ae92eca98be62b3523ed8f /tools
parent4663822bc9e075c3304b7b9f48b10c5696fe7edc (diff)
Created filter command line tool
Diffstat (limited to 'tools')
-rw-r--r--tools/filtermain.cpp92
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
+