PDF a11y: new API for fill and stroke colors
The text fill and stroke colors are now exposed by
FPDFText_GetFillColor() and FPDFText_GetStrokeColor(). Each API takes
separated parameters for R, G, B and A values.
Bug: chromium:985604
Change-Id: Ibb9990eba303b818674f0e61b30f74e779a9f156
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/60110
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/fpdf_text_embeddertest.cpp b/fpdfsdk/fpdf_text_embeddertest.cpp
index 40d0c97..e4d11ed 100644
--- a/fpdfsdk/fpdf_text_embeddertest.cpp
+++ b/fpdfsdk/fpdf_text_embeddertest.cpp
@@ -1297,3 +1297,69 @@
FPDFText_ClosePage(text_page);
UnloadPage(page);
}
+
+TEST_F(FPDFTextEmbedderTest, GetFillColor) {
+ ASSERT_TRUE(OpenDocument("text_color.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+
+ FPDF_TEXTPAGE text_page = FPDFText_LoadPage(page);
+ ASSERT_TRUE(text_page);
+
+ ASSERT_EQ(1, FPDFText_CountChars(text_page));
+
+ ASSERT_FALSE(
+ FPDFText_GetFillColor(nullptr, 0, nullptr, nullptr, nullptr, nullptr));
+ ASSERT_FALSE(
+ FPDFText_GetFillColor(text_page, -1, nullptr, nullptr, nullptr, nullptr));
+ ASSERT_FALSE(FPDFText_GetFillColor(text_page, 314, nullptr, nullptr, nullptr,
+ nullptr));
+ ASSERT_FALSE(
+ FPDFText_GetFillColor(text_page, 0, nullptr, nullptr, nullptr, nullptr));
+
+ unsigned int r;
+ unsigned int g;
+ unsigned int b;
+ unsigned int a;
+ ASSERT_TRUE(FPDFText_GetFillColor(text_page, 0, &r, &g, &b, &a));
+ ASSERT_EQ(0xffu, r);
+ ASSERT_EQ(0u, g);
+ ASSERT_EQ(0u, b);
+ ASSERT_EQ(0xffu, a);
+
+ FPDFText_ClosePage(text_page);
+ UnloadPage(page);
+}
+
+TEST_F(FPDFTextEmbedderTest, GetStrokeColor) {
+ ASSERT_TRUE(OpenDocument("text_color.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ ASSERT_TRUE(page);
+
+ FPDF_TEXTPAGE text_page = FPDFText_LoadPage(page);
+ ASSERT_TRUE(text_page);
+
+ ASSERT_EQ(1, FPDFText_CountChars(text_page));
+
+ ASSERT_FALSE(
+ FPDFText_GetStrokeColor(nullptr, 0, nullptr, nullptr, nullptr, nullptr));
+ ASSERT_FALSE(FPDFText_GetStrokeColor(text_page, -1, nullptr, nullptr, nullptr,
+ nullptr));
+ ASSERT_FALSE(FPDFText_GetStrokeColor(text_page, 314, nullptr, nullptr,
+ nullptr, nullptr));
+ ASSERT_FALSE(FPDFText_GetStrokeColor(text_page, 0, nullptr, nullptr, nullptr,
+ nullptr));
+
+ unsigned int r;
+ unsigned int g;
+ unsigned int b;
+ unsigned int a;
+ ASSERT_TRUE(FPDFText_GetStrokeColor(text_page, 0, &r, &g, &b, &a));
+ ASSERT_EQ(0u, r);
+ ASSERT_EQ(0xffu, g);
+ ASSERT_EQ(0u, b);
+ ASSERT_EQ(0xffu, a);
+
+ FPDFText_ClosePage(text_page);
+ UnloadPage(page);
+}