| Index: experimental/PdfViewer/pdf_viewer_main.cpp
|
| ===================================================================
|
| --- experimental/PdfViewer/pdf_viewer_main.cpp (revision 10235)
|
| +++ experimental/PdfViewer/pdf_viewer_main.cpp (working copy)
|
| @@ -10,6 +10,7 @@
|
| #include "SkTypeface.h"
|
| #include "SkTArray.h"
|
| #include "picture_utils.h"
|
| +#include "SkNulCanvas.h"
|
|
|
| #include "SkPdfRenderer.h"
|
|
|
| @@ -28,6 +29,10 @@
|
| DEFINE_int32(benchLoad, 0, "Load the pdf file minimally N times, without any rendering and \n"
|
| "\tminimal parsing to ensure correctness. Default 0 (disabled).");
|
| DEFINE_int32(benchRender, 0, "Render the pdf content N times. Default 0 (disabled)");
|
| +DEFINE_string2(config, c, "8888", "Canvas to render:\n"
|
| + "\t8888 - all pages\n"
|
| + "\tnul - all pages, in reverse order\n"
|
| + );
|
|
|
|
|
| // TODO(edisonn): add config for device target(gpu, raster, pdf), + ability not to render at all
|
| @@ -110,35 +115,45 @@
|
| int page) {
|
| SkRect rect = renderer.MediaBox(page < 0 ? 0 :page);
|
|
|
| - SkBitmap bitmap;
|
| - SkScalar width = SkScalarMul(rect.width(), SkDoubleToScalar(sqrt(FLAGS_DPI / 72.0)));
|
| - SkScalar height = SkScalarMul(rect.height(), SkDoubleToScalar(sqrt(FLAGS_DPI / 72.0)));
|
| + // Exercise all pdf codepaths as in normal rendering, but no actual bits are changed.
|
| + if (!FLAGS_config.isEmpty() && strcmp(FLAGS_config[0], "nul") == 0) {
|
| + SkBitmap bitmap;
|
| + SkAutoTUnref<SkDevice> device(SkNEW_ARGS(SkDevice, (bitmap)));
|
| + SkNulCanvas canvas(device);
|
| + renderer.renderPage(page < 0 ? 0 : page, &canvas, rect);
|
| + } else {
|
| + // 8888
|
| + SkRect rect = renderer.MediaBox(page < 0 ? 0 :page);
|
|
|
| - rect = SkRect::MakeWH(width, height);
|
| + SkBitmap bitmap;
|
| + SkScalar width = SkScalarMul(rect.width(), SkDoubleToScalar(sqrt(FLAGS_DPI / 72.0)));
|
| + SkScalar height = SkScalarMul(rect.height(), SkDoubleToScalar(sqrt(FLAGS_DPI / 72.0)));
|
|
|
| + rect = SkRect::MakeWH(width, height);
|
| +
|
| #ifdef PDF_DEBUG_3X
|
| - setup_bitmap(&bitmap, 3 * (int)SkScalarToDouble(width), 3 * (int)SkScalarToDouble(height));
|
| + setup_bitmap(&bitmap, 3 * (int)SkScalarToDouble(width), 3 * (int)SkScalarToDouble(height));
|
| #else
|
| - setup_bitmap(&bitmap, (int)SkScalarToDouble(width), (int)SkScalarToDouble(height));
|
| + setup_bitmap(&bitmap, (int)SkScalarToDouble(width), (int)SkScalarToDouble(height));
|
| #endif
|
| - SkAutoTUnref<SkDevice> device(SkNEW_ARGS(SkDevice, (bitmap)));
|
| - SkCanvas canvas(device);
|
| + SkAutoTUnref<SkDevice> device(SkNEW_ARGS(SkDevice, (bitmap)));
|
| + SkCanvas canvas(device);
|
|
|
| - gDumpBitmap = &bitmap;
|
| + gDumpBitmap = &bitmap;
|
|
|
| - gDumpCanvas = &canvas;
|
| - renderer.renderPage(page < 0 ? 0 : page, &canvas, rect);
|
| + gDumpCanvas = &canvas;
|
| + renderer.renderPage(page < 0 ? 0 : page, &canvas, rect);
|
|
|
| - SkString outputPath;
|
| - if (!make_output_filepath(&outputPath, outputDir, inputFilename, page)) {
|
| - return false;
|
| - }
|
| - SkImageEncoder::EncodeFile(outputPath.c_str(), bitmap, SkImageEncoder::kPNG_Type, 100);
|
| + SkString outputPath;
|
| + if (!make_output_filepath(&outputPath, outputDir, inputFilename, page)) {
|
| + return false;
|
| + }
|
| + SkImageEncoder::EncodeFile(outputPath.c_str(), bitmap, SkImageEncoder::kPNG_Type, 100);
|
|
|
| - if (FLAGS_showMemoryUsage) {
|
| - SkDebugf("Memory usage after page %i rendered: %u\n", page < 0 ? 0 : page, (unsigned int)renderer.bytesUsed());
|
| + if (FLAGS_showMemoryUsage) {
|
| + SkDebugf("Memory usage after page %i rendered: %u\n", page < 0 ? 0 : page, (unsigned int)renderer.bytesUsed());
|
| + }
|
| }
|
| -
|
| return true;
|
| }
|
|
|
|
|