Add embedder tests for FPDFPageObj_HasTransparency().
Change-Id: I7e2e56f239e8848bd53a93f6dc98988d0d31235f
Reviewed-on: https://pdfium-review.googlesource.com/c/50693
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_editpage_embeddertest.cpp b/fpdfsdk/fpdf_editpage_embeddertest.cpp
index c6960a5..9947dbd 100644
--- a/fpdfsdk/fpdf_editpage_embeddertest.cpp
+++ b/fpdfsdk/fpdf_editpage_embeddertest.cpp
@@ -66,3 +66,61 @@
CloseSavedDocument();
}
}
+
+TEST_F(FPDFEditPageEmbedderTest, HasTransparencyImage) {
+ constexpr int kExpectedObjectCount = 39;
+ ASSERT_TRUE(OpenDocument("embedded_images.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+ ASSERT_EQ(kExpectedObjectCount, FPDFPage_CountObjects(page));
+
+ for (int i = 0; i < kExpectedObjectCount; ++i) {
+ FPDF_PAGEOBJECT obj = FPDFPage_GetObject(page, i);
+ EXPECT_FALSE(FPDFPageObj_HasTransparency(obj));
+
+ FPDFPageObj_SetFillColor(obj, 255, 0, 0, 127);
+ EXPECT_TRUE(FPDFPageObj_HasTransparency(obj));
+ }
+
+ UnloadPage(page);
+}
+
+TEST_F(FPDFEditPageEmbedderTest, HasTransparencyInvalid) {
+ EXPECT_FALSE(FPDFPageObj_HasTransparency(nullptr));
+}
+
+TEST_F(FPDFEditPageEmbedderTest, HasTransparencyPath) {
+ constexpr int kExpectedObjectCount = 8;
+ EXPECT_TRUE(OpenDocument("rectangles.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+ ASSERT_EQ(kExpectedObjectCount, FPDFPage_CountObjects(page));
+
+ for (int i = 0; i < kExpectedObjectCount; ++i) {
+ FPDF_PAGEOBJECT obj = FPDFPage_GetObject(page, i);
+ EXPECT_FALSE(FPDFPageObj_HasTransparency(obj));
+
+ FPDFPageObj_SetStrokeColor(obj, 63, 63, 0, 127);
+ EXPECT_TRUE(FPDFPageObj_HasTransparency(obj));
+ }
+
+ UnloadPage(page);
+}
+
+TEST_F(FPDFEditPageEmbedderTest, HasTransparencyText) {
+ constexpr int kExpectedObjectCount = 2;
+ EXPECT_TRUE(OpenDocument("text_render_mode.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+ ASSERT_EQ(kExpectedObjectCount, FPDFPage_CountObjects(page));
+
+ for (int i = 0; i < kExpectedObjectCount; ++i) {
+ FPDF_PAGEOBJECT obj = FPDFPage_GetObject(page, i);
+ EXPECT_FALSE(FPDFPageObj_HasTransparency(obj));
+
+ FPDFPageObj_SetBlendMode(obj, "Lighten");
+ EXPECT_TRUE(FPDFPageObj_HasTransparency(obj));
+ }
+
+ UnloadPage(page);
+}