From d8b7ac327cfe39f46aaa871cfa7a8fdc8b2b6b54 Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@collabora.co.uk>
Date: Wed, 1 Aug 2018 08:34:42 +0200
Subject: pdfium: replace FPDFTextObj_GetColor() patch with backport

Upstream already got FPDFPageObj_GetFillColor() and
FPDFPageObj_GetStrokeColor(), so what was necessary is just a
FPDFText_GetTextRenderMode() to find out which one to use.

Change-Id: I2f31fcadee8a4377b890e01ea62ed96bce275f2b
Reviewed-on: https://gerrit.libreoffice.org/58381
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins
---
 svx/source/svdraw/svdpdf.cxx | 29 ++++++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)

(limited to 'svx')

diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index 5b664eb23c65..b6bc08ce7d10 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -867,9 +867,32 @@ void ImpSdrPdfImport::ImportText(FPDF_PAGEOBJECT pPageObject, FPDF_TEXTPAGE pTex
     }
 
     Color aTextColor(COL_TRANSPARENT);
-    unsigned int nR, nG, nB, nA;
-    if (FPDFTextObj_GetColor(pPageObject, &nR, &nG, &nB, &nA))
-        aTextColor = Color(nR, nG, nB);
+    bool bFill = false;
+    bool bUse = true;
+    switch (FPDFText_GetTextRenderMode(pPageObject))
+    {
+        case FPDF_TEXTRENDERMODE_FILL:
+        case FPDF_TEXTRENDERMODE_FILL_CLIP:
+        case FPDF_TEXTRENDERMODE_FILL_STROKE:
+        case FPDF_TEXTRENDERMODE_FILL_STROKE_CLIP:
+            bFill = true;
+            break;
+        case FPDF_TEXTRENDERMODE_STROKE:
+        case FPDF_TEXTRENDERMODE_STROKE_CLIP:
+            break;
+        case FPDF_TEXTRENDERMODE_INVISIBLE:
+        case FPDF_TEXTRENDERMODE_CLIP:
+            bUse = false;
+            break;
+    }
+    if (bUse)
+    {
+        unsigned int nR, nG, nB, nA;
+        bool bRet = bFill ? FPDFPageObj_GetFillColor(pPageObject, &nR, &nG, &nB, &nA)
+                          : FPDFPageObj_GetStrokeColor(pPageObject, &nR, &nG, &nB, &nA);
+        if (bRet)
+            aTextColor = Color(nR, nG, nB);
+    }
 
     if (aTextColor != mpVD->GetTextColor())
     {
-- 
cgit