Home | History | Annotate | Download | only in tools
      1 /*
      2  * Copyright 2012 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #include "LazyDecodeBitmap.h"
      9 #include "SkBitmap.h"
     10 #include "SkCanvas.h"
     11 #include "SkGraphics.h"
     12 #include "SkOSFile.h"
     13 #include "SkImageDecoder.h"
     14 #include "SkPicture.h"
     15 #include "SkStream.h"
     16 #include "SkString.h"
     17 #include "SkDumpCanvas.h"
     18 
     19 static SkPicture* inspect(const char path[]) {
     20     SkFILEStream stream(path);
     21     if (!stream.isValid()) {
     22         printf("-- Can't open '%s'\n", path);
     23         return NULL;
     24     }
     25 
     26     printf("Opening '%s'...\n", path);
     27 
     28     {
     29         int32_t header[3];
     30         if (stream.read(header, sizeof(header)) != sizeof(header)) {
     31             printf("-- Failed to read header (12 bytes)\n");
     32             return NULL;
     33         }
     34         printf("version:%d width:%d height:%d\n", header[0], header[1], header[2]);
     35     }
     36 
     37     stream.rewind();
     38     SkPicture* pic = SkPicture::CreateFromStream(&stream, &sk_tools::LazyDecodeBitmap);
     39     if (NULL == pic) {
     40         SkDebugf("Could not create SkPicture: %s\n", path);
     41         return NULL;
     42     }
     43     printf("picture size:[%d %d]\n", pic->width(), pic->height());
     44     return pic;
     45 }
     46 
     47 static void dumpOps(SkPicture* pic) {
     48 #ifdef SK_DEVELOPER
     49     SkDebugfDumper dumper;
     50     SkDumpCanvas canvas(&dumper);
     51     canvas.drawPicture(pic);
     52 #else
     53     printf("SK_DEVELOPER mode not enabled\n");
     54 #endif
     55 }
     56 
     57 int tool_main(int argc, char** argv);
     58 int tool_main(int argc, char** argv) {
     59     SkAutoGraphics ag;
     60     if (argc < 2) {
     61         printf("Usage: pinspect [--dump-ops] filename [filename ...]\n");
     62         return 1;
     63     }
     64 
     65     bool doDumpOps = false;
     66 
     67     int index = 1;
     68     if (!strcmp(argv[index], "--dump-ops")) {
     69         index += 1;
     70         doDumpOps = true;
     71     }
     72 
     73     for (; index < argc; ++index) {
     74         SkAutoTUnref<SkPicture> pic(inspect(argv[index]));
     75         if (doDumpOps) {
     76             dumpOps(pic);
     77         }
     78         if (index < argc - 1) {
     79             printf("\n");
     80         }
     81     }
     82     return 0;
     83 }
     84 
     85 #if !defined SK_BUILD_FOR_IOS
     86 int main(int argc, char * const argv[]) {
     87     return tool_main(argc, (char**) argv);
     88 }
     89 #endif
     90