diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2018-07-03 17:17:42 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2018-07-04 14:26:00 +0200 |
commit | ab89b8af4784d9edc2dbab40f14fb47d43bfbb5f (patch) | |
tree | a60579810ed27fab6435c015fe7f2f8ccdb8fbb2 | |
parent | ea5808780374cb520ec61c8e797f92fb7a6c37cb (diff) |
tdf#115671 vcl opengl: fix drawing of polylines with duplicate points
The bugdoc had a custom shape, the interesting part of it was a triangle
with miter line join, where the last segment was missing. In that case
RenderList::addDrawPolyLine() mishandled the polyline, as it does not
expect duplicate points in it.
(cherry picked from commit d4b49841090c70cc31000fb30de9b5ddc07b0c42)
Change-Id: I06d5c2d191bb6269a87da1f006f27a94205f5145
Reviewed-on: https://gerrit.libreoffice.org/56925
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r-- | vcl/opengl/gdiimpl.cxx | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx index 0fd1d0788eb6..ac976bfee213 100644 --- a/vcl/opengl/gdiimpl.cxx +++ b/vcl/opengl/gdiimpl.cxx @@ -1601,7 +1601,12 @@ bool OpenGLSalGraphicsImpl::drawPolyLine(const basegfx::B2DPolygon& rPolygon, do { VCL_GL_INFO("::drawPolyLine " << rPolygon.getB2DRange()); - mpRenderList->addDrawPolyLine(rPolygon, fTransparency, rLineWidth, eLineJoin, eLineCap, + // addDrawPolyLine() assumes that there are no duplicate points in the + // polygon. + basegfx::B2DPolygon aPolygon(rPolygon); + aPolygon.removeDoublePoints(); + + mpRenderList->addDrawPolyLine(aPolygon, fTransparency, rLineWidth, eLineJoin, eLineCap, fMiterMinimumAngle, mnLineColor, mrParent.getAntiAliasB2DDraw()); PostBatchDraw(); return true; |