Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(907)

Unified Diff: samples/pdfium_test.cc

Issue 2578893004: Gold support in PDFium (Closed)
Patch Set: Cleanup and added to DEPS Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « samples/DEPS ('k') | testing/tools/common.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: samples/pdfium_test.cc
diff --git a/samples/pdfium_test.cc b/samples/pdfium_test.cc
index ac6073aa2e8a6a51a54c340c30056b310a256eef..b3ffadf9d8383b78a233c46b2227d821d986b111 100644
--- a/samples/pdfium_test.cc
+++ b/samples/pdfium_test.cc
@@ -17,6 +17,7 @@
#define _SKIA_SUPPORT_
#endif
+#include "core/fdrm/crypto/fx_crypt.h"
#include "public/fpdf_dataavail.h"
#include "public/fpdf_edit.h"
#include "public/fpdf_ext.h"
@@ -109,23 +110,38 @@ static bool CheckDimensions(int stride, int width, int height) {
return true;
}
-static void WritePpm(const char* pdf_name, int num, const void* buffer_void,
- int stride, int width, int height) {
+static void OutputMD5Hash(const char* file_name, const char* buffer, int len) {
+ // Get the MD5 hash and write it to stdout.
+ uint8_t digest[16];
+ CRYPT_MD5Generate(reinterpret_cast<const uint8_t*>(buffer), len, digest);
+ printf("MD5:%s:", file_name);
+ for (int i = 0; i < 16; i++) {
+ printf("%02x", digest[i]);
caryclark 2016/12/20 22:42:59 pdfium style doesn't require braces here
stephana 2016/12/21 16:12:06 Done.
+ }
+ printf("\n");
+}
+
+static std::string WritePpm(const char* pdf_name,
+ int num,
+ const void* buffer_void,
+ int stride,
+ int width,
+ int height) {
const char* buffer = reinterpret_cast<const char*>(buffer_void);
if (!CheckDimensions(stride, width, height))
- return;
+ return "";
int out_len = width * height;
if (out_len > INT_MAX / 3)
- return;
+ return "";
out_len *= 3;
char filename[256];
snprintf(filename, sizeof(filename), "%s.%d.ppm", pdf_name, num);
FILE* fp = fopen(filename, "wb");
if (!fp)
- return;
+ return "";
fprintf(fp, "P6\n# PDF test render\n%d %d\n255\n", width, height);
// Source data is B, G, R, unused.
// Dest data is R, G, B.
@@ -144,6 +160,7 @@ static void WritePpm(const char* pdf_name, int num, const void* buffer_void,
}
fwrite(result.data(), out_len, 1, fp);
fclose(fp);
+ return std::string(filename);
}
void WriteText(FPDF_PAGE page, const char* pdf_name, int num) {
@@ -177,17 +194,21 @@ void WriteText(FPDF_PAGE page, const char* pdf_name, int num) {
(void)fclose(fp);
}
-static void WritePng(const char* pdf_name, int num, const void* buffer_void,
- int stride, int width, int height) {
+static std::string WritePng(const char* pdf_name,
+ int num,
+ const void* buffer_void,
+ int stride,
+ int width,
+ int height) {
if (!CheckDimensions(stride, width, height))
- return;
+ return "";
std::vector<unsigned char> png_encoding;
const unsigned char* buffer = static_cast<const unsigned char*>(buffer_void);
if (!image_diff_png::EncodeBGRAPNG(
buffer, width, height, stride, false, &png_encoding)) {
fprintf(stderr, "Failed to convert bitmap to PNG\n");
- return;
+ return "";
}
char filename[256];
@@ -196,13 +217,13 @@ static void WritePng(const char* pdf_name, int num, const void* buffer_void,
if (chars_formatted < 0 ||
static_cast<size_t>(chars_formatted) >= sizeof(filename)) {
fprintf(stderr, "Filename %s is too long\n", filename);
- return;
+ return "";
}
FILE* fp = fopen(filename, "wb");
if (!fp) {
fprintf(stderr, "Failed to open %s for output\n", filename);
- return;
+ return "";
}
size_t bytes_written = fwrite(
@@ -211,23 +232,28 @@ static void WritePng(const char* pdf_name, int num, const void* buffer_void,
fprintf(stderr, "Failed to write to %s\n", filename);
(void)fclose(fp);
+ return std::string(filename);
}
#ifdef _WIN32
-static void WriteBmp(const char* pdf_name, int num, const void* buffer,
- int stride, int width, int height) {
+static std::string WriteBmp(const char* pdf_name,
+ int num,
+ const void* buffer,
+ int stride,
+ int width,
+ int height) {
if (!CheckDimensions(stride, width, height))
- return;
+ return "";
int out_len = stride * height;
if (out_len > INT_MAX / 3)
- return;
+ return "";
char filename[256];
snprintf(filename, sizeof(filename), "%s.%d.bmp", pdf_name, num);
FILE* fp = fopen(filename, "wb");
if (!fp)
- return;
+ return "";
BITMAPINFO bmi = {};
bmi.bmiHeader.biSize = sizeof(bmi) - sizeof(RGBQUAD);
@@ -247,6 +273,7 @@ static void WriteBmp(const char* pdf_name, int num, const void* buffer,
fwrite(&bmi, bmi.bmiHeader.biSize, 1, fp);
fwrite(buffer, out_len, 1, fp);
fclose(fp);
+ return std::string(filename);
}
void WriteEmf(FPDF_PAGE page, const char* pdf_name, int num) {
@@ -275,7 +302,9 @@ void WriteEmf(FPDF_PAGE page, const char* pdf_name, int num) {
#endif
#ifdef PDF_ENABLE_SKIA
-void WriteSkp(const char* pdf_name, int num, SkPictureRecorder* recorder) {
+static std::string WriteSkp(const char* pdf_name,
+ int num,
+ SkPictureRecorder* recorder) {
char filename[256];
int chars_formatted =
snprintf(filename, sizeof(filename), "%s.%d.skp", pdf_name, num);
@@ -283,12 +312,13 @@ void WriteSkp(const char* pdf_name, int num, SkPictureRecorder* recorder) {
if (chars_formatted < 0 ||
static_cast<size_t>(chars_formatted) >= sizeof(filename)) {
fprintf(stderr, "Filename %s is too long\n", filename);
- return;
+ return "";
}
sk_sp<SkPicture> picture(recorder->finishRecordingAsPicture());
SkFILEWStream wStream(filename);
picture->serialize(&wStream);
+ return std::string(filename);
}
#endif
@@ -628,10 +658,12 @@ bool RenderPage(const std::string& name,
const char* buffer =
reinterpret_cast<const char*>(FPDFBitmap_GetBuffer(bitmap));
+ std::string&& image_file_name = "";
switch (options.output_format) {
#ifdef _WIN32
case OUTPUT_BMP:
- WriteBmp(name.c_str(), page_index, buffer, stride, width, height);
+ image_file_name =
+ WriteBmp(name.c_str(), page_index, buffer, stride, width, height);
break;
case OUTPUT_EMF:
@@ -643,11 +675,13 @@ bool RenderPage(const std::string& name,
break;
case OUTPUT_PNG:
- WritePng(name.c_str(), page_index, buffer, stride, width, height);
+ image_file_name =
+ WritePng(name.c_str(), page_index, buffer, stride, width, height);
break;
case OUTPUT_PPM:
- WritePpm(name.c_str(), page_index, buffer, stride, width, height);
+ image_file_name =
+ WritePpm(name.c_str(), page_index, buffer, stride, width, height);
break;
#ifdef PDF_ENABLE_SKIA
@@ -656,13 +690,19 @@ bool RenderPage(const std::string& name,
reinterpret_cast<SkPictureRecorder*>(
FPDF_RenderPageSkp(page, width, height)));
FPDF_FFLRecord(form, recorder.get(), page, 0, 0, width, height, 0, 0);
- WriteSkp(name.c_str(), page_index, recorder.get());
+ image_file_name = WriteSkp(name.c_str(), page_index, recorder.get());
} break;
#endif
default:
break;
}
+ // Write the filename and the MD5 of the buffer to stdout if we wrote a
+ // file.
+ if (image_file_name != "") {
+ OutputMD5Hash(image_file_name.c_str(), buffer, stride * height);
caryclark 2016/12/20 22:42:59 Maybe add a new command line flag that permits thi
stephana 2016/12/21 16:12:06 Done.
+ }
+
FPDFBitmap_Destroy(bitmap);
} else {
fprintf(stderr, "Page was too large to be rendered.\n");
« no previous file with comments | « samples/DEPS ('k') | testing/tools/common.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698