/* * 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 "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" #include "SkForceLinking.h" __SK_FORCE_IMAGE_DECODER_LINKING; // Defined in PictureRenderingFlags.cpp extern bool lazy_decode_bitmap(const void* buffer, size_t size, SkBitmap* bitmap); static SkPicture* inspect(const char path[]) { SkFILEStream stream(path); if (!stream.isValid()) { printf("-- Can't open '%s'\n", path); return NULL; } 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 NULL; } printf("version:%d width:%d height:%d\n", header[0], header[1], header[2]); } stream.rewind(); bool success = false; SkPicture* pic = SkNEW_ARGS(SkPicture, (&stream, &success, &lazy_decode_bitmap)); if (!success) { SkDebugf("Could not create SkPicture: %s\n", path); return pic; } printf("picture size:[%d %d]\n", pic->width(), pic->height()); 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 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