summaryrefslogtreecommitdiff
path: root/fpdfsdk/fpdfedit_embeddertest.cpp
diff options
context:
space:
mode:
authorJane Liu <janeliulwq@google.com>2017-08-16 11:25:35 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-08-16 17:14:22 +0000
commitca89829775fec2968b51fe5abad86bad1b6a277b (patch)
treef276524600e7a4b8fa1cfb526302f330626cd815 /fpdfsdk/fpdfedit_embeddertest.cpp
parenteb14e04c79c575146fe96c025dbf56b7440870c7 (diff)
downloadpdfium-ca89829775fec2968b51fe5abad86bad1b6a277b.tar.xz
API and test for retrieving metadata from image objects
Added FPDFImageObj_GetImageMetadata() for retriving the image metadata of image objects, including its dimension, DPI, bits per pixel, and colorspace. * Added a corresponding embedder test. Bug=pdfium:677 Change-Id: I4229334d1ac2125b21a46e2e44ea937ea2e94b51 Reviewed-on: https://pdfium-review.googlesource.com/10110 Reviewed-by: Lei Zhang <thestig@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: Jane Liu <janeliulwq@google.com>
Diffstat (limited to 'fpdfsdk/fpdfedit_embeddertest.cpp')
-rw-r--r--fpdfsdk/fpdfedit_embeddertest.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/fpdfsdk/fpdfedit_embeddertest.cpp b/fpdfsdk/fpdfedit_embeddertest.cpp
index e62ef2149b..6dc177e2b5 100644
--- a/fpdfsdk/fpdfedit_embeddertest.cpp
+++ b/fpdfsdk/fpdfedit_embeddertest.cpp
@@ -1084,3 +1084,50 @@ TEST_F(FPDFEditEmbeddertest, GetImageFilters) {
UnloadPage(page);
}
+
+TEST_F(FPDFEditEmbeddertest, GetImageMetadata) {
+ ASSERT_TRUE(OpenDocument("embedded_images.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+
+ // Check that getting the metadata of a null object would fail.
+ FPDF_IMAGEOBJ_METADATA metadata;
+ EXPECT_FALSE(FPDFImageObj_GetImageMetadata(nullptr, page, &metadata));
+
+ // Check that receiving the metadata with a null metadata object would fail.
+ FPDF_PAGEOBJECT obj = FPDFPage_GetObject(page, 35);
+ EXPECT_FALSE(FPDFImageObj_GetImageMetadata(obj, page, nullptr));
+
+ // Check that when retrieving an image object's metadata without passing in
+ // |page|, all values are correct, with the last two being default values.
+ ASSERT_EQ(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
+ ASSERT_TRUE(FPDFImageObj_GetImageMetadata(obj, nullptr, &metadata));
+ EXPECT_EQ(92u, metadata.width);
+ EXPECT_EQ(68u, metadata.height);
+ EXPECT_NEAR(96.000000, metadata.horizontal_dpi, 0.001);
+ EXPECT_NEAR(96.000000, metadata.vertical_dpi, 0.001);
+ EXPECT_EQ(0u, metadata.bits_per_pixel);
+ EXPECT_EQ(FPDF_COLORSPACE_UNKNOWN, metadata.colorspace);
+
+ // Verify the metadata of a bitmap image with indexed colorspace.
+ ASSERT_TRUE(FPDFImageObj_GetImageMetadata(obj, page, &metadata));
+ EXPECT_EQ(92u, metadata.width);
+ EXPECT_EQ(68u, metadata.height);
+ EXPECT_NEAR(96.000000, metadata.horizontal_dpi, 0.001);
+ EXPECT_NEAR(96.000000, metadata.vertical_dpi, 0.001);
+ EXPECT_EQ(1u, metadata.bits_per_pixel);
+ EXPECT_EQ(FPDF_COLORSPACE_INDEXED, metadata.colorspace);
+
+ // Verify the metadata of an image with RGB colorspace.
+ obj = FPDFPage_GetObject(page, 37);
+ ASSERT_EQ(FPDF_PAGEOBJ_IMAGE, FPDFPageObj_GetType(obj));
+ ASSERT_TRUE(FPDFImageObj_GetImageMetadata(obj, page, &metadata));
+ EXPECT_EQ(126u, metadata.width);
+ EXPECT_EQ(106u, metadata.height);
+ EXPECT_NEAR(162.173752, metadata.horizontal_dpi, 0.001);
+ EXPECT_NEAR(162.555878, metadata.vertical_dpi, 0.001);
+ EXPECT_EQ(24u, metadata.bits_per_pixel);
+ EXPECT_EQ(FPDF_COLORSPACE_DEVICERGB, metadata.colorspace);
+
+ UnloadPage(page);
+}