|
 |
f0633d |
From 812963c5ff6e1c4685eddb830a82a69a3801d820 Mon Sep 17 00:00:00 2001
|
|
 |
f0633d |
From: =?UTF-8?q?Mat=C3=BA=C5=A1=20Kukan?= <matus.kukan@collabora.com>
|
|
 |
f0633d |
Date: Fri, 6 Dec 2013 14:40:50 +0100
|
|
 |
f0633d |
Subject: [PATCH 047/109] EMF+: Fill line cap object if
|
|
 |
f0633d |
EmfPlusCustomLineCapDataFillPath is set.
|
|
 |
f0633d |
MIME-Version: 1.0
|
|
 |
f0633d |
Content-Type: text/plain; charset=UTF-8
|
|
 |
f0633d |
Content-Transfer-Encoding: 8bit
|
|
 |
f0633d |
|
|
 |
f0633d |
Change-Id: I7b53a8f18e1fb24b1ae0322bdf0980e431a0725f
|
|
 |
f0633d |
(cherry picked from commit 131f3230d98f24faf57d9404e333cb1fb183345b)
|
|
 |
f0633d |
Reviewed-on: https://gerrit.libreoffice.org/6960
|
|
 |
f0633d |
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
 |
f0633d |
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
|
 |
f0633d |
---
|
|
 |
f0633d |
cppcanvas/source/inc/implrenderer.hxx | 2 +-
|
|
 |
f0633d |
cppcanvas/source/mtfrenderer/emfplus.cxx | 23 ++++++++++++++++++++---
|
|
 |
f0633d |
2 files changed, 21 insertions(+), 4 deletions(-)
|
|
 |
f0633d |
|
|
 |
f0633d |
diff --git a/cppcanvas/source/inc/implrenderer.hxx b/cppcanvas/source/inc/implrenderer.hxx
|
|
 |
f0633d |
index d602945..a6f86e0 100644
|
|
 |
f0633d |
--- a/cppcanvas/source/inc/implrenderer.hxx
|
|
 |
f0633d |
+++ b/cppcanvas/source/inc/implrenderer.hxx
|
|
 |
f0633d |
@@ -284,7 +284,7 @@ static float GetSwapFloat( SvStream& rSt )
|
|
 |
f0633d |
/// Render LineCap, like the start or end arrow of a polygon.
|
|
 |
f0633d |
/// @return how much we should shorten the original polygon.
|
|
 |
f0633d |
double EMFPPlusDrawLineCap(const ::basegfx::B2DPolygon& rPolygon, double fPolyLength,
|
|
 |
f0633d |
- const ::basegfx::B2DPolyPolygon& rLineCap, bool bStart,
|
|
 |
f0633d |
+ const ::basegfx::B2DPolyPolygon& rLineCap, bool isFilled, bool bStart,
|
|
 |
f0633d |
const com::sun::star::rendering::StrokeAttributes& rAttributes,
|
|
 |
f0633d |
const ActionFactoryParameters& rParms, OutDevState& rState);
|
|
 |
f0633d |
|
|
 |
f0633d |
diff --git a/cppcanvas/source/mtfrenderer/emfplus.cxx b/cppcanvas/source/mtfrenderer/emfplus.cxx
|
|
 |
f0633d |
index 2387934..a11dc8b 100644
|
|
 |
f0633d |
--- a/cppcanvas/source/mtfrenderer/emfplus.cxx
|
|
 |
f0633d |
+++ b/cppcanvas/source/mtfrenderer/emfplus.cxx
|
|
 |
f0633d |
@@ -626,6 +626,7 @@ namespace cppcanvas
|
|
 |
f0633d |
sal_uInt32 strokeStartCap, strokeEndCap, strokeJoin;
|
|
 |
f0633d |
float miterLimit;
|
|
 |
f0633d |
basegfx::B2DPolyPolygon polygon;
|
|
 |
f0633d |
+ bool mbIsFilled;
|
|
 |
f0633d |
|
|
 |
f0633d |
public:
|
|
 |
f0633d |
EMFPCustomLineCap() : EMFPObject()
|
|
 |
f0633d |
@@ -652,7 +653,7 @@ namespace cppcanvas
|
|
 |
f0633d |
aAttributes.MiterLimit = miterLimit;
|
|
 |
f0633d |
}
|
|
 |
f0633d |
|
|
 |
f0633d |
- void ReadPath(SvStream& s, ImplRenderer& rR, bool bClosed)
|
|
 |
f0633d |
+ void ReadPath(SvStream& s, ImplRenderer& rR, bool bFill)
|
|
 |
