void GLWidget3D::mousePressEvent(QMouseEvent *event) { QVector2D pos; if (Qt::ControlModifier == event->modifiers()) { controlPressed = true; } else { controlPressed = false; } this->setFocus(); lastPos = event->pos(); mouseTo2D(event->x(), event->y(), pos); if (event->buttons() /*& Qt::LeftButton*/) { switch (mainWin->mode) { case MainWindow::MODE_AREA_SELECT: if (altPressed) { // normal Gaussian edition float change=mainWin->controlWidget->ui.terrainPaint_changeSlider->value()*0.003f; float radi=mainWin->controlWidget->ui.terrainPaint_sizeSlider->value()*0.01f; if (event->buttons() & Qt::RightButton) { change = -change; } if (event->buttons() & Qt::MiddleButton) { change=FLT_MAX;//hack: flat terrain } //mainWin->urbanGeometry->vboRenderManager->addValue(pos.x(), pos.y(), change); float xM=1.0f-(vboRenderManager.side/2.0f-pos.x())/vboRenderManager.side; float yM=1.0f-(vboRenderManager.side/2.0f-pos.y())/vboRenderManager.side; vboRenderManager.vboTerrain.updateTerrain(xM,yM,change,radi);//rad,change); mainWin->urbanGeometry->adaptToTerrain();/// !! GEN did not have it here (enough in move?) shadow.makeShadowMap(this); updateGL(); } else { // select a vertex or an edge bool found = false; if (shiftPressed) { // select am edge // select a vertex or an edge if (GraphUtil::getEdge(mainWin->urbanGeometry->roads, pos, 30, selectedEdgeDesc)) { selectEdge(mainWin->urbanGeometry->roads, selectedEdgeDesc); } else { vertexSelected = false; edgeSelected = false; } } else { // select a vertex // select a vertex or an edge if (GraphUtil::getVertex(mainWin->urbanGeometry->roads, pos, 30, selectedVertexDesc)) { selectVertex(mainWin->urbanGeometry->roads, selectedVertexDesc); } else { vertexSelected = false; edgeSelected = false; } } } break; } } }
// Retrieve the best edge to follow in the cycle joining phase int Graph::getNextEdge(int edgeIndex, int toNode) { updateCycle(edgeIndex, toNode); std::vector<int> connections = fetchConnections(toNode, edgeIndex); return selectEdge(connections); }
BOOL CEdgeContainer::isEdge(NUMBER from, NUMBER to) const { CEdge& e = selectEdge(from, to); if (e.isNull()) return FALSE; return TRUE; }