diff options
author | Berthold Krevert <berthold.krevert@basyskom.com> | 2017-08-06 16:43:36 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2017-08-09 11:06:27 +0000 |
commit | 3128a680598667b24f138a274131f3906870bf09 (patch) | |
tree | 727dc84f3b1f916344b63b2edbfe280ed0e44460 /src/imports | |
parent | faa2f631478d425edc083e63b49cb3bcb8e47587 (diff) |
Nvpr renderer: Adapt QPen behavior when setting dashPattern
Fallback to correct default values if dashPattern array is empty
(while strokeStyle is set to DashLine at the same time) and check
for odd sized dashPattern arrays.
Change-Id: Ic1dbf9f80c5efaab3bbf138158c12979a4414595
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/shapes/qquickshapenvprrenderer.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/imports/shapes/qquickshapenvprrenderer.cpp b/src/imports/shapes/qquickshapenvprrenderer.cpp index 27a0d6ca96..c0a918bda5 100644 --- a/src/imports/shapes/qquickshapenvprrenderer.cpp +++ b/src/imports/shapes/qquickshapenvprrenderer.cpp @@ -387,9 +387,22 @@ void QQuickShapeNvprRenderer::updateNode() // meaning the input dash pattern and dash offset here are in width units. dst.dashOffset = src.dashOffset * src.strokeWidth; if (src.dashActive) { - dst.dashPattern.resize(src.dashPattern.count()); - for (int i = 0; i < src.dashPattern.count(); ++i) - dst.dashPattern[i] = GLfloat(src.dashPattern[i]) * src.strokeWidth; + if (src.dashPattern.isEmpty()) { + // default values for DashLine as defined in qpen.cpp + dst.dashPattern.resize(2); + dst.dashPattern[0] = 4 * src.strokeWidth; // dash + dst.dashPattern[1] = 2 * src.strokeWidth; // space + } else { + dst.dashPattern.resize(src.dashPattern.count()); + for (int i = 0; i < src.dashPattern.count(); ++i) + dst.dashPattern[i] = GLfloat(src.dashPattern[i]) * src.strokeWidth; + + // QPen expects a dash pattern of even length and so should we + if (src.dashPattern.count() % 2 != 0) { + qWarning("QQuickShapeNvprRenderNode: dash pattern not of even length"); + dst.dashPattern << src.strokeWidth; + } + } } else { dst.dashPattern.clear(); } |