#include "dm_pointsrecoverer.h" #include "ct_itemdrawable/accessibility/ct_iaccesspointcloud.h" #include "ct_itemdrawable/abstract/ct_abstractitemdrawable.h" DM_PointsRecoverer::DM_PointsRecoverer() { m_pIndexBackup.setSortType(CT_AbstractCloudIndex::NotSorted); m_fakePainter.setComputingMode(DM_FakePainter::BackupPointCloudIndex | DM_FakePainter::BackupPointCloudIndexIfEdge | DM_FakePainter::BackupPointCloudIndexIfFace); } QList DM_PointsRecoverer::recoverDrawnGlobalPointsInItemDrawable(const QList &items, GraphicsViewInterface &graphicsView, CT_PointCloudIndexVector *optionnalCloudIndexForPointDrawOneByOne) { m_fakePainter.clear(); if(optionnalCloudIndexForPointDrawOneByOne != NULL) { m_fakePainter.setForGlobalPointDrawOneByOneTheBackupCloudIndex(optionnalCloudIndexForPointDrawOneByOne); } else { m_pIndexBackup.clear(); m_fakePainter.setForGlobalPointDrawOneByOneTheBackupCloudIndex(&m_pIndexBackup); } QListIterator it(items); while(it.hasNext()) it.next()->draw(graphicsView, m_fakePainter); return m_fakePainter.pointCloudIndexBackup(); } QList DM_PointsRecoverer::recoverGlobalPointsInItemDrawable(const QList &items) { QList l; QListIterator it(items); while(it.hasNext()) { CT_IAccessPointCloud *ap = dynamic_cast(it.next()); if((ap != NULL) && (ap->getPointCloudIndex() != NULL)) l.append((CT_AbstractCloudIndex*)ap->getPointCloudIndex()); } return l; }