qgraphicsscenebsptreeindex.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8static inline int intmaxlog(int n)-
9{-
10 return
never executed: return (n > 0 ? qMax(qCeil(qLn(qreal(n)) / qLn(qreal(2))), 5) : 0);
(n > 0
n > 0Description
TRUEnever evaluated
FALSEnever evaluated
? qMax(qCeil(qLn(qreal(n)) / qLn(qreal(2))), 5) : 0);
never executed: return (n > 0 ? qMax(qCeil(qLn(qreal(n)) / qLn(qreal(2))), 5) : 0);
0
11}-
12-
13-
14-
15-
16QGraphicsSceneBspTreeIndexPrivate::QGraphicsSceneBspTreeIndexPrivate(QGraphicsScene *scene)-
17 : QGraphicsSceneIndexPrivate(scene),-
18 bspTreeDepth(0),-
19 indexTimerId(0),-
20 restartIndexTimer(false),-
21 regenerateIndex(true),-
22 lastItemCount(0),-
23 purgePending(false),-
24 sortCacheEnabled(false),-
25 updatingSortCache(false)-
26{-
27}
never executed: end of block
0
28void QGraphicsSceneBspTreeIndexPrivate::_q_updateIndex()-
29{-
30 QGraphicsSceneBspTreeIndex * const q = q_func();-
31 if (!indexTimerId
!indexTimerIdDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
32 return;
never executed: return;
0
33-
34 q->killTimer(indexTimerId);-
35 indexTimerId = 0;-
36-
37 purgeRemovedItems();-
38-
39-
40 for (int i = 0; i < unindexedItems.size()
i < unindexedItems.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
41 if (QGraphicsItem *item = unindexedItems.at(i)
QGraphicsItem ...xedItems.at(i)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
42 ((!(!item->d_ptr->itemDiscovered)) ? qt_assert("!item->d_ptr->itemDiscovered",__FILE__,126) : qt_noop());-
43 if (!freeItemIndexes.isEmpty()
!freeItemIndexes.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
44 int freeIndex = freeItemIndexes.takeFirst();-
45 item->d_func()->index = freeIndex;-
46 indexedItems[freeIndex] = item;-
47 }
never executed: end of block
else {
0
48 item->d_func()->index = indexedItems.size();-
49 indexedItems << item;-
50 }
never executed: end of block
0
51 }-
52 }
never executed: end of block
0
53-
54-
55 if (bspTreeDepth == 0
bspTreeDepth == 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
56 int oldDepth = intmaxlog(lastItemCount);-
57 bspTreeDepth = intmaxlog(indexedItems.size());-
58 static const int slack = 100;-
59 if (bsp.leafCount() == 0
bsp.leafCount() == 0Description
TRUEnever evaluated
FALSEnever evaluated
|| (oldDepth != bspTreeDepth
oldDepth != bspTreeDepthDescription
TRUEnever evaluated
FALSEnever evaluated
&& qAbs(lastItemCount - indexedItems.size()) > slack
qAbs(lastItemC...ize()) > slackDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0
60-
61 regenerateIndex = true;-
62 }
never executed: end of block
0
63 }
never executed: end of block
0
64-
65-
66 if (regenerateIndex
regenerateIndexDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
67 regenerateIndex = false;-
68 bsp.initialize(sceneRect, bspTreeDepth);-
69 unindexedItems = indexedItems;-
70 lastItemCount = indexedItems.size();-
71 }
never executed: end of block
0
72-
73-
74 for (int i = 0; i < unindexedItems.size()
i < unindexedItems.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
75 if (QGraphicsItem *item = unindexedItems.at(i)
QGraphicsItem ...xedItems.at(i)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
76 if (item->d_ptr->itemIsUntransformable()
item->d_ptr->i...ransformable()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
77 untransformableItems << item;-
78 continue;
never executed: continue;
0
79 }-
80 if (item->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren
item->d_ptr->a...rClipsChildrenDescription
TRUEnever evaluated
FALSEnever evaluated
0
81 || item->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorContainsChildren
item->d_ptr->a...ntainsChildrenDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
82 continue;
never executed: continue;
0
83-
84 bsp.insertItem(item, item->d_ptr->sceneEffectiveBoundingRect());-
85 }
never executed: end of block
0
86 }
never executed: end of block
0
87 unindexedItems.clear();-
88}
never executed: end of block
0
89-
90-
91-
92-
93-
94-
95-
96void QGraphicsSceneBspTreeIndexPrivate::purgeRemovedItems()-
97{-
98 if (!purgePending
!purgePendingDescription
TRUEnever evaluated
FALSEnever evaluated
&& removedItems.isEmpty()
removedItems.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
99 return;
never executed: return;
0
100-
101-
102 bsp.removeItems(removedItems);-
103-
104 removedItems.clear();-
105 freeItemIndexes.clear();-
106 for (int i = 0; i < indexedItems.size()
i < indexedItems.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
107 if (!indexedItems.at(i)
!indexedItems.at(i)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
108 freeItemIndexes << i;
never executed: freeItemIndexes << i;
0
109 }
never executed: end of block
0
110 purgePending = false;-
111}
never executed: end of block
0
112-
113-
114-
115-
116-
117-
118void QGraphicsSceneBspTreeIndexPrivate::startIndexTimer(int interval)-
119{-
120 QGraphicsSceneBspTreeIndex * const q = q_func();-
121 if (indexTimerId
indexTimerIdDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
122 restartIndexTimer = true;-
123 }
never executed: end of block
else {
0
124 indexTimerId = q->startTimer(interval);-
125 }
never executed: end of block
0
126}-
127-
128-
129-
130-
131void QGraphicsSceneBspTreeIndexPrivate::resetIndex()-
132{-
133 purgeRemovedItems();-
134 for (int i = 0; i < indexedItems.size()
i < indexedItems.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
135 if (QGraphicsItem *item = indexedItems.at(i)
QGraphicsItem ...xedItems.at(i)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
136 item->d_ptr->index = -1;-
137 ((!(!item->d_ptr->itemDiscovered)) ? qt_assert("!item->d_ptr->itemDiscovered",__FILE__,221) : qt_noop());-
138 unindexedItems << item;-
139 }
never executed: end of block
0
140 }
never executed: end of block
0
141 indexedItems.clear();-
142 freeItemIndexes.clear();-
143 untransformableItems.clear();-
144 regenerateIndex = true;-
145 startIndexTimer();-
146}
never executed: end of block
0
147-
148-
149-
150-
151void QGraphicsSceneBspTreeIndexPrivate::climbTree(QGraphicsItem *item, int *stackingOrder)-
152{-
153 if (!item->d_ptr->children.isEmpty()
!item->d_ptr->...dren.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
154 QList<QGraphicsItem *> childList = item->d_ptr->children;-
155 std::sort(childList.begin(), childList.end(), qt_closestLeaf);-
156 for (int i = 0; i < childList.size()
i < childList.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
157 QGraphicsItem *item = childList.at(i);-
158 if (!(item->flags() & QGraphicsItem::ItemStacksBehindParent)
!(item->flags(...sBehindParent)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
159 climbTree(childList.at(i), stackingOrder);
never executed: climbTree(childList.at(i), stackingOrder);
0
160 }
never executed: end of block
0
161 item->d_ptr->globalStackingOrder = (*stackingOrder)++;-
162 for (int i = 0; i < childList.size()
i < childList.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
163 QGraphicsItem *item = childList.at(i);-
164 if (item->flags() & QGraphicsItem::ItemStacksBehindParent
item->flags() ...ksBehindParentDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
165 climbTree(childList.at(i), stackingOrder);
never executed: climbTree(childList.at(i), stackingOrder);
0
166 }
never executed: end of block
0
167 }
never executed: end of block
else {
0
168 item->d_ptr->globalStackingOrder = (*stackingOrder)++;-
169 }
never executed: end of block
0
170}-
171-
172-
173-
174-
175void QGraphicsSceneBspTreeIndexPrivate::_q_updateSortCache()-
176{-
177 QGraphicsSceneBspTreeIndex * const q = q_func();-
178 _q_updateIndex();-
179-
180 if (!sortCacheEnabled
!sortCacheEnabledDescription
TRUEnever evaluated
FALSEnever evaluated
|| !updatingSortCache
!updatingSortCacheDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
181 return;
never executed: return;
0
182-
183 updatingSortCache = false;-
184 int stackingOrder = 0;-
185-
186 QList<QGraphicsItem *> topLevels;-
187 const QList<QGraphicsItem *> items = q->items();-
188 for (int i = 0; i < items.size()
i < items.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
189 QGraphicsItem *item = items.at(i);-
190 if (item
itemDescription
TRUEnever evaluated
FALSEnever evaluated
&& !item->d_ptr->parent
!item->d_ptr->parentDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
191 topLevels << item;
never executed: topLevels << item;
0
192 }
never executed: end of block
0
193-
194 std::sort(topLevels.begin(), topLevels.end(), qt_closestLeaf);-
195 for (int i = 0; i < topLevels.size()
i < topLevels.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i)
0
196 climbTree(topLevels.at(i), &stackingOrder);
never executed: climbTree(topLevels.at(i), &stackingOrder);
0
197}
never executed: end of block
0
198-
199-
200-
201-
202void QGraphicsSceneBspTreeIndexPrivate::invalidateSortCache()-
203{-
204 QGraphicsSceneBspTreeIndex * const q = q_func();-
205 if (!sortCacheEnabled
!sortCacheEnabledDescription
TRUEnever evaluated
FALSEnever evaluated
|| updatingSortCache
updatingSortCacheDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
206 return;
never executed: return;
0
207-
208 updatingSortCache = true;-
209 QMetaObject::invokeMethod(q, "_q_updateSortCache", Qt::QueuedConnection);-
210}
never executed: end of block
0
211-
212void QGraphicsSceneBspTreeIndexPrivate::addItem(QGraphicsItem *item, bool recursive)-
213{-
214 if (!item
!itemDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
215 return;
never executed: return;
0
216-
217-
218 purgeRemovedItems();-
219-
220-
221-
222 item->d_ptr->globalStackingOrder = -1;-
223 invalidateSortCache();-
224-
225-
226-
227-
228 if (item->d_ptr->index == -1
item->d_ptr->index == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
229 ((!(!unindexedItems.contains(item))) ? qt_assert("!unindexedItems.contains(item)",__FILE__,313) : qt_noop());-
230 unindexedItems << item;-
231 startIndexTimer(0);-
232 }
never executed: end of block
else {
0
233 ((!(indexedItems.contains(item))) ? qt_assert("indexedItems.contains(item)",__FILE__,317) : qt_noop());-
234 QMessageLogger(__FILE__, 318, __PRETTY_FUNCTION__).warning("QGraphicsSceneBspTreeIndex::addItem: item has already been added to this BSP");-
235 }
never executed: end of block
0
236-
237 if (recursive
recursiveDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
238 for (int i = 0; i < item->d_ptr->children.size()
i < item->d_pt...hildren.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i)
0
239 addItem(item->d_ptr->children.at(i), recursive);
never executed: addItem(item->d_ptr->children.at(i), recursive);
0
240 }
never executed: end of block
0
241}
never executed: end of block
0
242-
243void QGraphicsSceneBspTreeIndexPrivate::removeItem(QGraphicsItem *item, bool recursive,-
244 bool moveToUnindexedItems)-
245{-
246 if (!item
!itemDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
247 return;
never executed: return;
0
248-
249 if (item->d_ptr->index != -1
item->d_ptr->index != -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
250 ((!(item->d_ptr->index < indexedItems.size())) ? qt_assert("item->d_ptr->index < indexedItems.size()",__FILE__,334) : qt_noop());-
251 ((!(indexedItems.at(item->d_ptr->index) == item)) ? qt_assert("indexedItems.at(item->d_ptr->index) == item",__FILE__,335) : qt_noop());-
252 ((!(!item->d_ptr->itemDiscovered)) ? qt_assert("!item->d_ptr->itemDiscovered",__FILE__,336) : qt_noop());-
253 freeItemIndexes << item->d_ptr->index;-
254 indexedItems[item->d_ptr->index] = 0;-
255 item->d_ptr->index = -1;-
256-
257 if (item->d_ptr->itemIsUntransformable()
item->d_ptr->i...ransformable()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
258 untransformableItems.removeOne(item);-
259 }
never executed: end of block
else if (item->d_ptr->inDestructor
item->d_ptr->inDestructorDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
260-
261 purgePending = true;-
262 removedItems << item;-
263 }
never executed: end of block
else if (!(item->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren
item->d_ptr->a...rClipsChildrenDescription
TRUEnever evaluated
FALSEnever evaluated
0
264 || item->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorContainsChildren
item->d_ptr->a...ntainsChildrenDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0
265 bsp.removeItem(item, item->d_ptr->sceneEffectiveBoundingRect());-
266 }
never executed: end of block
0
267 }
never executed: end of block
else {
0
268 unindexedItems.removeOne(item);-
269 }
never executed: end of block
0
270 invalidateSortCache();-
271-
272 ((!(item->d_ptr->index == -1)) ? qt_assert("item->d_ptr->index == -1",__FILE__,356) : qt_noop());-
273 ((!(!indexedItems.contains(item))) ? qt_assert("!indexedItems.contains(item)",__FILE__,357) : qt_noop());-
274 ((!(!unindexedItems.contains(item))) ? qt_assert("!unindexedItems.contains(item)",__FILE__,358) : qt_noop());-
275 ((!(!untransformableItems.contains(item))) ? qt_assert("!untransformableItems.contains(item)",__FILE__,359) : qt_noop());-
276-
277 if (moveToUnindexedItems
moveToUnindexedItemsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
278 addItem(item);
never executed: addItem(item);
0
279-
280 if (recursive
recursiveDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
281 for (int i = 0; i < item->d_ptr->children.size()
i < item->d_pt...hildren.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i)
0
282 removeItem(item->d_ptr->children.at(i), recursive, moveToUnindexedItems);
never executed: removeItem(item->d_ptr->children.at(i), recursive, moveToUnindexedItems);
0
283 }
never executed: end of block
0
284}
never executed: end of block
0
285-
286QList<QGraphicsItem *> QGraphicsSceneBspTreeIndexPrivate::estimateItems(const QRectF &rect, Qt::SortOrder order,-
287 bool onlyTopLevelItems)-
288{-
289 QGraphicsSceneBspTreeIndex * const q = q_func();-
290 if (onlyTopLevelItems
onlyTopLevelItemsDescription
TRUEnever evaluated
FALSEnever evaluated
&& rect.isNull()
rect.isNull()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
291 return
never executed: return q->QGraphicsSceneIndex::estimateTopLevelItems(rect, order);
q->QGraphicsSceneIndex::estimateTopLevelItems(rect, order);
never executed: return q->QGraphicsSceneIndex::estimateTopLevelItems(rect, order);
0
292-
293 purgeRemovedItems();-
294 _q_updateSortCache();-
295 ((!(unindexedItems.isEmpty())) ? qt_assert("unindexedItems.isEmpty()",__FILE__,379) : qt_noop());-
296-
297 QList<QGraphicsItem *> rectItems = bsp.items(rect, onlyTopLevelItems);-
298 if (onlyTopLevelItems
onlyTopLevelItemsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
299 for (int i = 0; i < untransformableItems.size()
i < untransfor...leItems.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
300 QGraphicsItem *item = untransformableItems.at(i);-
301 if (!item->d_ptr->parent
!item->d_ptr->parentDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
302 rectItems << item;-
303 }
never executed: end of block
else {
0
304 item = item->topLevelItem();-
305 if (!rectItems.contains(item)
!rectItems.contains(item)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
306 rectItems << item;
never executed: rectItems << item;
0
307 }
never executed: end of block
0
308 }-
309 }
never executed: end of block
else {
0
310 rectItems += untransformableItems;-
311 }
never executed: end of block
0
312-
313 sortItems(&rectItems, order, sortCacheEnabled, onlyTopLevelItems);-
314 return
never executed: return rectItems;
rectItems;
never executed: return rectItems;
0
315}-
316-
317-
318-
319-
320-
321-
322void QGraphicsSceneBspTreeIndexPrivate::sortItems(QList<QGraphicsItem *> *itemList, Qt::SortOrder order,-
323 bool sortCacheEnabled, bool onlyTopLevelItems)-
324{-
325 if (order == Qt::SortOrder(-1)
order == Qt::SortOrder(-1)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
326 return;
never executed: return;
0
327-
328 if (onlyTopLevelItems
onlyTopLevelItemsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
329 if (order == Qt::DescendingOrder
order == Qt::DescendingOrderDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
330 std::sort(itemList->begin(), itemList->end(), qt_closestLeaf);
never executed: std::sort(itemList->begin(), itemList->end(), qt_closestLeaf);
0
331 else if (order == Qt::AscendingOrder
order == Qt::AscendingOrderDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
332 std::sort(itemList->begin(), itemList->end(), qt_notclosestLeaf);
never executed: std::sort(itemList->begin(), itemList->end(), qt_notclosestLeaf);
0
333 return;
never executed: return;
0
334 }-
335-
336 if (sortCacheEnabled
sortCacheEnabledDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
337 if (order == Qt::DescendingOrder
order == Qt::DescendingOrderDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
338 std::sort(itemList->begin(), itemList->end(), closestItemFirst_withCache);-
339 }
never executed: end of block
else if (order == Qt::AscendingOrder
order == Qt::AscendingOrderDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
340 std::sort(itemList->begin(), itemList->end(), closestItemLast_withCache);-
341 }
never executed: end of block
0
342 }
never executed: end of block
else {
0
343 if (order == Qt::DescendingOrder
order == Qt::DescendingOrderDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
344 std::sort(itemList->begin(), itemList->end(), qt_closestItemFirst);-
345 }
never executed: end of block
else if (order == Qt::AscendingOrder
order == Qt::AscendingOrderDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
346 std::sort(itemList->begin(), itemList->end(), qt_closestItemLast);-
347 }
never executed: end of block
0
348 }
never executed: end of block
0
349}-
350-
351-
352-
353-
354QGraphicsSceneBspTreeIndex::QGraphicsSceneBspTreeIndex(QGraphicsScene *scene)-
355 : QGraphicsSceneIndex(*new QGraphicsSceneBspTreeIndexPrivate(scene), scene)-
356{-
357-
358}
never executed: end of block
0
359-
360QGraphicsSceneBspTreeIndex::~QGraphicsSceneBspTreeIndex()-
361{-
362 QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
363 for (int i = 0; i < d->indexedItems.size()
i < d->indexedItems.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
364-
365 if (QGraphicsItem *item = d->indexedItems.at(i)
QGraphicsItem ...xedItems.at(i)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
366 ((!(!item->d_ptr->itemDiscovered)) ? qt_assert("!item->d_ptr->itemDiscovered",__FILE__,450) : qt_noop());-
367 item->d_ptr->index = -1;-
368 }
never executed: end of block
0
369 }
never executed: end of block
0
370}
never executed: end of block
0
371-
372-
373-
374-
375-
376void QGraphicsSceneBspTreeIndex::clear()-
377{-
378 QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
379 d->bsp.clear();-
380 d->lastItemCount = 0;-
381 d->freeItemIndexes.clear();-
382 for (int i = 0; i < d->indexedItems.size()
i < d->indexedItems.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i) {
0
383-
384 if (QGraphicsItem *item = d->indexedItems.at(i)
QGraphicsItem ...xedItems.at(i)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
385 ((!(!item->d_ptr->itemDiscovered)) ? qt_assert("!item->d_ptr->itemDiscovered",__FILE__,469) : qt_noop());-
386 item->d_ptr->index = -1;-
387 }
never executed: end of block
0
388 }
never executed: end of block
0
389 d->indexedItems.clear();-
390 d->unindexedItems.clear();-
391 d->untransformableItems.clear();-
392 d->regenerateIndex = true;-
393}
never executed: end of block
0
394-
395-
396-
397-
398void QGraphicsSceneBspTreeIndex::addItem(QGraphicsItem *item)-
399{-
400 QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
401 d->addItem(item);-
402}
never executed: end of block
0
403-
404-
405-
406-
407void QGraphicsSceneBspTreeIndex::removeItem(QGraphicsItem *item)-
408{-
409 QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
410 d->removeItem(item);-
411}
never executed: end of block
0
412-
413-
414-
415-
416-
417void QGraphicsSceneBspTreeIndex::prepareBoundingRectChange(const QGraphicsItem *item)-
418{-
419 if (!item
!itemDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
420 return;
never executed: return;
0
421-
422 if (item->d_ptr->index == -1
item->d_ptr->index == -1Description
TRUEnever evaluated
FALSEnever evaluated
|| item->d_ptr->itemIsUntransformable()
item->d_ptr->i...ransformable()Description
TRUEnever evaluated
FALSEnever evaluated
0
423 || (item->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren
item->d_ptr->a...rClipsChildrenDescription
TRUEnever evaluated
FALSEnever evaluated
0
424 || item->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorContainsChildren
item->d_ptr->a...ntainsChildrenDescription
TRUEnever evaluated
FALSEnever evaluated
)) {
0
425 return;
never executed: return;
0
426 }-
427-
428 QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
429 QGraphicsItem *thatItem = const_cast<QGraphicsItem *>(item);-
430 d->removeItem(thatItem, false, true);-
431 for (int i = 0; i < item->d_ptr->children.size()
i < item->d_pt...hildren.size()Description
TRUEnever evaluated
FALSEnever evaluated
; ++i)
0
432 prepareBoundingRectChange(item->d_ptr->children.at(i));
never executed: prepareBoundingRectChange(item->d_ptr->children.at(i));
0
433}
never executed: end of block
0
434QList<QGraphicsItem *> QGraphicsSceneBspTreeIndex::estimateItems(const QRectF &rect, Qt::SortOrder order) const-
435{-
436 const QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
437 return
never executed: return const_cast<QGraphicsSceneBspTreeIndexPrivate*>(d)->estimateItems(rect, order);
const_cast<QGraphicsSceneBspTreeIndexPrivate*>(d)->estimateItems(rect, order);
never executed: return const_cast<QGraphicsSceneBspTreeIndexPrivate*>(d)->estimateItems(rect, order);
0
438}-
439-
440QList<QGraphicsItem *> QGraphicsSceneBspTreeIndex::estimateTopLevelItems(const QRectF &rect, Qt::SortOrder order) const-
441{-
442 const QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
443 return
never executed: return const_cast<QGraphicsSceneBspTreeIndexPrivate*>(d)->estimateItems(rect, order, true);
const_cast<QGraphicsSceneBspTreeIndexPrivate*>(d)->estimateItems(rect, order, true);
never executed: return const_cast<QGraphicsSceneBspTreeIndexPrivate*>(d)->estimateItems(rect, order, true);
0
444}-
445-
446-
447-
448-
449-
450-
451QList<QGraphicsItem *> QGraphicsSceneBspTreeIndex::items(Qt::SortOrder order) const-
452{-
453 const QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
454 const_cast<QGraphicsSceneBspTreeIndexPrivate*>(d)->purgeRemovedItems();-
455 QList<QGraphicsItem *> itemList;-
456-
457-
458-
459 if (d->freeItemIndexes.isEmpty()
d->freeItemIndexes.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
460 if (d->unindexedItems.isEmpty()
d->unindexedItems.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
461 itemList = d->indexedItems;-
462 }
never executed: end of block
else {
0
463 itemList = d->indexedItems + d->unindexedItems;-
464 }
never executed: end of block
0
465 } else {-
466-
467-
468 for (QForeachContainer<typename QtPrivate::remove_reference<decltype(d->indexedItems + d->unindexedItems)>::type> _container_((d->indexedItems + d->unindexedItems)); _container_.control && _container_.i != _container_.e; ++_container_.i, _container_.control ^= 1) for (QGraphicsItem *item = *_container_.i; _container_.control; _container_.control = 0) {-
469 if (item
itemDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
470 itemList << item;
never executed: itemList << item;
0
471 }
never executed: end of block
0
472 }
never executed: end of block
0
473 d->sortItems(&itemList, order, d->sortCacheEnabled);-
474 return
never executed: return itemList;
itemList;
never executed: return itemList;
0
475}-
476int QGraphicsSceneBspTreeIndex::bspTreeDepth() const-
477{-
478 const QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
479 return
never executed: return d->bspTreeDepth;
d->bspTreeDepth;
never executed: return d->bspTreeDepth;
0
480}-
481-
482void QGraphicsSceneBspTreeIndex::setBspTreeDepth(int depth)-
483{-
484 QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
485 if (d->bspTreeDepth == depth
d->bspTreeDepth == depthDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
486 return;
never executed: return;
0
487 d->bspTreeDepth = depth;-
488 d->resetIndex();-
489}
never executed: end of block
0
490-
491-
492-
493-
494-
495-
496-
497void QGraphicsSceneBspTreeIndex::updateSceneRect(const QRectF &rect)-
498{-
499 QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
500 d->sceneRect = rect;-
501 d->resetIndex();-
502}
never executed: end of block
0
503-
504-
505-
506-
507-
508-
509-
510void QGraphicsSceneBspTreeIndex::itemChange(const QGraphicsItem *item, QGraphicsItem::GraphicsItemChange change, const void *const value)-
511{-
512 QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
513 switch (change) {-
514 case
never executed: case QGraphicsItem::ItemFlagsChange:
QGraphicsItem::ItemFlagsChange:
never executed: case QGraphicsItem::ItemFlagsChange:
{
0
515-
516 QGraphicsItem::GraphicsItemFlags newFlags = *static_cast<const QGraphicsItem::GraphicsItemFlags *>(value);-
517 bool ignoredTransform = item->d_ptr->flags & QGraphicsItem::ItemIgnoresTransformations;-
518 bool willIgnoreTransform = newFlags & QGraphicsItem::ItemIgnoresTransformations;-
519 bool clipsChildren = item->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape
item->d_ptr->f...hildrenToShapeDescription
TRUEnever evaluated
FALSEnever evaluated
0
520 || item->d_ptr->flags & QGraphicsItem::ItemContainsChildrenInShape
item->d_ptr->f...hildrenInShapeDescription
TRUEnever evaluated
FALSEnever evaluated
;
0
521 bool willClipChildren = newFlags & QGraphicsItem::ItemClipsChildrenToShape
newFlags & QGr...hildrenToShapeDescription
TRUEnever evaluated
FALSEnever evaluated
0
522 || newFlags & QGraphicsItem::ItemContainsChildrenInShape
newFlags & QGr...hildrenInShapeDescription
TRUEnever evaluated
FALSEnever evaluated
;
0
523 if ((
(ignoredTransf...noreTransform)Description
TRUEnever evaluated
FALSEnever evaluated
ignoredTransform != willIgnoreTransform)
(ignoredTransf...noreTransform)Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(clipsChildren...lClipChildren)Description
TRUEnever evaluated
FALSEnever evaluated
clipsChildren != willClipChildren)
(clipsChildren...lClipChildren)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
524 QGraphicsItem *thatItem = const_cast<QGraphicsItem *>(item);-
525-
526-
527-
528-
529 d->removeItem(thatItem, true, true);-
530 }
never executed: end of block
0
531 break;
never executed: break;
0
532 }-
533 case
never executed: case QGraphicsItem::ItemZValueChange:
QGraphicsItem::ItemZValueChange:
never executed: case QGraphicsItem::ItemZValueChange:
0
534 d->invalidateSortCache();-
535 break;
never executed: break;
0
536 case
never executed: case QGraphicsItem::ItemParentChange:
QGraphicsItem::ItemParentChange:
never executed: case QGraphicsItem::ItemParentChange:
{
0
537 d->invalidateSortCache();-
538-
539 const QGraphicsItem *newParent = static_cast<const QGraphicsItem *>(value);-
540 bool ignoredTransform = item->d_ptr->itemIsUntransformable();-
541 bool willIgnoreTransform = (
(item->d_ptr->...ansformations)Description
TRUEnever evaluated
FALSEnever evaluated
item->d_ptr->flags & QGraphicsItem::ItemIgnoresTransformations)
(item->d_ptr->...ansformations)Description
TRUEnever evaluated
FALSEnever evaluated
0
542 || (newParent
newParentDescription
TRUEnever evaluated
FALSEnever evaluated
&& newParent->d_ptr->itemIsUntransformable()
newParent->d_p...ransformable()Description
TRUEnever evaluated
FALSEnever evaluated
);
0
543 bool ancestorClippedChildren = item->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren
item->d_ptr->a...rClipsChildrenDescription
TRUEnever evaluated
FALSEnever evaluated
0
544 || item->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorContainsChildren
item->d_ptr->a...ntainsChildrenDescription
TRUEnever evaluated
FALSEnever evaluated
;
0
545 bool ancestorWillClipChildren = newParent
newParentDescription
TRUEnever evaluated
FALSEnever evaluated
0
546 && ((newParent->d_ptr->flags & QGraphicsItem::ItemClipsChildrenToShape
newParent->d_p...hildrenToShapeDescription
TRUEnever evaluated
FALSEnever evaluated
0
547 || newParent->d_ptr->flags & QGraphicsItem::ItemContainsChildrenInShape
newParent->d_p...hildrenInShapeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
548 || (newParent->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorClipsChildren
newParent->d_p...rClipsChildrenDescription
TRUEnever evaluated
FALSEnever evaluated
0
549 || newParent->d_ptr->ancestorFlags & QGraphicsItemPrivate::AncestorContainsChildren
newParent->d_p...ntainsChildrenDescription
TRUEnever evaluated
FALSEnever evaluated
));
0
550 if ((
(ignoredTransf...noreTransform)Description
TRUEnever evaluated
FALSEnever evaluated
ignoredTransform != willIgnoreTransform)
(ignoredTransf...noreTransform)Description
TRUEnever evaluated
FALSEnever evaluated
|| (
(ancestorClipp...lClipChildren)Description
TRUEnever evaluated
FALSEnever evaluated
ancestorClippedChildren != ancestorWillClipChildren)
(ancestorClipp...lClipChildren)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
551 QGraphicsItem *thatItem = const_cast<QGraphicsItem *>(item);-
552-
553-
554-
555-
556 d->removeItem(thatItem, true, true);-
557 }
never executed: end of block
0
558 break;
never executed: break;
0
559 }-
560 default
never executed: default:
:
never executed: default:
0
561 break;
never executed: break;
0
562 }-
563}-
564-
565-
566-
567-
568-
569-
570-
571bool QGraphicsSceneBspTreeIndex::event(QEvent *event)-
572{-
573 QGraphicsSceneBspTreeIndexPrivate * const d = d_func();-
574 if (event->type() == QEvent::Timer
event->type() == QEvent::TimerDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
575 if (d->indexTimerId
d->indexTimerIdDescription
TRUEnever evaluated
FALSEnever evaluated
&& static_cast<
static_cast<QT...->indexTimerIdDescription
TRUEnever evaluated
FALSEnever evaluated
QTimerEvent *>(event)->timerId() == d->indexTimerId
static_cast<QT...->indexTimerIdDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
576 if (d->restartIndexTimer
d->restartIndexTimerDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
577 d->restartIndexTimer = false;-
578 }
never executed: end of block
else {
0
579-
580 d->_q_updateIndex();-
581 }
never executed: end of block
0
582 }-
583 }
never executed: end of block
0
584 return
never executed: return QObject::event(event);
QObject::event(event);
never executed: return QObject::event(event);
0
585}-
586-
587-
588-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9