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 "SkBitmap.h"
      9 #include "SkCanvas.h"
     10 #include "SkGraphics.h"
     11 #include "SkOSFile.h"
     12 #include "SkImageDecoder.h"
     13 #include "SkPicture.h"
     14 #include "SkStream.h"
     15 #include "SkString.h"
     16 #include "SkDumpCanvas.h"
     17 
     18 static SkPicture* inspect(const char path[]) {
     19     SkFILEStream stream(path);
     20     if (!stream.isValid()) {
     21         printf("-- Can't open '%s'\n", path);
     22         return nullptr;
     23     }
     24 
     25     printf("Opening '%s'...\n", path);
     26 
     27     {
     28         int32_t header[3];
     29         if (stream.read(header, sizeof(header)) != sizeof(header)) {
     30             printf("-- Failed to read header (12 bytes)\n");
     31             return nullptr;
     32         }
     33         printf("version:%d width:%d height:%d\n", header[0], header[1], header[2]);
     34     }
     35 
     36     stream.rewind();
     37     SkPicture* pic = SkPicture::CreateFromStream(&stream);
     38     if (nullptr == pic) {
     39         SkDebugf("Could not create SkPicture: %s\n", path);
     40         return nullptr;
     41     }
     42     printf("picture cullRect: [%f %f %f %f]\n",
     43            pic->cullRect().fLeft, pic->cullRect().fTop,
     44            pic->cullRect().fRight, pic->cullRect().fBottom);
     45     return pic;
     46 }
     47 
     48 static void dumpOps(SkPicture* pic) {
     49 #ifdef SK_DEVELOPER
     50     SkDebugfDumper dumper;
     51     SkDumpCanvas canvas(&dumper);
     52     canvas.drawPicture(pic);
     53 #else
     54     printf("SK_DEVELOPER mode not enabled\n");
     55 #endif
     56 }
     57 
     58 int tool_main(int argc, char** argv);
     59 int tool_main(int argc, char** argv) {
     60     SkAutoGraphics ag;
     61     if (argc < 2) {
     62         printf("Usage: pinspect [--dump-ops] filename [filename ...]\n");
     63         return 1;
     64     }
     65 
     66     bool doDumpOps = false;
     67 
     68     int index = 1;
     69     if (!strcmp(argv[index], "--dump-ops")) {
     70         index += 1;
     71         doDumpOps = true;
     72     }
     73 
     74     for (; index < argc; ++index) {
     75         SkAutoTUnref<SkPicture> pic(inspect(argv[index]));
     76         if (doDumpOps) {
     77             dumpOps(pic);
     78         }
     79         if (index < argc - 1) {
     80             printf("\n");
     81         }
     82     }
     83     return 0;
     84 }
     85 
     86 #if !defined SK_BUILD_FOR_IOS
     87 int main(int argc, char * const argv[]) {
     88     return tool_main(argc, (char**) argv);
     89 }
     90 #endif
     91