aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
authorBerthold Krevert <berthold.krevert@basyskom.com>2017-08-06 16:43:36 +0200
committerLaszlo Agocs <laszlo.agocs@qt.io>2017-08-09 11:06:27 +0000
commit3128a680598667b24f138a274131f3906870bf09 (patch)
tree727dc84f3b1f916344b63b2edbfe280ed0e44460 /src/imports
parentfaa2f631478d425edc083e63b49cb3bcb8e47587 (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.cpp19
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();
}