Changeset 561 for trunk/src/gui/graphicsview/qgraphicsscene_bsp.cpp
- Timestamp:
- Feb 11, 2010, 11:19:06 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
-
Property svn:mergeinfo
set to (toggle deleted branches)
/branches/vendor/nokia/qt/4.6.1 merged eligible /branches/vendor/nokia/qt/current merged eligible /branches/vendor/trolltech/qt/current 3-149
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
trunk/src/gui/graphicsview/qgraphicsscene_bsp.cpp
r2 r561 2 2 ** 3 3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). 4 ** Contact: Qt Software Information ([email protected]) 4 ** All rights reserved. 5 ** Contact: Nokia Corporation ([email protected]) 5 6 ** 6 7 ** This file is part of the QtGui module of the Qt Toolkit. … … 21 22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 22 23 ** 23 ** In addition, as a special exception, Nokia gives you certain 24 ** additional rights. These rights are described in the Nokia Qt LGPL 25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this 26 ** package. 24 ** In addition, as a special exception, Nokia gives you certain additional 25 ** rights. These rights are described in the Nokia Qt LGPL Exception 26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 27 27 ** 28 28 ** GNU General Public License Usage … … 34 34 ** met: http://www.gnu.org/copyleft/gpl.html. 35 35 ** 36 ** If you are unsure which license is appropriate for your use, please37 ** contact the sales department at qt-sales@nokia.com.36 ** If you 37 ** @nokia.com. 38 38 ** $QT_END_LICENSE$ 39 39 ** … … 71 71 public: 72 72 QList<QGraphicsItem *> *foundItems; 73 73 74 74 75 void visit(QList<QGraphicsItem *> *items) … … 76 77 for (int i = 0; i < items->size(); ++i) { 77 78 QGraphicsItem *item = items->at(i); 78 if (!item->d_func()->itemDiscovered && item->isVisible()) { 79 if (onlyTopLevelItems && item->d_ptr->parent) 80 item = item->topLevelItem(); 81 if (!item->d_func()->itemDiscovered && item->d_ptr->visible) { 79 82 item->d_func()->itemDiscovered = 1; 80 83 foundItems->prepend(item); … … 144 147 } 145 148 146 QList<QGraphicsItem *> QGraphicsSceneBspTree::items(const QRectF &rect )149 QList<QGraphicsItem *> QGraphicsSceneBspTree::items(const QRectF &rect 147 150 { 148 151 QList<QGraphicsItem *> tmp; 149 152 findVisitor->foundItems = &tmp; 153 150 154 climbTree(findVisitor, rect); 151 return tmp; 152 } 153 154 QList<QGraphicsItem *> QGraphicsSceneBspTree::items(const QPointF &pos) 155 { 156 QList<QGraphicsItem *> tmp; 157 findVisitor->foundItems = &tmp; 158 climbTree(findVisitor, pos); 155 // Reset discovery bits. 156 for (int i = 0; i < tmp.size(); ++i) 157 tmp.at(i)->d_ptr->itemDiscovered = 0; 159 158 return tmp; 160 159 } … … 236 235 } 237 236 238 void QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor *visitor, const Q PointF &pos, int index)237 void QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor *visitor, const Q 239 238 { 240 239 if (nodes.isEmpty()) … … 242 241 243 242 const Node &node = nodes.at(index); 244 int childIndex = firstChildIndex(index);243 int childIndex = firstChildIndex(index); 245 244 246 245 switch (node.type) { 247 246 case Node::Leaf: { 248 visitor->visit(&leaves[node.leafIndex]); 249 break; 250 } 251 case Node::Vertical: 252 if (pos.x() < node.offset) { 253 climbTree(visitor, pos, childIndex); 254 } else { 255 climbTree(visitor, pos, childIndex + 1); 256 } 257 break; 258 case Node::Horizontal: 259 if (pos.y() < node.offset) { 260 climbTree(visitor, pos, childIndex); 261 } else { 262 climbTree(visitor, pos, childIndex + 1); 263 } 264 break; 265 } 266 } 267 268 void QGraphicsSceneBspTree::climbTree(QGraphicsSceneBspTreeVisitor *visitor, const QRectF &rect, int index) 269 { 270 if (nodes.isEmpty()) 271 return; 272 273 const Node &node = nodes.at(index); 274 int childIndex = firstChildIndex(index); 275 276 switch (node.type) { 277 case Node::Leaf: { 278 visitor->visit(&leaves[node.leafIndex]); 247 visitor->visit(const_cast<QList<QGraphicsItem*>*>(&leaves[node.leafIndex])); 279 248 break; 280 249 } … … 289 258 break; 290 259 case Node::Horizontal: 291 int childIndex = firstChildIndex(index);292 260 if (rect.top() < node.offset) { 293 261 climbTree(visitor, rect, childIndex);
Note:
See TracChangeset
for help on using the changeset viewer.