void Ut_StatusIndicatorMenuWindow::testStatusIndicatorMenuIsClosedWhenStatusBarIsTapped() { QFETCH(bool, pressInside); QFETCH(bool, releaseInside); QFETCH(MSceneWindow::SceneWindowState, sceneWindowState); statusIndicatorMenuWindow->displayActive(); // Map the bounding rect to the scene QRectF statusBarGeometry(statusIndicatorMenuWindow->statusBar->sceneBoundingRect()); QPoint pressPoint(statusBarGeometry.x(), statusBarGeometry.y()); QPoint releasePoint(statusBarGeometry.x(), statusBarGeometry.y()); if (!pressInside) { pressPoint += QPoint(-1, -1); } if (!releaseInside) { releasePoint += QPoint(-1, -1); } // Then map the press point to the viewport pressPoint = statusIndicatorMenuWindow->mapFromScene(pressPoint); releasePoint = statusIndicatorMenuWindow->mapFromScene(releasePoint); QMouseEvent pressEvent(QEvent::MouseButtonPress, pressPoint, Qt::LeftButton, Qt::MouseButtons(Qt::LeftButton), Qt::KeyboardModifiers(Qt::NoModifier)); QMouseEvent releaseEvent(QEvent::MouseButtonRelease, releasePoint, Qt::LeftButton, Qt::MouseButtons(Qt::LeftButton), Qt::KeyboardModifiers(Qt::NoModifier)); statusIndicatorMenuWindow->mousePressEvent(&pressEvent); statusIndicatorMenuWindow->mouseReleaseEvent(&releaseEvent); QCOMPARE(statusIndicatorMenuWindow->menuWidget->sceneWindowState(), sceneWindowState); }
bool arlCore::Mesh::releaseTriangle( unsigned int noTriangle ) { unsigned int i; for( i=0 ; i<3 ; ++i ) releasePoint(m_triangles[noTriangle][i]); m_freeTriangles.push_back(noTriangle); return true; }
bool arlCore::Mesh::simplify( void ) { #ifndef ANN return false; #else // ANN unsigned int i, j; const unsigned int Size = m_pointList->visibleSize(); const unsigned int Dimension = m_pointList->getDimension(); ANNpointArray ANNPoints = annAllocPts( Size, Dimension ); for( i=0 ; i<m_pointList->size() ; ++i ) for( j=0 ; j<Dimension ; ++j ) ANNPoints[i][j]=(*m_pointList)[i]->get(j); const int BucketSize = 1; ANNkd_tree* ANNtree = new ANNkd_tree( ANNPoints, Size, Dimension, BucketSize, ANN_KD_SL_MIDPT ); const double Epsilon = 1e-8;// Error bound const double SquaredEpsilon = Epsilon*Epsilon; ANNpoint ANNPt = annAllocPt(Dimension); // Query point const unsigned int NbNeighbors = 20; ANNidxArray Nn_idx = new ANNidx[NbNeighbors]; // near neighbor indices ANNdistArray SquaredDists = new ANNdist[NbNeighbors]; // near neighbor distances for( i=0 ; i<m_pointList->size() ; ++i ) if((*m_pointList)[i]->isVisible()) { std::vector<unsigned int> oldIndex; for( j=0 ; j<Dimension; ++j ) ANNPt[j] = (*m_pointList)[i]->get(j); ANNtree->annkSearch( ANNPt, NbNeighbors, Nn_idx, SquaredDists, Epsilon ); // Cherche points les plus proches for( j=0 ; j<NbNeighbors ; ++j ) if(SquaredDists[j]<=SquaredEpsilon) { releasePoint(Nn_idx[j]); oldIndex.push_back(Nn_idx[j]); } replacePointIndex(oldIndex, i); } delete ANNtree; annDeallocPt( ANNPt ); annDeallocPts( ANNPoints ); delete[] Nn_idx; delete[] SquaredDists; annClose(); return true; #endif // ANN }