OpenCoverage

qquickcontext2dcommandbuffer.cpp

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp
Source codeSwitch to Preprocessed file
LineSourceCount
1/****************************************************************************-
2**-
3** Copyright (C) 2016 The Qt Company Ltd.-
4** Contact: https://www.qt.io/licensing/-
5**-
6** This file is part of the QtQuick module of the Qt Toolkit.-
7**-
8** $QT_BEGIN_LICENSE:LGPL$-
9** Commercial License Usage-
10** Licensees holding valid commercial Qt licenses may use this file in-
11** accordance with the commercial license agreement provided with the-
12** Software or, alternatively, in accordance with the terms contained in-
13** a written agreement between you and The Qt Company. For licensing terms-
14** and conditions see https://www.qt.io/terms-conditions. For further-
15** information use the contact form at https://www.qt.io/contact-us.-
16**-
17** GNU Lesser General Public License Usage-
18** Alternatively, this file may be used under the terms of the GNU Lesser-
19** General Public License version 3 as published by the Free Software-
20** Foundation and appearing in the file LICENSE.LGPL3 included in the-
21** packaging of this file. Please review the following information to-
22** ensure the GNU Lesser General Public License version 3 requirements-
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.-
24**-
25** GNU General Public License Usage-
26** Alternatively, this file may be used under the terms of the GNU-
27** General Public License version 2.0 or (at your option) the GNU General-
28** Public license version 3 or any later version approved by the KDE Free-
29** Qt Foundation. The licenses are as published by the Free Software-
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3-
31** included in the packaging of this file. Please review the following-
32** information to ensure the GNU General Public License requirements will-
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and-
34** https://www.gnu.org/licenses/gpl-3.0.html.-
35**-
36** $QT_END_LICENSE$-
37**-
38****************************************************************************/-
39-
40#include "qquickcontext2dcommandbuffer_p.h"-
41#include "qquickcanvasitem_p.h"-
42#include <qqml.h>-
43#include <QtCore/QMutex>-
44#include <QtQuick/qsgtexture.h>-
45#include <QtGui/QPaintEngine>-
46#if QT_CONFIG(opengl)-
47# include <QtGui/QOpenGLContext>-
48# include <QtGui/private/qopenglpaintengine_p.h>-
49#endif-
50-
51#define HAS_SHADOW(offsetX, offsetY, blur, color) (color.isValid() && color.alpha() && (blur || offsetX || offsetY))-
52-
53QT_BEGIN_NAMESPACE-
54-
55void qt_image_boxblur(QImage& image, int radius, bool quality);-
56-
57namespace {-
58 class ShadowImageMaker-
59 {-
60 public:-
61 virtual ~ShadowImageMaker() {}-
62-
63 void paintShapeAndShadow(QPainter *p, qreal offsetX, qreal offsetY, qreal blur, const QColor &color)-
64 {-
65 QRectF bounds = boundingRect().translated(offsetX, offsetY).adjusted(-2*blur, -2*blur, 2*blur, 2*blur);-
66 QRect boundsAligned = bounds.toAlignedRect();-
67-
68 QImage shadowImage(boundsAligned.size(), QImage::Format_ARGB32_Premultiplied);-
69 shadowImage.fill(0);-
70-
71 QPainter shadowPainter(&shadowImage);-
72 shadowPainter.setRenderHints(p->renderHints());-
73 shadowPainter.translate(offsetX - boundsAligned.left(), offsetY - boundsAligned.top());-
74 paint(&shadowPainter);-
75 shadowPainter.end();-
76-
77 if (blur > 0)
blur > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
78 qt_image_boxblur(shadowImage, qMax(1, qRound(blur / 2)), true);
never executed: qt_image_boxblur(shadowImage, qMax(1, qRound(blur / 2)), true);
0
79-
80 // blacken the image with shadow color...-
81 shadowPainter.begin(&shadowImage);-
82 shadowPainter.setCompositionMode(QPainter::CompositionMode_SourceIn);-
83 shadowPainter.fillRect(shadowImage.rect(), color);-
84 shadowPainter.end();-
85-
86 p->drawImage(boundsAligned.topLeft(), shadowImage);-
87 paint(p);-
88 }
never executed: end of block
0
89-
90 virtual void paint(QPainter *p) const = 0;-
91 virtual QRectF boundingRect() const = 0;-
92 };-
93-
94 class FillRectShadow : public ShadowImageMaker-
95 {-
96 public:-
97 FillRectShadow(const QRectF &rect, const QBrush &brush)-
98 : m_rect(rect.normalized())-
99 , m_brush(brush)-
100 {-
101 }
never executed: end of block
0
102-
103 void paint(QPainter *p) const override { p->fillRect(m_rect, m_brush); }
never executed: end of block
0
104 QRectF boundingRect() const override { return m_rect; }
never executed: return m_rect;
0
105-
106 private:-
107 QRectF m_rect;-
108 QBrush m_brush;-
109 };-
110-
111 class FillPathShadow : public ShadowImageMaker-
112 {-
113 public:-
114 FillPathShadow(const QPainterPath &path, const QBrush &brush)-
115 : m_path(path)-
116 , m_brush(brush)-
117 {-
118 }
never executed: end of block
0
119-
120 void paint(QPainter *p) const override { p->fillPath(m_path, m_brush); }
never executed: end of block
0
121 QRectF boundingRect() const override { return m_path.boundingRect(); }
never executed: return m_path.boundingRect();
0
122-
123 private:-
124 QPainterPath m_path;-
125 QBrush m_brush;-
126 };-
127-
128 class StrokePathShadow : public ShadowImageMaker-
129 {-
130 public:-
131 StrokePathShadow(const QPainterPath &path, const QPen &pen)-
132 : m_path(path)-
133 , m_pen(pen)-
134 {-
135 }
never executed: end of block
0
136-
137 void paint(QPainter *p) const override { p->strokePath(m_path, m_pen); }
never executed: end of block
0
138-
139 QRectF boundingRect() const override-
140 {-
141 qreal d = qMax(qreal(1), m_pen.widthF());-
142 return m_path.boundingRect().adjusted(-d, -d, d, d);
never executed: return m_path.boundingRect().adjusted(-d, -d, d, d);
0
143 }-
144-
145 private:-
146 QPainterPath m_path;-
147 QPen m_pen;-
148 };-
149-
150 class DrawImageShadow : public ShadowImageMaker-
151 {-
152 public:-
153 DrawImageShadow(const QImage &image, const QPointF &offset)-
154 : m_image(image)-
155 , m_offset(offset)-
156 {-
157 }
never executed: end of block
0
158-
159 void paint(QPainter *p) const override { p->drawImage(m_offset, m_image); }
never executed: end of block
0
160-
161 QRectF boundingRect() const override { return QRectF(m_image.rect()).translated(m_offset); }
never executed: return QRectF(m_image.rect()).translated(m_offset);
0
162-
163 private:-
164 QImage m_image;-
165 QPointF m_offset;-
166 };-
167}-
168-
169static void fillRectShadow(QPainter* p, QRectF shadowRect, qreal offsetX, qreal offsetY, qreal blur, const QColor& color)-
170{-
171 FillRectShadow shadowMaker(shadowRect, p->brush());-
172 shadowMaker.paintShapeAndShadow(p, offsetX, offsetY, blur, color);-
173}
never executed: end of block
0
174-
175static void fillShadowPath(QPainter* p, const QPainterPath& path, qreal offsetX, qreal offsetY, qreal blur, const QColor& color)-
176{-
177 FillPathShadow shadowMaker(path, p->brush());-
178 shadowMaker.paintShapeAndShadow(p, offsetX, offsetY, blur, color);-
179}
never executed: end of block
0
180-
181static void strokeShadowPath(QPainter* p, const QPainterPath& path, qreal offsetX, qreal offsetY, qreal blur, const QColor& color)-
182{-
183 StrokePathShadow shadowMaker(path, p->pen());-
184 shadowMaker.paintShapeAndShadow(p, offsetX, offsetY, blur, color);-
185}
never executed: end of block
0
186-
187QPen QQuickContext2DCommandBuffer::makePen(const QQuickContext2D::State& state)-
188{-
189 QPen pen;-
190 pen.setWidthF(state.lineWidth);-
191 pen.setCapStyle(state.lineCap);-
192 pen.setJoinStyle(state.lineJoin);-
193 pen.setMiterLimit(state.miterLimit);-
194 pen.setBrush(state.strokeStyle);-
195 return pen;
never executed: return pen;
0
196}-
197-
198void QQuickContext2DCommandBuffer::setPainterState(QPainter* p, const QQuickContext2D::State& state, const QPen& pen)-
199{-
200 p->setTransform(state.matrix * p->transform());-
201-
202 if (pen != p->pen())
pen != p->pen()Description
TRUEnever evaluated
FALSEnever evaluated
0
203 p->setPen(pen);
never executed: p->setPen(pen);
0
204-
205 if (state.fillStyle != p->brush())
state.fillStyle != p->brush()Description
TRUEnever evaluated
FALSEnever evaluated
0
206 p->setBrush(state.fillStyle);
never executed: p->setBrush(state.fillStyle);
0
207-
208 if (state.font != p->font())
state.font != p->font()Description
TRUEnever evaluated
FALSEnever evaluated
0
209 p->setFont(state.font);
never executed: p->setFont(state.font);
0
210-
211 if (state.globalAlpha != p->opacity()) {
state.globalAl...= p->opacity()Description
TRUEnever evaluated
FALSEnever evaluated
0
212 p->setOpacity(state.globalAlpha);-
213 }
never executed: end of block
0
214-
215 if (state.globalCompositeOperation != p->compositionMode())
state.globalCo...positionMode()Description
TRUEnever evaluated
FALSEnever evaluated
0
216 p->setCompositionMode(state.globalCompositeOperation);
never executed: p->setCompositionMode(state.globalCompositeOperation);
0
217-
218 p->setClipping(state.clip);-
219 if (state.clip)
state.clipDescription
TRUEnever evaluated
FALSEnever evaluated
0
220 p->setClipPath(state.clipPath);
never executed: p->setClipPath(state.clipPath);
0
221}
never executed: end of block
0
222-
223static void qt_drawImage(QPainter *p, QQuickContext2D::State& state, QImage image, const QRectF& sr, const QRectF& dr, bool shadow = false)-
224{-
225 Q_ASSERT(p);-
226-
227 if (image.isNull())
image.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
0
228 return;
never executed: return;
0
229-
230 qreal sx = sr.x();-
231 qreal sy = sr.y();-
232 qreal sw = sr.width();-
233 qreal sh = sr.height();-
234 qreal dx = dr.x();-
235 qreal dy = dr.y();-
236 qreal dw = dr.width();-
237 qreal dh = dr.height();-
238-
239 if (sw == -1 || sh == -1) {
sw == -1Description
TRUEnever evaluated
FALSEnever evaluated
sh == -1Description
TRUEnever evaluated
FALSEnever evaluated
0
240 sw = image.width();-
241 sh = image.height();-
242 }
never executed: end of block
0
243 if (sx != 0 || sy != 0 || sw != image.width() || sh != image.height())
sx != 0Description
TRUEnever evaluated
FALSEnever evaluated
sy != 0Description
TRUEnever evaluated
FALSEnever evaluated
sw != image.width()Description
TRUEnever evaluated
FALSEnever evaluated
sh != image.height()Description
TRUEnever evaluated
FALSEnever evaluated
0
244 image = image.copy(sx, sy, sw, sh);
never executed: image = image.copy(sx, sy, sw, sh);
0
245-
246 if (sw != dw || sh != dh)
sw != dwDescription
TRUEnever evaluated
FALSEnever evaluated
sh != dhDescription
TRUEnever evaluated
FALSEnever evaluated
0
247 image = image.scaled(dw, dh);
never executed: image = image.scaled(dw, dh);
0
248-
249 //Strange OpenGL painting behavior here, without beginNativePainting/endNativePainting, only the first image is painted.-
250 p->beginNativePainting();-
251-
252 if (shadow) {
shadowDescription
TRUEnever evaluated
FALSEnever evaluated
0
253 DrawImageShadow shadowMaker(image, QPointF(dx, dy));-
254 shadowMaker.paintShapeAndShadow(p, state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor);-
255 } else {
never executed: end of block
0
256 p->drawImage(dx, dy, image);-
257 }
never executed: end of block
0
258-
259 p->endNativePainting();-
260}
never executed: end of block
0
261-
262void QQuickContext2DCommandBuffer::replay(QPainter* p, QQuickContext2D::State& state, const QVector2D &scaleFactor)-
263{-
264 if (!p)
!pDescription
TRUEnever evaluated
FALSEnever evaluated
0
265 return;
never executed: return;
0
266-
267 reset();-
268-
269 p->scale(scaleFactor.x(), scaleFactor.y());-
270 QTransform originMatrix = p->worldTransform();-
271-
272 QPen pen = makePen(state);-
273 setPainterState(p, state, pen);-
274-
275 while (hasNext()) {
hasNext()Description
TRUEnever evaluated
FALSEnever evaluated
0
276 QQuickContext2D::PaintCommand cmd = takeNextCommand();-
277 switch (cmd) {-
278 case QQuickContext2D::UpdateMatrix:
never executed: case QQuickContext2D::UpdateMatrix:
0
279 {-
280 state.matrix = takeMatrix();-
281 p->setWorldTransform(state.matrix * originMatrix);-
282 break;
never executed: break;
0
283 }-
284 case QQuickContext2D::ClearRect:
never executed: case QQuickContext2D::ClearRect:
0
285 {-
286 QPainter::CompositionMode cm = p->compositionMode();-
287 p->setCompositionMode(QPainter::CompositionMode_Clear);-
288 p->fillRect(takeRect(), Qt::white);-
289 p->setCompositionMode(cm);-
290 break;
never executed: break;
0
291 }-
292 case QQuickContext2D::FillRect:
never executed: case QQuickContext2D::FillRect:
0
293 {-
294 QRectF r = takeRect();-
295 if (HAS_SHADOW(state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor))
state.shadowColor.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
state.shadowColor.alpha()Description
TRUEnever evaluated
FALSEnever evaluated
state.shadowBlurDescription
TRUEnever evaluated
FALSEnever evaluated
state.shadowOffsetXDescription
TRUEnever evaluated
FALSEnever evaluated
state.shadowOffsetYDescription
TRUEnever evaluated
FALSEnever evaluated
0
296 fillRectShadow(p, r, state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor);
never executed: fillRectShadow(p, r, state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor);
0
297 else-
298 p->fillRect(r, p->brush());
never executed: p->fillRect(r, p->brush());
0
299 break;
never executed: break;
0
300 }-
301 case QQuickContext2D::ShadowColor:
never executed: case QQuickContext2D::ShadowColor:
0
302 {-
303 state.shadowColor = takeColor();-
304 break;
never executed: break;
0
305 }-
306 case QQuickContext2D::ShadowBlur:
never executed: case QQuickContext2D::ShadowBlur:
0
307 {-
308 state.shadowBlur = takeShadowBlur();-
309 break;
never executed: break;
0
310 }-
311 case QQuickContext2D::ShadowOffsetX:
never executed: case QQuickContext2D::ShadowOffsetX:
0
312 {-
313 state.shadowOffsetX = takeShadowOffsetX();-
314 break;
never executed: break;
0
315 }-
316 case QQuickContext2D::ShadowOffsetY:
never executed: case QQuickContext2D::ShadowOffsetY:
0
317 {-
318 state.shadowOffsetY = takeShadowOffsetY();-
319 break;
never executed: break;
0
320 }-
321 case QQuickContext2D::FillStyle:
never executed: case QQuickContext2D::FillStyle:
0
322 {-
323 state.fillStyle = takeFillStyle();-
324 state.fillPatternRepeatX = takeBool();-
325 state.fillPatternRepeatY = takeBool();-
326 p->setBrush(state.fillStyle);-
327 break;
never executed: break;
0
328 }-
329 case QQuickContext2D::StrokeStyle:
never executed: case QQuickContext2D::StrokeStyle:
0
330 {-
331 state.strokeStyle = takeStrokeStyle();-
332 state.strokePatternRepeatX = takeBool();-
333 state.strokePatternRepeatY = takeBool();-
334 QPen nPen = p->pen();-
335 nPen.setBrush(state.strokeStyle);-
336 p->setPen(nPen);-
337 break;
never executed: break;
0
338 }-
339 case QQuickContext2D::LineWidth:
never executed: case QQuickContext2D::LineWidth:
0
340 {-
341 state.lineWidth = takeLineWidth();-
342 QPen nPen = p->pen();-
343-
344 nPen.setWidthF(state.lineWidth);-
345 p->setPen(nPen);-
346 break;
never executed: break;
0
347 }-
348 case QQuickContext2D::LineCap:
never executed: case QQuickContext2D::LineCap:
0
349 {-
350 state.lineCap = takeLineCap();-
351 QPen nPen = p->pen();-
352 nPen.setCapStyle(state.lineCap);-
353 p->setPen(nPen);-
354 break;
never executed: break;
0
355 }-
356 case QQuickContext2D::LineJoin:
never executed: case QQuickContext2D::LineJoin:
0
357 {-
358 state.lineJoin = takeLineJoin();-
359 QPen nPen = p->pen();-
360 nPen.setJoinStyle(state.lineJoin);-
361 p->setPen(nPen);-
362 break;
never executed: break;
0
363 }-
364 case QQuickContext2D::MiterLimit:
never executed: case QQuickContext2D::MiterLimit:
0
365 {-
366 state.miterLimit = takeMiterLimit();-
367 QPen nPen = p->pen();-
368 nPen.setMiterLimit(state.miterLimit);-
369 p->setPen(nPen);-
370 break;
never executed: break;
0
371 }-
372 case QQuickContext2D::TextAlign:
never executed: case QQuickContext2D::TextAlign:
0
373 case QQuickContext2D::TextBaseline:
never executed: case QQuickContext2D::TextBaseline:
0
374 break;
never executed: break;
0
375 case QQuickContext2D::Fill:
never executed: case QQuickContext2D::Fill:
0
376 {-
377 QPainterPath path = takePath();-
378 path.closeSubpath();-
379 if (HAS_SHADOW(state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor))
state.shadowColor.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
state.shadowColor.alpha()Description
TRUEnever evaluated
FALSEnever evaluated
state.shadowBlurDescription
TRUEnever evaluated
FALSEnever evaluated
state.shadowOffsetXDescription
TRUEnever evaluated
FALSEnever evaluated
state.shadowOffsetYDescription
TRUEnever evaluated
FALSEnever evaluated
0
380 fillShadowPath(p,path, state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor);
never executed: fillShadowPath(p,path, state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor);
0
381 else-
382 p->fillPath(path, p->brush());
never executed: p->fillPath(path, p->brush());
0
383 break;
never executed: break;
0
384 }-
385 case QQuickContext2D::Stroke:
never executed: case QQuickContext2D::Stroke:
0
386 {-
387 if (HAS_SHADOW(state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor))
state.shadowColor.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
state.shadowColor.alpha()Description
TRUEnever evaluated
FALSEnever evaluated
state.shadowBlurDescription
TRUEnever evaluated
FALSEnever evaluated
state.shadowOffsetXDescription
TRUEnever evaluated
FALSEnever evaluated
state.shadowOffsetYDescription
TRUEnever evaluated
FALSEnever evaluated
0
388 strokeShadowPath(p,takePath(), state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor);
never executed: strokeShadowPath(p,takePath(), state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor);
0
389 else-
390 p->strokePath(takePath(), p->pen());
never executed: p->strokePath(takePath(), p->pen());
0
391 break;
never executed: break;
0
392 }-
393 case QQuickContext2D::Clip:
never executed: case QQuickContext2D::Clip:
0
394 {-
395 state.clip = takeBool();-
396 state.clipPath = takePath();-
397 p->setClipping(state.clip);-
398 if (state.clip)
state.clipDescription
TRUEnever evaluated
FALSEnever evaluated
0
399 p->setClipPath(state.clipPath);
never executed: p->setClipPath(state.clipPath);
0
400 break;
never executed: break;
0
401 }-
402 case QQuickContext2D::GlobalAlpha:
never executed: case QQuickContext2D::GlobalAlpha:
0
403 {-
404 state.globalAlpha = takeGlobalAlpha();-
405 p->setOpacity(state.globalAlpha);-
406 break;
never executed: break;
0
407 }-
408 case QQuickContext2D::GlobalCompositeOperation:
never executed: case QQuickContext2D::GlobalCompositeOperation:
0
409 {-
410 state.globalCompositeOperation = takeGlobalCompositeOperation();-
411 p->setCompositionMode(state.globalCompositeOperation);-
412 break;
never executed: break;
0
413 }-
414 case QQuickContext2D::DrawImage:
never executed: case QQuickContext2D::DrawImage:
0
415 {-
416 QRectF sr = takeRect();-
417 QRectF dr = takeRect();-
418 qt_drawImage(p, state, takeImage(), sr, dr, HAS_SHADOW(state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor));-
419 break;
never executed: break;
0
420 }-
421 case QQuickContext2D::DrawPixmap:
never executed: case QQuickContext2D::DrawPixmap:
0
422 {-
423 QRectF sr = takeRect();-
424 QRectF dr = takeRect();-
425-
426 QQmlRefPointer<QQuickCanvasPixmap> pix = takePixmap();-
427 Q_ASSERT(!pix.isNull());-
428-
429 const bool hasShadow = HAS_SHADOW(state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor);
state.shadowColor.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
state.shadowColor.alpha()Description
TRUEnever evaluated
FALSEnever evaluated
state.shadowBlurDescription
TRUEnever evaluated
FALSEnever evaluated
state.shadowOffsetXDescription
TRUEnever evaluated
FALSEnever evaluated
state.shadowOffsetYDescription
TRUEnever evaluated
FALSEnever evaluated
0
430 //TODO: generate shadow blur with shaders-
431 qt_drawImage(p, state, pix->image(), sr, dr, hasShadow);-
432 break;
never executed: break;
0
433 }-
434 case QQuickContext2D::GetImageData:
never executed: case QQuickContext2D::GetImageData:
0
435 {-
436 //TODO:-
437 break;
never executed: break;
0
438 }-
439 default:
never executed: default:
0
440 break;
never executed: break;
0
441 }-
442 }-
443-
444 p->end();-
445}
never executed: end of block
0
446-
447QQuickContext2DCommandBuffer::QQuickContext2DCommandBuffer()-
448 : cmdIdx(0)-
449 , intIdx(0)-
450 , boolIdx(0)-
451 , realIdx(0)-
452 , rectIdx(0)-
453 , colorIdx(0)-
454 , matrixIdx(0)-
455 , brushIdx(0)-
456 , pathIdx(0)-
457 , imageIdx(0)-
458 , pixmapIdx(0)-
459{-
460 static bool registered = false;-
461 if (!registered) {
!registeredDescription
TRUEnever evaluated
FALSEnever evaluated
0
462 qRegisterMetaType<QQuickContext2DCommandBuffer*>("QQuickContext2DCommandBuffer*");-
463 registered = true;-
464 }
never executed: end of block
0
465}
never executed: end of block
0
466-
467-
468QQuickContext2DCommandBuffer::~QQuickContext2DCommandBuffer()-
469{-
470}-
471-
472void QQuickContext2DCommandBuffer::clear()-
473{-
474 commands.clear();-
475 ints.clear();-
476 bools.clear();-
477 reals.clear();-
478 rects.clear();-
479 colors.clear();-
480 matrixes.clear();-
481 brushes.clear();-
482 pathes.clear();-
483 images.clear();-
484 pixmaps.clear();-
485 reset();-
486}
never executed: end of block
0
487-
488void QQuickContext2DCommandBuffer::reset()-
489{-
490 cmdIdx = 0;-
491 intIdx = 0;-
492 boolIdx = 0;-
493 realIdx = 0;-
494 rectIdx = 0;-
495 colorIdx = 0;-
496 matrixIdx = 0;-
497 brushIdx = 0;-
498 pathIdx = 0;-
499 imageIdx = 0;-
500 pixmapIdx = 0;-
501}
never executed: end of block
0
502-
503QT_END_NAMESPACE-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.0