| /* |
| * 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"); |
| } |
| |
| // This function is not marked as 'static' so it can be referenced externally |
| // in the iOS build. |
| 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 |