From cedc562477cbca7496bd88999b773b72912c40f8 Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Thu, 29 Jan 2015 15:48:15 -0800 Subject: Merge to Master: Add output scale factor command line parameter to pdfium_test. Original Review URL: https://codereview.chromium.org/861203003 TBR=thestig@chromium.org Review URL: https://codereview.chromium.org/889733002 --- samples/pdfium_test.cc | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'samples/pdfium_test.cc') diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc index 9e1527d98d..debe033369 100644 --- a/samples/pdfium_test.cc +++ b/samples/pdfium_test.cc @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -40,6 +41,7 @@ struct Options { Options() : output_format(OUTPUT_NONE) { } OutputFormat output_format; + std::string scale_factor_as_string; std::string exe_path; std::string bin_directory; }; @@ -303,6 +305,13 @@ bool ParseCommandLine(const std::vector& args, options->bin_directory = cur_arg.substr(10); } #endif // V8_USE_EXTERNAL_STARTUP_DATA + else if (cur_arg.size() > 8 && cur_arg.compare(0, 8, "--scale=") == 0) { + if (!options->scale_factor_as_string.empty()) { + fprintf(stderr, "Duplicate --scale argument\n"); + return false; + } + options->scale_factor_as_string = cur_arg.substr(8); + } else break; } @@ -344,7 +353,7 @@ void Add_Segment(FX_DOWNLOADHINTS* pThis, size_t offset, size_t size) { } void RenderPdf(const std::string& name, const char* pBuf, size_t len, - OutputFormat format) { + const Options& options) { printf("Rendering PDF file %s.\n", name.c_str()); IPDF_JSPLATFORM platform_callbacks; @@ -420,9 +429,15 @@ void RenderPdf(const std::string& name, const char* pBuf, size_t len, int width = static_cast(FPDF_GetPageWidth(page)); int height = static_cast(FPDF_GetPageHeight(page)); + if (!options.scale_factor_as_string.empty()) { + double scale = 1.0; + std::stringstream(options.scale_factor_as_string) >> scale; + width *= scale; + height *= scale; + } + FPDF_BITMAP bitmap = FPDFBitmap_Create(width, height, 0); FPDFBitmap_FillRect(bitmap, 0, 0, width, height, 0xFFFFFFFF); - FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0); rendered_pages ++; @@ -431,7 +446,7 @@ void RenderPdf(const std::string& name, const char* pBuf, size_t len, const char* buffer = reinterpret_cast(FPDFBitmap_GetBuffer(bitmap)); - switch (format) { + switch (options.output_format) { #ifdef _WIN32 case OUTPUT_BMP: WriteBmp(name.c_str(), i, buffer, stride, width, height); @@ -472,6 +487,7 @@ int main(int argc, const char* argv[]) { if (!ParseCommandLine(args, &options, &files)) { printf("Usage: pdfium_test [OPTION] [FILE]...\n"); printf("--bin-dir= - override path to v8 external data\n"); + printf("--scale= - scale output size by number (e.g. 0.5)\n"); printf("--ppm - write page images ..ppm\n"); #ifdef _WIN32 printf("--bmp - write page images ..bmp\n"); @@ -509,7 +525,7 @@ int main(int argc, const char* argv[]) { char* file_contents = GetFileContents(filename.c_str(), &file_length); if (!file_contents) continue; - RenderPdf(filename, file_contents, file_length, options.output_format); + RenderPdf(filename, file_contents, file_length, options); free(file_contents); } -- cgit v1.2.3