summaryrefslogtreecommitdiff
path: root/svx/source/svdraw/svdpdf.cxx
diff options
context:
space:
mode:
authorAshod Nakashian <ashod.nakashian@collabora.co.uk>2018-04-22 17:21:30 -0400
committerJan Holesovsky <kendy@collabora.com>2018-06-07 10:45:30 +0200
commit7181931acd7d7612eb26d7fc43feb743a3972a08 (patch)
tree59fa6a6483b0305c751d900f27a6d93c03d77b1d /svx/source/svdraw/svdpdf.cxx
parent42c7a7607562bc7afc06cdb3ccb7b6293cf4f10c (diff)
svx: support no fill and no stroke paths in PDF import
Change-Id: Ida5daa71d469805fd52e08e804fb9fa182d7d008
Diffstat (limited to 'svx/source/svdraw/svdpdf.cxx')
-rw-r--r--svx/source/svdraw/svdpdf.cxx37
1 files changed, 25 insertions, 12 deletions
diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx
index 1350a61acec4..a4cdaad5ba52 100644
--- a/svx/source/svdraw/svdpdf.cxx
+++ b/svx/source/svdraw/svdpdf.cxx
@@ -1415,11 +1415,24 @@ void ImpSdrPdfImport::ImportPath(FPDF_PAGEOBJECT pPageObject, int nPageObjectInd
float fWidth = 1;
FPDFPath_GetStrokeWidth(pPageObject, &fWidth);
- SAL_WARN("sd.filter", "Path Stroke Width: " << fWidth);
- const double dWidth = fabs(sqrt2(a, c) * fWidth);
- SAL_WARN("sd.filter", "Path Stroke Width scaled: " << dWidth);
+ const double dWidth = 0.5 * fabs(sqrt2(mCurMatrix.a(), mCurMatrix.c()) * fWidth);
mnLineWidth = lcl_ToLogic(lcl_PointToPixel(dWidth));
mnLineWidth /= 2;
+ SAL_WARN("sd.filter", "Path Stroke Width: " << fWidth << ", scaled: " << dWidth
+ << ", Logical: " << mnLineWidth);
+
+ int nFillMode = FPDF_FILLMODE_ALTERNATE;
+ FPDF_BOOL bStroke = true;
+ if (FPDFPath_GetDrawMode(pPageObject, &nFillMode, &bStroke))
+ {
+ SAL_WARN("sd.filter", "Got PATH FillMode: " << nFillMode << ", Storke: " << bStroke);
+ if (nFillMode == FPDF_FILLMODE_ALTERNATE)
+ mpVD->SetDrawMode(DrawModeFlags::Default);
+ else if (nFillMode == FPDF_FILLMODE_WINDING)
+ mpVD->SetDrawMode(DrawModeFlags::Default);
+ else
+ mpVD->SetDrawMode(DrawModeFlags::NoFill);
+ }
unsigned int nR;
unsigned int nG;
@@ -1429,15 +1442,15 @@ void ImpSdrPdfImport::ImportPath(FPDF_PAGEOBJECT pPageObject, int nPageObjectInd
SAL_WARN("sd.filter", "Got PATH fill color: " << nR << ", " << nG << ", " << nB << ", " << nA);
mpVD->SetFillColor(Color(nR, nG, nB));
- FPDFPath_GetStrokeColor(pPageObject, &nR, &nG, &nB, &nA);
- SAL_WARN("sd.filter",
- "Got PATH stroke color: " << nR << ", " << nG << ", " << nB << ", " << nA);
- mpVD->SetLineColor(Color(nR, nG, nB));
-
- // int nFillMode = 0; // No fill.
- // bool bStroke = false;
- // FPDFPath_GetDrawMode(pPageObject, &nFillMode, &bStroke);
- // mpVD->Setstroke(Color(r, g, b));
+ if (bStroke)
+ {
+ FPDFPath_GetStrokeColor(pPageObject, &nR, &nG, &nB, &nA);
+ SAL_WARN("sd.filter",
+ "Got PATH stroke color: " << nR << ", " << nG << ", " << nB << ", " << nA);
+ mpVD->SetLineColor(Color(nR, nG, nB));
+ }
+ else
+ mpVD->SetLineColor(COL_TRANSPARENT);
// if(!mbLastObjWasPolyWithoutLine || !CheckLastPolyLineAndFillMerge(basegfx::B2DPolyPolygon(aSource)))