f0633d |
{
|
|
 |
f0633d |
sal_Int32 pathLength;
|
|
 |
f0633d |
s >> pathLength;
|
|
 |
f0633d |
@@ -669,7 +670,7 @@ namespace cppcanvas
|
|
 |
f0633d |
path.Read(s, pathFlags, rR);
|
|
 |
f0633d |
|
|
 |
f0633d |
polygon = path.GetPolygon(rR, false);
|
|
 |
f0633d |
- polygon.setClosed(bClosed);
|
|
 |
f0633d |
+ mbIsFilled = bFill;
|
|
 |
f0633d |
|
|
 |
f0633d |
// transformation to convert the path to what LibreOffice
|
|
 |
f0633d |
// expects
|
|
 |
f0633d |
@@ -1321,7 +1322,7 @@ namespace cppcanvas
|
|
 |
f0633d |
}
|
|
 |
f0633d |
|
|
 |
f0633d |
double ImplRenderer::EMFPPlusDrawLineCap(const ::basegfx::B2DPolygon& rPolygon, double fPolyLength,
|
|
 |
f0633d |
- const ::basegfx::B2DPolyPolygon& rLineCap, bool bStart, const rendering::StrokeAttributes& rAttributes,
|
|
 |
f0633d |
+ const ::basegfx::B2DPolyPolygon& rLineCap, bool bIsFilled, bool bStart, const rendering::StrokeAttributes& rAttributes,
|
|
 |
f0633d |
const ActionFactoryParameters& rParms, OutDevState& rState)
|
|
 |
f0633d |
{
|
|
 |
f0633d |
if (!rLineCap.count())
|
|
 |
f0633d |
@@ -1350,6 +1351,20 @@ namespace cppcanvas
|
|
 |
f0633d |
rParms.mrCurrActionIndex += pAction->getActionCount()-1;
|
|
 |
f0633d |
}
|
|
 |
f0633d |
|
|
 |
f0633d |
+ if (bIsFilled)
|
|
 |
f0633d |
+ {
|
|
 |
f0633d |
+ bool bWasFillColorSet = rState.isFillColorSet;
|
|
 |
f0633d |
+ rState.isFillColorSet = true;
|
|
 |
f0633d |
+ rState.fillColor = rState.lineColor;
|
|
 |
f0633d |
+ ActionSharedPtr pAction2(internal::PolyPolyActionFactory::createPolyPolyAction(aArrow, rParms.mrCanvas, rState));
|
|
 |
f0633d |
+ if (pAction2)
|
|
 |
f0633d |
+ {
|
|
 |
f0633d |
+ maActions.push_back(MtfAction(pAction2, rParms.mrCurrActionIndex));
|
|
 |
f0633d |
+ rParms.mrCurrActionIndex += pAction2->getActionCount()-1;
|
|
 |
f0633d |
+ }
|
|
 |
f0633d |
+ rState.isFillColorSet = bWasFillColorSet;
|
|
 |
f0633d |
+ }
|
|
 |
f0633d |
+
|
|
 |
f0633d |
return rAttributes.StrokeWidth;
|
|
 |
f0633d |
}
|
|
 |
f0633d |
|
|
 |
f0633d |
@@ -1404,6 +1419,7 @@ namespace cppcanvas
|
|
 |
f0633d |
pen->customStartCap->SetAttributes(aAttributes);
|
|
 |
f0633d |
|
|
 |
f0633d |
fStart = EMFPPlusDrawLineCap(aPolygon, fPolyLength, pen->customStartCap->polygon,
|
|
 |
f0633d |
+ pen->customStartCap->mbIsFilled,
|
|
 |
f0633d |
true, aAttributes, rParms, rState);
|
|
 |
f0633d |
}
|
|
 |
f0633d |
|
|
 |
f0633d |
@@ -1414,6 +1430,7 @@ namespace cppcanvas
|
|
 |
f0633d |
pen->customEndCap->SetAttributes(aAttributes);
|
|
 |
f0633d |
|
|
 |
f0633d |
fEnd = EMFPPlusDrawLineCap(aPolygon, fPolyLength, pen->customEndCap->polygon,
|
|
 |
f0633d |
+ pen->customEndCap->mbIsFilled,
|
|
 |
f0633d |
false, aAttributes, rParms, rState);
|
|
 |
f0633d |
}
|
|
 |
f0633d |
|
|
 |
f0633d |
--
|
|
 |
f0633d |
1.8.4.2
|
|
 |
f0633d |
|