QList<QGraphicsItem*> View::ItemsAt(const QPoint& point, int viewLayerIds) { QList<QGraphicsItem*> items = m_pScene->items(point); QList<QGraphicsItem*> filteredItems; for (int i=0; i < items.size(); i++) { QGraphicsItem* pItem = items.at(i); if (pItem->type() != m_rootItemType) { if (LayerId(pItem) & viewLayerIds) { filteredItems.append(pItem); } } } return filteredItems; }
QList<QGraphicsItem*> View::ItemsIn(const QRectF& rect, ViewLayerId viewLayerId, bool intersect) { Qt::ItemSelectionMode mode = (intersect) ? (Qt::IntersectsItemShape) : (Qt::ContainsItemShape); QList<QGraphicsItem*> items; QList<QGraphicsItem*> filteredItems; if (viewLayerId == ViewLayerId_Main) { QRectF mappedRect = m_pMainLayer->mapRectToScene(rect); items = m_pScene->items(mappedRect, mode); } else { items = m_pScene->items(rect, mode); } for (int i=0; i < items.size(); i++) { QGraphicsItem* pItem = items.at(i); if (pItem->type() != m_rootItemType) { if (LayerId(pItem) == viewLayerId) { filteredItems.append(pItem); } } } return filteredItems; }
LayerId Base::getLayerId() const { if (lay_ == NULL) { return LayerId(0); } return lay_->getId(); }