diff options
author | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-05-04 14:03:10 +0200 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@qt.io> | 2017-05-04 14:03:11 +0200 |
commit | 464a43d43c2bb2440d4ad745bc134e0dac10872c (patch) | |
tree | b1c27b1d1c11f9c43bd2e62e1fd955bc6f89029f /src/gui/painting/qtriangulatingstroker.cpp | |
parent | 0208cac94fbd79fc563c903e2b973d79f9644b82 (diff) | |
parent | 877ef0594d94f48bf063446b1f8a4b5e1941a8cd (diff) |
Merge 5.9 into 5.9.0v5.9.0-beta4
Change-Id: Id3fc911f024cba292a5c426b36aa94ff9f3c0ef7
Diffstat (limited to 'src/gui/painting/qtriangulatingstroker.cpp')
-rw-r--r-- | src/gui/painting/qtriangulatingstroker.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/gui/painting/qtriangulatingstroker.cpp b/src/gui/painting/qtriangulatingstroker.cpp index 6243f1e2a4..3f7b01ddbe 100644 --- a/src/gui/painting/qtriangulatingstroker.cpp +++ b/src/gui/painting/qtriangulatingstroker.cpp @@ -525,6 +525,7 @@ void QDashedStrokeProcessor::process(const QVectorPath &path, const QPen &pen, c int count = path.elementCount(); bool cosmetic = qt_pen_is_cosmetic(pen, hints); + bool implicitClose = path.hasImplicitClose(); m_points.reset(); m_types.reset(); @@ -558,8 +559,14 @@ void QDashedStrokeProcessor::process(const QVectorPath &path, const QPen &pen, c if (count < 2) return; - const qreal *endPts = pts + (count<<1); + bool needsClose = false; + if (implicitClose) { + if (pts[0] != pts[count * 2 - 2] || pts[1] != pts[count * 2 - 1]) + needsClose = true; + } + const qreal *firstPts = pts; + const qreal *endPts = pts + (count<<1); m_dash_stroker.begin(this); if (!types) { @@ -605,6 +612,8 @@ void QDashedStrokeProcessor::process(const QVectorPath &path, const QPen &pen, c } } } + if (needsClose) + m_dash_stroker.lineTo(firstPts[0], firstPts[1]); m_dash_stroker.end(); } |