| /* | 
 |  * 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 "LazyDecodeBitmap.h" | 
 | #include "SkBitmap.h" | 
 | #include "SkCanvas.h" | 
 | #include "SkGraphics.h" | 
 | #include "SkOSFile.h" | 
 | #include "SkImageDecoder.h" | 
 | #include "SkPicture.h" | 
 | #include "SkStream.h" | 
 | #include "SkString.h" | 
 | #include "SkDumpCanvas.h" | 
 |  | 
 | static SkPicture* inspect(const char path[]) { | 
 |     SkFILEStream stream(path); | 
 |     if (!stream.isValid()) { | 
 |         printf("-- Can't open '%s'\n", path); | 
 |         return nullptr; | 
 |     } | 
 |  | 
 |     printf("Opening '%s'...\n", path); | 
 |  | 
 |     { | 
 |         int32_t header[3]; | 
 |         if (stream.read(header, sizeof(header)) != sizeof(header)) { | 
 |             printf("-- Failed to read header (12 bytes)\n"); | 
 |             return nullptr; | 
 |         } | 
 |         printf("version:%d width:%d height:%d\n", header[0], header[1], header[2]); | 
 |     } | 
 |  | 
 |     stream.rewind(); | 
 |     SkPicture* pic = SkPicture::CreateFromStream(&stream, &sk_tools::LazyDecodeBitmap); | 
 |     if (nullptr == pic) { | 
 |         SkDebugf("Could not create SkPicture: %s\n", path); | 
 |         return nullptr; | 
 |     } | 
 |     printf("picture cullRect: [%f %f %f %f]\n",  | 
 |            pic->cullRect().fLeft, pic->cullRect().fTop, | 
 |            pic->cullRect().fRight, pic->cullRect().fBottom); | 
 |     return pic; | 
 | } | 
 |  | 
 | static void dumpOps(SkPicture* pic) { | 
 | #ifdef SK_DEVELOPER | 
 |     SkDebugfDumper dumper; | 
 |     SkDumpCanvas canvas(&dumper); | 
 |     canvas.drawPicture(pic); | 
 | #else | 
 |     printf("SK_DEVELOPER mode not enabled\n"); | 
 | #endif | 
 | } | 
 |  | 
 | int tool_main(int argc, char** argv); | 
 | int tool_main(int argc, char** argv) { | 
 |     SkAutoGraphics ag; | 
 |     if (argc < 2) { | 
 |         printf("Usage: pinspect [--dump-ops] filename [filename ...]\n"); | 
 |         return 1; | 
 |     } | 
 |  | 
 |     bool doDumpOps = false; | 
 |  | 
 |     int index = 1; | 
 |     if (!strcmp(argv[index], "--dump-ops")) { | 
 |         index += 1; | 
 |         doDumpOps = true; | 
 |     } | 
 |  | 
 |     for (; index < argc; ++index) { | 
 |         SkAutoTUnref<SkPicture> pic(inspect(argv[index])); | 
 |         if (doDumpOps) { | 
 |             dumpOps(pic); | 
 |         } | 
 |         if (index < argc - 1) { | 
 |             printf("\n"); | 
 |         } | 
 |     } | 
 |     return 0; | 
 | } | 
 |  | 
 | #if !defined SK_BUILD_FOR_IOS | 
 | int main(int argc, char * const argv[]) { | 
 |     return tool_main(argc, (char**) argv); | 
 | } | 
 | #endif |