From db269577f5f033c083d10b6327cbd1e1e32feb05 Mon Sep 17 00:00:00 2001 From: Henrique Nakashima Date: Tue, 16 Jan 2018 19:02:15 +0000 Subject: Add WriteBitmapToPng to EmbedderTest. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a util method to output the png to a file for visually validating the result of an embedder test. Once validated, the md5 can be considered correct. Bug: pdfium:981 Change-Id: I544dfbf2e85295e6ca2cdf48d1bc3f0bd5f415e9 Reviewed-on: https://pdfium-review.googlesource.com/22990 Reviewed-by: Nicolás Peña Moreno Reviewed-by: dsinclair Commit-Queue: Henrique Nakashima --- BUILD.gn | 1 + testing/embedder_test.cpp | 28 ++++++++++++++++++++++++++++ testing/embedder_test.h | 6 ++++++ 3 files changed, 35 insertions(+) diff --git a/BUILD.gn b/BUILD.gn index f4e5fe9e44..60c2e42f7a 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -2926,6 +2926,7 @@ test("pdfium_embeddertests") { "testing/range_set.h", ] deps = [ + ":image_diff", ":pdfium", ":test_support", "//testing/gmock", diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp index de7251383b..09a8533902 100644 --- a/testing/embedder_test.cpp +++ b/testing/embedder_test.cpp @@ -6,6 +6,7 @@ #include +#include #include #include #include @@ -17,6 +18,7 @@ #include "public/fpdf_text.h" #include "public/fpdfview.h" #include "testing/gmock/include/gmock/gmock.h" +#include "testing/image_diff/image_diff_png.h" #include "testing/test_support.h" #include "testing/utils/path_service.h" #include "third_party/base/ptr_util.h" @@ -426,6 +428,32 @@ std::string EmbedderTest::HashBitmap(FPDF_BITMAP bitmap) { return CryptToBase16(digest); } +#ifndef NDEBUG +// static +void EmbedderTest::WriteBitmapToPng(FPDF_BITMAP bitmap, + const std::string& filename) { + const int stride = FPDFBitmap_GetStride(bitmap); + const int width = FPDFBitmap_GetWidth(bitmap); + const int height = FPDFBitmap_GetHeight(bitmap); + const auto* buffer = + static_cast(FPDFBitmap_GetBuffer(bitmap)); + + std::vector png_encoding; + bool encoded = image_diff_png::EncodeBGRAPNG(buffer, width, height, stride, + false, &png_encoding); + + ASSERT_TRUE(encoded); + ASSERT_LT(filename.size(), 256u); + + std::ofstream png_file; + png_file.open(filename); + png_file.write(reinterpret_cast(&png_encoding.front()), + png_encoding.size()); + ASSERT_TRUE(png_file.good()); + png_file.close(); +} +#endif + // static void EmbedderTest::CompareBitmap(FPDF_BITMAP bitmap, int expected_width, diff --git a/testing/embedder_test.h b/testing/embedder_test.h index 8da1643824..98432e3e54 100644 --- a/testing/embedder_test.h +++ b/testing/embedder_test.h @@ -134,6 +134,12 @@ class EmbedderTest : public ::testing::Test, // Return the hash of |bitmap|. static std::string HashBitmap(FPDF_BITMAP bitmap); +#ifndef NDEBUG + // For debugging purposes. + // Write |bitmap| to a png file. + static void WriteBitmapToPng(FPDF_BITMAP bitmap, const std::string& filename); +#endif + // Check |bitmap| to make sure it has the right dimensions and content. static void CompareBitmap(FPDF_BITMAP bitmap, int expected_width, -- cgit v1.2.3