| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 #include "SkCanvas.h" | 7 #include "SkCanvas.h" |
| 8 #include "SkDocument.h" | 8 #include "SkDocument.h" |
| 9 #include "SkForceLinking.h" | 9 #include "SkForceLinking.h" |
| 10 #include "SkGraphics.h" | 10 #include "SkGraphics.h" |
| 11 #include "SkNullCanvas.h" | 11 #include "SkNullCanvas.h" |
| 12 #include "SkPicture.h" | 12 #include "SkPicture.h" |
| 13 #include "SkStream.h" | 13 #include "SkStream.h" |
| 14 #include "SkTemplates.h" | 14 #include "SkTemplates.h" |
| 15 #include "PageCachingDocument.h" |
| 15 #include "ProcStats.h" | 16 #include "ProcStats.h" |
| 16 #include "flags/SkCommandLineFlags.h" | 17 #include "flags/SkCommandLineFlags.h" |
| 17 | 18 |
| 18 #ifdef SK_ENABLE_NEW_SKPDF_BACKEND | |
| 19 #include "skpdf.h" | |
| 20 #endif | |
| 21 | |
| 22 DEFINE_string2(readPath, | 19 DEFINE_string2(readPath, |
| 23 r, | 20 r, |
| 24 "", | 21 "", |
| 25 "(Required) The path to a .skp Skia Picture file."); | 22 "(Required) The path to a .skp Skia Picture file."); |
| 26 DEFINE_string2(writePath, w, "", "If set, write PDF output to this file."); | 23 DEFINE_string2(writePath, w, "", "If set, write PDF output to this file."); |
| 27 DEFINE_bool(newPdf, false, "Use the new PDF backend."); | 24 DEFINE_bool(cachePages, false, "Use a PageCachingDocument."); |
| 28 DEFINE_bool(nullCanvas, true, "Render to a SkNullCanvas as a control."); | 25 DEFINE_bool(nullCanvas, true, "Render to a SkNullCanvas as a control."); |
| 29 | 26 |
| 30 __SK_FORCE_IMAGE_DECODER_LINKING; | 27 __SK_FORCE_IMAGE_DECODER_LINKING; |
| 31 | 28 |
| 32 namespace { | 29 namespace { |
| 33 class NullWStream : public SkWStream { | 30 class NullWStream : public SkWStream { |
| 34 public: | 31 public: |
| 35 NullWStream() : fBytesWritten(0) { | 32 NullWStream() : fBytesWritten(0) { |
| 36 } | 33 } |
| 37 virtual bool write(const void*, size_t size) SK_OVERRIDE { | 34 virtual bool write(const void*, size_t size) SK_OVERRIDE { |
| 38 fBytesWritten += size; | 35 fBytesWritten += size; |
| 39 return true; | 36 return true; |
| 40 } | 37 } |
| 41 virtual size_t bytesWritten() const SK_OVERRIDE { | 38 virtual size_t bytesWritten() const SK_OVERRIDE { |
| 42 return fBytesWritten; | 39 return fBytesWritten; |
| 43 } | 40 } |
| 44 size_t fBytesWritten; | 41 size_t fBytesWritten; |
| 45 }; | 42 }; |
| 46 | 43 |
| 47 SkDocument* CreatePDFDocument(SkWStream* out) { | 44 SkDocument* CreatePDFDocument(SkWStream* out) { |
| 48 #ifdef SK_ENABLE_NEW_SKPDF_BACKEND | 45 if (FLAGS_cachePages) { |
| 49 if (FLAGS_newPdf) { | 46 return CreatePageCachingDocument(out); |
| 50 return skpdf::CreatePDFDocument(out); | 47 } else { |
| 48 return SkDocument::CreatePDF(out); |
| 51 } | 49 } |
| 52 #endif | |
| 53 return SkDocument::CreatePDF(out); | |
| 54 } | 50 } |
| 55 } // namespace | 51 } // namespace |
| 56 | 52 |
| 57 int main(int argc, char** argv) { | 53 int main(int argc, char** argv) { |
| 58 SkCommandLineFlags::Parse(argc, argv); | 54 SkCommandLineFlags::Parse(argc, argv); |
| 59 if (FLAGS_readPath.isEmpty()) { | 55 if (FLAGS_readPath.isEmpty()) { |
| 60 SkDebugf("Error: missing requires --readPath option\n"); | 56 SkDebugf("Error: missing requires --readPath option\n"); |
| 61 return 1; | 57 return 1; |
| 62 } | 58 } |
| 63 const char* path = FLAGS_readPath[0]; | 59 const char* path = FLAGS_readPath[0]; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 } else { | 108 } else { |
| 113 int w = SkTMin(kLetterWidth, width - (x * kLetterWidth)); | 109 int w = SkTMin(kLetterWidth, width - (x * kLetterWidth)); |
| 114 int h = SkTMin(kLetterHeight, height - (y * kLetterHeight)); | 110 int h = SkTMin(kLetterHeight, height - (y * kLetterHeight)); |
| 115 canvas = pdfDocument->beginPage(w, h); | 111 canvas = pdfDocument->beginPage(w, h); |
| 116 } | 112 } |
| 117 { | 113 { |
| 118 SkAutoCanvasRestore autoCanvasRestore(canvas, true); | 114 SkAutoCanvasRestore autoCanvasRestore(canvas, true); |
| 119 canvas->clipRect(letterRect); | 115 canvas->clipRect(letterRect); |
| 120 canvas->translate(SkIntToScalar(-kLetterWidth * x), | 116 canvas->translate(SkIntToScalar(-kLetterWidth * x), |
| 121 SkIntToScalar(-kLetterHeight * y)); | 117 SkIntToScalar(-kLetterHeight * y)); |
| 122 canvas->drawPicture(picture); | 118 picture->playback(canvas); |
| 119 //canvas->drawPicture(picture); |
| 123 } | 120 } |
| 124 canvas->flush(); | 121 canvas->flush(); |
| 125 if (!FLAGS_nullCanvas) { | 122 if (!FLAGS_nullCanvas) { |
| 126 pdfDocument->endPage(); | 123 pdfDocument->endPage(); |
| 127 } | 124 } |
| 128 } | 125 } |
| 129 } | 126 } |
| 130 if (!FLAGS_nullCanvas) { | 127 if (!FLAGS_nullCanvas) { |
| 131 pdfDocument->close(); | 128 pdfDocument->close(); |
| 132 pdfDocument.reset(NULL); | 129 pdfDocument.reset(NULL); |
| 133 } | 130 } |
| 134 printf(SK_SIZE_T_SPECIFIER "\t%4d\n", | 131 printf(SK_SIZE_T_SPECIFIER "\t%4d\n", |
| 135 inputStream.getLength(), | 132 inputStream.getLength(), |
| 136 sk_tools::getMaxResidentSetSizeMB()); | 133 sk_tools::getMaxResidentSetSizeMB()); |
| 137 return 0; | 134 return 0; |
| 138 } | 135 } |
| OLD | NEW |