summaryrefslogtreecommitdiff
path: root/vcl/unx/generic
diff options
context:
space:
mode:
authorRegina Henschel <rb.henschel@t-online.de>2016-04-09 23:15:09 +0200
committerArmin Le Grand <Armin.Le.Grand@cib.de>2016-04-26 16:42:27 +0000
commit32cec4ca8bf1e09dd33aa461984e8e8ae34f4a7c (patch)
tree5591a63de12179505a0e7a4870632754585152d3 /vcl/unx/generic
parent4905c8bf7834b1ca79139c62f4e8b0672e9ddc13 (diff)
tdf#48066 render stroke-miterlimit correctly in SVG import
The property stroke-miterlimit is transported to the renderers via a new member mfMiterMinimumAngle in class LineAttribute Several drawPolyLine methods are adapted. This patch does not include changes in MetaAction. Presentation mode, printing, and PDF-export is still wrong. Corrected LineJoinMiter to LineJoinBevel in canvas, that s closer to NONE. Removed DrawPolyLine method without MiterMinimumAngle and adapted calls accordingly. Change-Id: I6bcd24add5d85c4d9a39e3788e0682091c5fc9c4 Reviewed-on: https://gerrit.libreoffice.org/23946 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Armin Le Grand <Armin.Le.Grand@cib.de> Reviewed-by: Regina Henschel <rb.henschel@t-online.de>
Diffstat (limited to 'vcl/unx/generic')
-rw-r--r--vcl/unx/generic/gdi/gdiimpl.cxx5
-rw-r--r--vcl/unx/generic/gdi/gdiimpl.hxx3
-rw-r--r--vcl/unx/generic/gdi/salgdi.cxx5
-rw-r--r--vcl/unx/generic/print/genpspgraphics.cxx3
4 files changed, 10 insertions, 6 deletions
diff --git a/vcl/unx/generic/gdi/gdiimpl.cxx b/vcl/unx/generic/gdi/gdiimpl.cxx
index df5a77961b15..02f93255e928 100644
--- a/vcl/unx/generic/gdi/gdiimpl.cxx
+++ b/vcl/unx/generic/gdi/gdiimpl.cxx
@@ -1597,7 +1597,8 @@ bool X11SalGraphicsImpl::drawPolyLine(
double fTransparency,
const basegfx::B2DVector& rLineWidth,
basegfx::B2DLineJoin eLineJoin,
- css::drawing::LineCap eLineCap)
+ css::drawing::LineCap eLineCap,
+ double fMiterMinimumAngle)
{
const bool bIsHairline = (rLineWidth.getX() == rLineWidth.getY()) && (rLineWidth.getX() <= 1.2);
@@ -1654,7 +1655,7 @@ bool X11SalGraphicsImpl::drawPolyLine(
}
// create the area-polygon for the line
- const basegfx::B2DPolyPolygon aAreaPolyPoly( basegfx::tools::createAreaGeometry(aPolygon, fHalfWidth, eLineJoin, eLineCap) );
+ const basegfx::B2DPolyPolygon aAreaPolyPoly( basegfx::tools::createAreaGeometry(aPolygon, fHalfWidth, eLineJoin, eLineCap, fMiterMinimumAngle) );
if( (rLineWidth.getX() != rLineWidth.getY())
&& !basegfx::fTools::equalZero( rLineWidth.getX() ) )
diff --git a/vcl/unx/generic/gdi/gdiimpl.hxx b/vcl/unx/generic/gdi/gdiimpl.hxx
index d637237d7871..0b58543c71fa 100644
--- a/vcl/unx/generic/gdi/gdiimpl.hxx
+++ b/vcl/unx/generic/gdi/gdiimpl.hxx
@@ -164,7 +164,8 @@ public:
double fTransparency,
const basegfx::B2DVector& rLineWidths,
basegfx::B2DLineJoin,
- css::drawing::LineCap) override;
+ css::drawing::LineCap,
+ double fMiterMinimumAngle) override;
virtual bool drawPolyLineBezier(
sal_uInt32 nPoints,
diff --git a/vcl/unx/generic/gdi/salgdi.cxx b/vcl/unx/generic/gdi/salgdi.cxx
index 6444cc4fe522..5821a38fcaa6 100644
--- a/vcl/unx/generic/gdi/salgdi.cxx
+++ b/vcl/unx/generic/gdi/salgdi.cxx
@@ -564,10 +564,11 @@ bool X11SalGraphics::drawPolyLine(
double fTransparency,
const basegfx::B2DVector& rLineWidth,
basegfx::B2DLineJoin eLineJoin,
- css::drawing::LineCap eLineCap)
+ css::drawing::LineCap eLineCap,
+ double fMiterMinimumAngle)
{
return mxImpl->drawPolyLine( rPolygon, fTransparency, rLineWidth,
- eLineJoin, eLineCap );
+ eLineJoin, eLineCap, fMiterMinimumAngle );
}
bool X11SalGraphics::drawGradient(const tools::PolyPolygon& rPoly, const Gradient& rGradient)
diff --git a/vcl/unx/generic/print/genpspgraphics.cxx b/vcl/unx/generic/print/genpspgraphics.cxx
index 85b6f17cfe3b..b018a80dd33f 100644
--- a/vcl/unx/generic/print/genpspgraphics.cxx
+++ b/vcl/unx/generic/print/genpspgraphics.cxx
@@ -445,7 +445,8 @@ bool GenPspGraphics::drawPolyLine(
double /*fTranspareny*/,
const basegfx::B2DVector& /*rLineWidths*/,
basegfx::B2DLineJoin /*eJoin*/,
- css::drawing::LineCap /*eLineCap*/)
+ css::drawing::LineCap /*eLineCap*/,
+ double /*fMiterMinimumAngle*/)
{
// TODO: a PS printer can draw B2DPolyLines almost directly
return false;