OpenCoverage

qquickcontext2dcommandbuffer.cpp

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/quick/items/context2d/qquickcontext2dcommandbuffer.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8void qt_image_boxblur(QImage& image, int radius, bool quality);-
9-
10namespace {-
11 class ShadowImageMaker-
12 {-
13 public:-
14 virtual ~ShadowImageMaker() {}-
15-
16 void paintShapeAndShadow(QPainter *p, qreal offsetX, qreal offsetY, qreal blur, const QColor &color)-
17 {-
18 QRectF bounds = boundingRect().translated(offsetX, offsetY).adjusted(-2*blur, -2*blur, 2*blur, 2*blur);-
19 QRect boundsAligned = bounds.toAlignedRect();-
20-
21 QImage shadowImage(boundsAligned.size(), QImage::Format_ARGB32_Premultiplied);-
22 shadowImage.fill(0);-
23-
24 QPainter shadowPainter(&shadowImage);-
25 shadowPainter.setRenderHints(p->renderHints());-
26 shadowPainter.translate(offsetX - boundsAligned.left(), offsetY - boundsAligned.top());-
27 paint(&shadowPainter);-
28 shadowPainter.end();-
29-
30 if (blur > 0
blur > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
31 qt_image_boxblur(shadowImage, qMax(1, qRound(blur / 2)), true);
never executed: qt_image_boxblur(shadowImage, qMax(1, qRound(blur / 2)), true);
0
32-
33-
34 shadowPainter.begin(&shadowImage);-
35 shadowPainter.setCompositionMode(QPainter::CompositionMode_SourceIn);-
36 shadowPainter.fillRect(shadowImage.rect(), color);-
37 shadowPainter.end();-
38-
39 p->drawImage(boundsAligned.topLeft(), shadowImage);-
40 paint(p);-
41 }
never executed: end of block
0
42-
43 virtual void paint(QPainter *p) const = 0;-
44 virtual QRectF boundingRect() const = 0;-
45 };-
46-
47 class FillRectShadow : public ShadowImageMaker-
48 {-
49 public:-
50 FillRectShadow(const QRectF &rect, const QBrush &brush)-
51 : m_rect(rect.normalized())-
52 , m_brush(brush)-
53 {-
54 }
never executed: end of block
0
55-
56 void paint(QPainter *p) const override { p->fillRect(m_rect, m_brush); }
never executed: end of block
0
57 QRectF boundingRect() const override { return
never executed: return m_rect;
m_rect;
never executed: return m_rect;
}
0
58-
59 private:-
60 QRectF m_rect;-
61 QBrush m_brush;-
62 };-
63-
64 class FillPathShadow : public ShadowImageMaker-
65 {-
66 public:-
67 FillPathShadow(const QPainterPath &path, const QBrush &brush)-
68 : m_path(path)-
69 , m_brush(brush)-
70 {-
71 }
never executed: end of block
0
72-
73 void paint(QPainter *p) const override { p->fillPath(m_path, m_brush); }
never executed: end of block
0
74 QRectF boundingRect() const override { return
never executed: return m_path.boundingRect();
m_path.boundingRect();
never executed: return m_path.boundingRect();
}
0
75-
76 private:-
77 QPainterPath m_path;-
78 QBrush m_brush;-
79 };-
80-
81 class StrokePathShadow : public ShadowImageMaker-
82 {-
83 public:-
84 StrokePathShadow(const QPainterPath &path, const QPen &pen)-
85 : m_path(path)-
86 , m_pen(pen)-
87 {-
88 }
never executed: end of block
0
89-
90 void paint(QPainter *p) const override { p->strokePath(m_path, m_pen); }
never executed: end of block
0
91-
92 QRectF boundingRect() const override-
93 {-
94 qreal d = qMax(qreal(1), m_pen.widthF());-
95 return
never executed: return m_path.boundingRect().adjusted(-d, -d, d, d);
m_path.boundingRect().adjusted(-d, -d, d, d);
never executed: return m_path.boundingRect().adjusted(-d, -d, d, d);
0
96 }-
97-
98 private:-
99 QPainterPath m_path;-
100 QPen m_pen;-
101 };-
102-
103 class DrawImageShadow : public ShadowImageMaker-
104 {-
105 public:-
106 DrawImageShadow(const QImage &image, const QPointF &offset)-
107 : m_image(image)-
108 , m_offset(offset)-
109 {-
110 }
never executed: end of block
0
111-
112 void paint(QPainter *p) const override { p->drawImage(m_offset, m_image); }
never executed: end of block
0
113-
114 QRectF boundingRect() const override { return
never executed: return QRectF(m_image.rect()).translated(m_offset);
QRectF(m_image.rect()).translated(m_offset);
never executed: return QRectF(m_image.rect()).translated(m_offset);
}
0
115-
116 private:-
117 QImage m_image;-
118 QPointF m_offset;-
119 };-
120}-
121-
122static void fillRectShadow(QPainter* p, QRectF shadowRect, qreal offsetX, qreal offsetY, qreal blur, const QColor& color)-
123{-
124 FillRectShadow shadowMaker(shadowRect, p->brush());-
125 shadowMaker.paintShapeAndShadow(p, offsetX, offsetY, blur, color);-
126}
never executed: end of block
0
127-
128static void fillShadowPath(QPainter* p, const QPainterPath& path, qreal offsetX, qreal offsetY, qreal blur, const QColor& color)-
129{-
130 FillPathShadow shadowMaker(path, p->brush());-
131 shadowMaker.paintShapeAndShadow(p, offsetX, offsetY, blur, color);-
132}
never executed: end of block
0
133-
134static void strokeShadowPath(QPainter* p, const QPainterPath& path, qreal offsetX, qreal offsetY, qreal blur, const QColor& color)-
135{-
136 StrokePathShadow shadowMaker(path, p->pen());-
137 shadowMaker.paintShapeAndShadow(p, offsetX, offsetY, blur, color);-
138}
never executed: end of block
0
139-
140QPen QQuickContext2DCommandBuffer::makePen(const QQuickContext2D::State& state)-
141{-
142 QPen pen;-
143 pen.setWidthF(state.lineWidth);-
144 pen.setCapStyle(state.lineCap);-
145 pen.setJoinStyle(state.lineJoin);-
146 pen.setMiterLimit(state.miterLimit);-
147 pen.setBrush(state.strokeStyle);-
148 return
never executed: return pen;
pen;
never executed: return pen;
0
149}-
150-
151void QQuickContext2DCommandBuffer::setPainterState(QPainter* p, const QQuickContext2D::State& state, const QPen& pen)-
152{-
153 p->setTransform(state.matrix * p->transform());-
154-
155 if (pen != p->pen()
pen != p->pen()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
156 p->setPen(pen);
never executed: p->setPen(pen);
0
157-
158 if (state.fillStyle != p->brush()
state.fillStyle != p->brush()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
159 p->setBrush(state.fillStyle);
never executed: p->setBrush(state.fillStyle);
0
160-
161 if (state.font != p->font()
state.font != p->font()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
162 p->setFont(state.font);
never executed: p->setFont(state.font);
0
163-
164 if (state.globalAlpha != p->opacity()
state.globalAl...= p->opacity()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
165 p->setOpacity(state.globalAlpha);-
166 }
never executed: end of block
0
167-
168 if (state.globalCompositeOperation != p->compositionMode()
state.globalCo...positionMode()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
169 p->setCompositionMode(state.globalCompositeOperation);
never executed: p->setCompositionMode(state.globalCompositeOperation);
0
170-
171 p->setClipping(state.clip);-
172 if (state.clip
state.clipDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
173 p->setClipPath(state.clipPath);
never executed: p->setClipPath(state.clipPath);
0
174}
never executed: end of block
0
175-
176static void qt_drawImage(QPainter *p, QQuickContext2D::State& state, QImage image, const QRectF& sr, const QRectF& dr, bool shadow = false)-
177{-
178 ((p) ? static_cast<void>(0) : qt_assert("p", __FILE__, 225));-
179-
180 if (image.isNull()
image.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
181 return;
never executed: return;
0
182-
183 qreal sx = sr.x();-
184 qreal sy = sr.y();-
185 qreal sw = sr.width();-
186 qreal sh = sr.height();-
187 qreal dx = dr.x();-
188 qreal dy = dr.y();-
189 qreal dw = dr.width();-
190 qreal dh = dr.height();-
191-
192 if (sw == -1
sw == -1Description
TRUEnever evaluated
FALSEnever evaluated
|| sh == -1
sh == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
193 sw = image.width();-
194 sh = image.height();-
195 }
never executed: end of block
0
196 if (sx != 0
sx != 0Description
TRUEnever evaluated
FALSEnever evaluated
|| sy != 0
sy != 0Description
TRUEnever evaluated
FALSEnever evaluated
|| sw != image.width()
sw != image.width()Description
TRUEnever evaluated
FALSEnever evaluated
|| sh != image.height()
sh != image.height()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
197 image = image.copy(sx, sy, sw, sh);
never executed: image = image.copy(sx, sy, sw, sh);
0
198-
199 if (sw != dw
sw != dwDescription
TRUEnever evaluated
FALSEnever evaluated
|| sh != dh
sh != dhDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
200 image = image.scaled(dw, dh);
never executed: image = image.scaled(dw, dh);
0
201-
202-
203 p->beginNativePainting();-
204-
205 if (shadow
shadowDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
206 DrawImageShadow shadowMaker(image, QPointF(dx, dy));-
207 shadowMaker.paintShapeAndShadow(p, state.shadowOffsetX, state.shadowOffsetY, state.shadowBlur, state.shadowColor);-
208 }
never executed: end of block
else {
0
209 p->drawImage(dx, dy, image);-
210 }
never executed: end of block
0
211-
212 p->endNativePainting();-
213}
never executed: end of block
0
214-
215void QQuickContext2DCommandBuffer::replay(QPainter* p, QQuickContext2D::State& state, const QVector2D &scaleFactor)-
216{-
217 if (!p
!pDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
218 return;
never executed: return;
0
219-
220 reset();-
221-
222 p->scale(scaleFactor.x(), scaleFactor.y());-
223 QTransform originMatrix = p->worldTransform();-
224-
225 QPen pen = makePen(state);-
226 setPainterState(p, state, pen);-
227-
228 while (hasNext()
hasNext()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
229 QQuickContext2D::PaintCommand cmd = takeNextCommand();-
230 switch (cmd) {-
231 case
never executed: case QQuickContext2D::UpdateMatrix:
QQuickContext2D::UpdateMatrix:
never executed: case QQuickContext2D::UpdateMatrix:
0
232 {-
233 state.matrix = takeMatrix();-
234 p->setWorldTransform(state.matrix * originMatrix);-
235 break;
never executed: break;
0
236 }-
237 case
never executed: case QQuickContext2D::ClearRect:
QQuickContext2D::ClearRect:
never executed: case QQuickContext2D::ClearRect:
0
238 {-
239 QPainter::CompositionMode cm = p->compositionMode();-
240 p->setCompositionMode(QPainter::CompositionMode_Clear);-
241 p->fillRect(takeRect(), Qt::white);-
242 p->setCompositionMode(cm);-
243 break;
never executed: break;
0
244 }-
245 case
never executed: case QQuickContext2D::FillRect:
QQuickContext2D::FillRect:
never executed: case QQuickContext2D::FillRect:
0
246 {-
247 QRectF r = takeRect();-
248 if ((state.shadowColor.isValid()
state.shadowColor.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
&& state.shadowColor.alpha()
state.shadowColor.alpha()Description
TRUEnever evaluated
FALSEnever evaluated
&& (state.shadowBlur
state.shadowBlurDescription
TRUEnever evaluated
FALSEnever evaluated
|| state.shadowOffsetX
state.shadowOffsetXDescription
TRUEnever evaluated
FALSEnever evaluated
|| state.shadowOffsetY
state.shadowOffsetYDescription
TRUEnever evaluated
FALSEnever evaluated
)))
0
249 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
250 else-
251 p->fillRect(r, p->brush());
never executed: p->fillRect(r, p->brush());
0
252 break;
never executed: break;
0
253 }-
254 case
never executed: case QQuickContext2D::ShadowColor:
QQuickContext2D::ShadowColor:
never executed: case QQuickContext2D::ShadowColor:
0
255 {-
256 state.shadowColor = takeColor();-
257 break;
never executed: break;
0
258 }-
259 case
never executed: case QQuickContext2D::ShadowBlur:
QQuickContext2D::ShadowBlur:
never executed: case QQuickContext2D::ShadowBlur:
0
260 {-
261 state.shadowBlur = takeShadowBlur();-
262 break;
never executed: break;
0
263 }-
264 case
never executed: case QQuickContext2D::ShadowOffsetX:
QQuickContext2D::ShadowOffsetX:
never executed: case QQuickContext2D::ShadowOffsetX:
0
265 {-
266 state.shadowOffsetX = takeShadowOffsetX();-
267 break;
never executed: break;
0
268 }-
269 case
never executed: case QQuickContext2D::ShadowOffsetY:
QQuickContext2D::ShadowOffsetY:
never executed: case QQuickContext2D::ShadowOffsetY:
0
270 {-
271 state.shadowOffsetY = takeShadowOffsetY();-
272 break;
never executed: break;
0
273 }-
274 case
never executed: case QQuickContext2D::FillStyle:
QQuickContext2D::FillStyle:
never executed: case QQuickContext2D::FillStyle:
0
275 {-
276 state.fillStyle = takeFillStyle();-
277 state.fillPatternRepeatX = takeBool();-
278 state.fillPatternRepeatY = takeBool();-
279 p->setBrush(state.fillStyle);-
280 break;
never executed: break;
0
281 }-
282 case
never executed: case QQuickContext2D::StrokeStyle:
QQuickContext2D::StrokeStyle:
never executed: case QQuickContext2D::StrokeStyle:
0
283 {-
284 state.strokeStyle = takeStrokeStyle();-
285 state.strokePatternRepeatX = takeBool();-
286 state.strokePatternRepeatY = takeBool();-
287 QPen nPen = p->pen();-
288 nPen.setBrush(state.strokeStyle);-
289 p->setPen(nPen);-
290 break;
never executed: break;
0
291 }-
292 case
never executed: case QQuickContext2D::LineWidth:
QQuickContext2D::LineWidth:
never executed: case QQuickContext2D::LineWidth:
0
293 {-
294 state.lineWidth = takeLineWidth();-
295 QPen nPen = p->pen();-
296-
297 nPen.setWidthF(state.lineWidth);-
298 p->setPen(nPen);-
299 break;
never executed: break;
0
300 }-
301 case
never executed: case QQuickContext2D::LineCap:
QQuickContext2D::LineCap:
never executed: case QQuickContext2D::LineCap:
0
302 {-
303 state.lineCap = takeLineCap();-
304 QPen nPen = p->pen();-
305 nPen.setCapStyle(state.lineCap);-
306 p->setPen(nPen);-
307 break;
never executed: break;
0
308 }-
309 case
never executed: case QQuickContext2D::LineJoin:
QQuickContext2D::LineJoin:
never executed: case QQuickContext2D::LineJoin:
0
310 {-
311 state.lineJoin = takeLineJoin();-
312 QPen nPen = p->pen();-
313 nPen.setJoinStyle(state.lineJoin);-
314 p->setPen(nPen);-
315 break;
never executed: break;
0
316 }-
317 case
never executed: case QQuickContext2D::MiterLimit:
QQuickContext2D::MiterLimit:
never executed: case QQuickContext2D::MiterLimit:
0
318 {-
319 state.miterLimit = takeMiterLimit();-
320 QPen nPen = p->pen();-
321 nPen.setMiterLimit(state.miterLimit);-
322 p->setPen(nPen);-
323 break;
never executed: break;
0
324 }-
325 case
never executed: case QQuickContext2D::TextAlign:
QQuickContext2D::TextAlign:
never executed: case QQuickContext2D::TextAlign:
0
326 case
never executed: case QQuickContext2D::TextBaseline:
QQuickContext2D::TextBaseline:
never executed: case QQuickContext2D::TextBaseline:
0
327 break;
never executed: break;
0
328 case
never executed: case QQuickContext2D::Fill:
QQuickContext2D::Fill:
never executed: case QQuickContext2D::Fill:
0
329 {-
330 QPainterPath path = takePath();-
331 path.closeSubpath();-
332 if ((state.shadowColor.isValid()
state.shadowColor.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
&& state.shadowColor.alpha()
state.shadowColor.alpha()Description
TRUEnever evaluated
FALSEnever evaluated
&& (state.shadowBlur
state.shadowBlurDescription
TRUEnever evaluated
FALSEnever evaluated
|| state.shadowOffsetX
state.shadowOffsetXDescription
TRUEnever evaluated
FALSEnever evaluated
|| state.shadowOffsetY
state.shadowOffsetYDescription
TRUEnever evaluated
FALSEnever evaluated
)))
0
333 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
334 else-
335 p->fillPath(path, p->brush());
never executed: p->fillPath(path, p->brush());
0
336 break;
never executed: break;
0
337 }-
338 case
never executed: case QQuickContext2D::Stroke:
QQuickContext2D::Stroke:
never executed: case QQuickContext2D::Stroke:
0
339 {-
340 if ((state.shadowColor.isValid()
state.shadowColor.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
&& state.shadowColor.alpha()
state.shadowColor.alpha()Description
TRUEnever evaluated
FALSEnever evaluated
&& (state.shadowBlur
state.shadowBlurDescription
TRUEnever evaluated
FALSEnever evaluated
|| state.shadowOffsetX
state.shadowOffsetXDescription
TRUEnever evaluated
FALSEnever evaluated
|| state.shadowOffsetY
state.shadowOffsetYDescription
TRUEnever evaluated
FALSEnever evaluated
)))
0
341 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
342 else-
343 p->strokePath(takePath(), p->pen());
never executed: p->strokePath(takePath(), p->pen());
0
344 break;
never executed: break;
0
345 }-
346 case
never executed: case QQuickContext2D::Clip:
QQuickContext2D::Clip:
never executed: case QQuickContext2D::Clip:
0
347 {-
348 state.clip = takeBool();-
349 state.clipPath = takePath();-
350 p->setClipping(state.clip);-
351 if (state.clip
state.clipDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
352 p->setClipPath(state.clipPath);
never executed: p->setClipPath(state.clipPath);
0
353 break;
never executed: break;
0
354 }-
355 case
never executed: case QQuickContext2D::GlobalAlpha:
QQuickContext2D::GlobalAlpha:
never executed: case QQuickContext2D::GlobalAlpha:
0
356 {-
357 state.globalAlpha = takeGlobalAlpha();-
358 p->setOpacity(state.globalAlpha);-
359 break;
never executed: break;
0
360 }-
361 case
never executed: case QQuickContext2D::GlobalCompositeOperation:
QQuickContext2D::GlobalCompositeOperation:
never executed: case QQuickContext2D::GlobalCompositeOperation:
0
362 {-
363 state.globalCompositeOperation = takeGlobalCompositeOperation();-
364 p->setCompositionMode(state.globalCompositeOperation);-
365 break;
never executed: break;
0
366 }-
367 case
never executed: case QQuickContext2D::DrawImage:
QQuickContext2D::DrawImage:
never executed: case QQuickContext2D::DrawImage:
0
368 {-
369 QRectF sr = takeRect();-
370 QRectF dr = takeRect();-
371 qt_drawImage(p, state, takeImage(), sr, dr, (state.shadowColor.isValid() && state.shadowColor.alpha() && (state.shadowBlur || state.shadowOffsetX || state.shadowOffsetY)));-
372 break;
never executed: break;
0
373 }-
374 case
never executed: case QQuickContext2D::DrawPixmap:
QQuickContext2D::DrawPixmap:
never executed: case QQuickContext2D::DrawPixmap:
0
375 {-
376 QRectF sr = takeRect();-
377 QRectF dr = takeRect();-
378-
379 QQmlRefPointer<QQuickCanvasPixmap> pix = takePixmap();-
380 ((!pix.isNull()) ? static_cast<void>(0) : qt_assert("!pix.isNull()", __FILE__, 427));-
381-
382 const bool hasShadow = (state.shadowColor.isValid()
state.shadowColor.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
&& state.shadowColor.alpha()
state.shadowColor.alpha()Description
TRUEnever evaluated
FALSEnever evaluated
&& (state.shadowBlur
state.shadowBlurDescription
TRUEnever evaluated
FALSEnever evaluated
|| state.shadowOffsetX
state.shadowOffsetXDescription
TRUEnever evaluated
FALSEnever evaluated
|| state.shadowOffsetY
state.shadowOffsetYDescription
TRUEnever evaluated
FALSEnever evaluated
));
0
383-
384 qt_drawImage(p, state, pix->image(), sr, dr, hasShadow);-
385 break;
never executed: break;
0
386 }-
387 case
never executed: case QQuickContext2D::GetImageData:
QQuickContext2D::GetImageData:
never executed: case QQuickContext2D::GetImageData:
0
388 {-
389-
390 break;
never executed: break;
0
391 }-
392 default
never executed: default:
:
never executed: default:
0
393 break;
never executed: break;
0
394 }-
395 }-
396-
397 p->end();-
398}
never executed: end of block
0
399-
400QQuickContext2DCommandBuffer::QQuickContext2DCommandBuffer()-
401 : cmdIdx(0)-
402 , intIdx(0)-
403 , boolIdx(0)-
404 , realIdx(0)-
405 , rectIdx(0)-
406 , colorIdx(0)-
407 , matrixIdx(0)-
408 , brushIdx(0)-
409 , pathIdx(0)-
410 , imageIdx(0)-
411 , pixmapIdx(0)-
412{-
413 static bool registered = false;-
414 if (!registered
!registeredDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
415 qRegisterMetaType<QQuickContext2DCommandBuffer*>("QQuickContext2DCommandBuffer*");-
416 registered = true;-
417 }
never executed: end of block
0
418}
never executed: end of block
0
419-
420-
421QQuickContext2DCommandBuffer::~QQuickContext2DCommandBuffer()-
422{-
423}-
424-
425void QQuickContext2DCommandBuffer::clear()-
426{-
427 commands.clear();-
428 ints.clear();-
429 bools.clear();-
430 reals.clear();-
431 rects.clear();-
432 colors.clear();-
433 matrixes.clear();-
434 brushes.clear();-
435 pathes.clear();-
436 images.clear();-
437 pixmaps.clear();-
438 reset();-
439}
never executed: end of block
0
440-
441void QQuickContext2DCommandBuffer::reset()-
442{-
443 cmdIdx = 0;-
444 intIdx = 0;-
445 boolIdx = 0;-
446 realIdx = 0;-
447 rectIdx = 0;-
448 colorIdx = 0;-
449 matrixIdx = 0;-
450 brushIdx = 0;-
451 pathIdx = 0;-
452 imageIdx = 0;-
453 pixmapIdx = 0;-
454}
never executed: end of block
0
455-
456-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.0