Add public method FPDFPath_GetFillColor to get fill color of a path object.

It was already possible to set the fill color, this is the other
direction.

Change-Id: Id53f3c9969ca036ec1f9383a2cdbaf224395215f
Reviewed-on: https://pdfium-review.googlesource.com/3690
Commit-Queue: Nicolás Peña <npm@chromium.org>
Reviewed-by: Nicolás Peña <npm@chromium.org>
diff --git a/fpdfsdk/fpdfedit_embeddertest.cpp b/fpdfsdk/fpdfedit_embeddertest.cpp
index a54a9b9..6454c34 100644
--- a/fpdfsdk/fpdfedit_embeddertest.cpp
+++ b/fpdfsdk/fpdfedit_embeddertest.cpp
@@ -279,6 +279,18 @@
   // Now add to that a green rectangle with some medium alpha
   FPDF_PAGEOBJECT green_rect = FPDFPageObj_CreateNewRect(100, 100, 40, 40);
   EXPECT_TRUE(FPDFPath_SetFillColor(green_rect, 0, 255, 0, 128));
+
+  // Make sure we get back the same color we set previously.
+  unsigned int R;
+  unsigned int G;
+  unsigned int B;
+  unsigned int A;
+  EXPECT_TRUE(FPDFPath_GetFillColor(green_rect, &R, &G, &B, &A));
+  EXPECT_EQ(0U, R);
+  EXPECT_EQ(255U, G);
+  EXPECT_EQ(0U, B);
+  EXPECT_EQ(128U, A);
+
   EXPECT_TRUE(FPDFPath_SetDrawMode(green_rect, FPDF_FILLMODE_WINDING, 0));
   FPDFPage_InsertObject(page, green_rect);
   EXPECT_TRUE(FPDFPage_GenerateContent(page));
diff --git a/fpdfsdk/fpdfeditpath.cpp b/fpdfsdk/fpdfeditpath.cpp
index f085ed3..155dda5 100644
--- a/fpdfsdk/fpdfeditpath.cpp
+++ b/fpdfsdk/fpdfeditpath.cpp
@@ -66,6 +66,24 @@
   return true;
 }
 
+DLLEXPORT FPDF_BOOL FPDFPath_GetFillColor(FPDF_PAGEOBJECT path,
+                                          unsigned int* R,
+                                          unsigned int* G,
+                                          unsigned int* B,
+                                          unsigned int* A) {
+  if (!path || !R || !G || !B || !A)
+    return false;
+
+  auto* pPathObj = reinterpret_cast<CPDF_PathObject*>(path);
+  uint32_t fillRGB = pPathObj->m_ColorState.GetFillRGB();
+  *R = FXSYS_GetRValue(fillRGB);
+  *G = FXSYS_GetGValue(fillRGB);
+  *B = FXSYS_GetBValue(fillRGB);
+  *A = static_cast<unsigned int>(pPathObj->m_GeneralState.GetFillAlpha() *
+                                 255.f);
+  return true;
+}
+
 DLLEXPORT FPDF_BOOL FPDFPath_MoveTo(FPDF_PAGEOBJECT path, float x, float y) {
   if (!path)
     return false;
diff --git a/fpdfsdk/fpdfview_c_api_test.c b/fpdfsdk/fpdfview_c_api_test.c
index 9afbdd4..b4da951 100644
--- a/fpdfsdk/fpdfview_c_api_test.c
+++ b/fpdfsdk/fpdfview_c_api_test.c
@@ -93,6 +93,7 @@
     CHK(FPDFPath_SetStrokeColor);
     CHK(FPDFPath_SetStrokeWidth);
     CHK(FPDFPath_SetFillColor);
+    CHK(FPDFPath_GetFillColor);
     CHK(FPDFPath_MoveTo);
     CHK(FPDFPath_LineTo);
     CHK(FPDFPath_BezierTo);