Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / pdfium / samples / pdfium_test.cc
index 9a6513d..0f0c875 100644 (file)
@@ -189,19 +189,23 @@ bool ParseCommandLine(int argc, const char* argv[], OutputFormat* output_format,
   files->clear();
 
   int cur_arg = 1;
-  if (cur_arg < argc) {
+  for (; cur_arg < argc; ++cur_arg) {
     if (strcmp(argv[cur_arg], "--ppm") == 0)
       *output_format = OUTPUT_PPM;
 #ifdef _WIN32
-    if (strcmp(argv[cur_arg], "--emf") == 0)
+    else if (strcmp(argv[cur_arg], "--emf") == 0)
       *output_format = OUTPUT_EMF;
-    if (strcmp(argv[cur_arg], "--bmp") == 0)
+    else if (strcmp(argv[cur_arg], "--bmp") == 0)
       *output_format = OUTPUT_BMP;
 #endif
-    cur_arg++;
+    else
+      break;
   }
 
-  if (cur_arg >= argc)
+  if (cur_arg > 2)  // Multiple options.
+    return false;
+
+  if (cur_arg >= argc)  // No input files.
     return false;
 
   for (int i = cur_arg; i < argc; i++)
@@ -300,8 +304,14 @@ void RenderPdf(const char* name, const char* pBuf, size_t len,
   FORM_DoDocumentJSAction(form);
   FORM_DoDocumentOpenAction(form);
 
+  size_t rendered_pages = 0;
+  size_t bad_pages = 0;
   for (int i = 0; i < page_count; ++i) {
     FPDF_PAGE page = FPDF_LoadPage(doc, i);
+    if (!page) {
+        bad_pages ++;
+        continue;
+    }
     FPDF_TEXTPAGE text_page = FPDFText_LoadPage(page);
     FORM_OnAfterLoadPage(page, form);
     FORM_DoPageAAction(page, form, FPDFPAGE_AACTION_OPEN);
@@ -312,6 +322,8 @@ void RenderPdf(const char* name, const char* pBuf, size_t len,
     FPDFBitmap_FillRect(bitmap, 0, 0, width, height, 0xFFFFFFFF);
 
     FPDF_RenderPageBitmap(bitmap, page, 0, 0, width, height, 0, 0);
+    rendered_pages ++;
+
     FPDF_FFLDraw(form, bitmap, page, 0, 0, width, height, 0, 0);
     int stride = FPDFBitmap_GetStride(bitmap);
     const char* buffer =
@@ -347,7 +359,8 @@ void RenderPdf(const char* name, const char* pBuf, size_t len,
   FPDF_CloseDocument(doc);
   FPDFAvail_Destroy(pdf_avail);
 
-  printf("Loaded, parsed and rendered %d pages.\n", page_count);
+  printf("Loaded, parsed and rendered %zu pages.\n", rendered_pages);
+  printf("Skipped %zu bad pages.\n", bad_pages);
 }
 
 int main(int argc, const char* argv[]) {
@@ -355,7 +368,7 @@ int main(int argc, const char* argv[]) {
   OutputFormat format = OUTPUT_NONE;
   std::list<const char*> files;
   if (!ParseCommandLine(argc, argv, &format, &files)) {
-    printf("Usage: pdfium_test [OPTIONS] [FILE]\n");
+    printf("Usage: pdfium_test [OPTION] [FILE]...\n");
     printf("--ppm    write page images <pdf-name>.<page-number>.ppm\n");
 #ifdef _WIN32
     printf("--bmp    write page images <pdf-name>.<page-number>.bmp\n");