diff options
author | Colin Ogilvie <colin.ogilvie@kdab.com> | 2018-07-03 14:29:27 +0100 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2018-07-12 20:26:34 +0000 |
commit | eab3371b91a2a752a123c4995d977a36ff952168 (patch) | |
tree | ca15f0c6bb58634d3444bdbbe25e355e852c2cc7 /src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp | |
parent | 1c6751558668c3527233d8b2d2e252f2ea133624 (diff) |
Add LineStyle support to Context2d
Allow Context2D lines to be drawn as dashed, dotted etc.
[ChangeLog][QtQuick][Canvas] Added set/get lineDash and lineDashOffset to Context2D to allow non solid lines to be drawn.
Task-number: QTBUG-31807
Change-Id: I9ffcc5d93dc352dbd0aec4ac8a616c999239c48d
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp')
-rw-r--r-- | src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp b/src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp index 30895d9b0e..55ebbe907c 100644 --- a/src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp +++ b/src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp @@ -192,6 +192,10 @@ QPen QQuickContext2DCommandBuffer::makePen(const QQuickContext2D::State& state) pen.setJoinStyle(state.lineJoin); pen.setMiterLimit(state.miterLimit); pen.setBrush(state.strokeStyle); + if (!state.lineDash.isEmpty()) { + pen.setDashPattern(state.lineDash); + } + pen.setDashOffset(state.lineDashOffset); return pen; } @@ -361,6 +365,28 @@ void QQuickContext2DCommandBuffer::replay(QPainter* p, QQuickContext2D::State& s p->setPen(nPen); break; } + case QQuickContext2D::LineDash: + { + const qreal count = takeReal(); + QVector<qreal> pattern; + pattern.reserve(count); + for (uint i = 0; i < count; i++) { + pattern.append(takeReal()); + } + state.lineDash = pattern; + QPen nPen = p->pen(); + nPen.setDashPattern(pattern); + p->setPen(nPen); + break; + } + case QQuickContext2D::LineDashOffset: + { + state.lineDashOffset = takeReal(); + QPen nPen = p->pen(); + nPen.setDashOffset(state.lineDashOffset); + p->setPen(nPen); + break; + } case QQuickContext2D::MiterLimit: { state.miterLimit = takeMiterLimit(); |