• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
inspect(const char path[])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 
dumpOps(SkPicture * pic)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);
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
main(int argc,char * const argv[])86 int main(int argc, char * const argv[]) {
87     return tool_main(argc, (char**) argv);
88 }
89 #endif
90