void MainWindow::on_actionRandomGeneration_triggered() { on_actionClear_triggered(); isSelectMannually = false; RandomPointsDialog * dialog = new RandomPointsDialog(this); dialog->exec(); QTime t; t.start(); std::random_device rd; std::mt19937 gen; gen.seed(rd()); for(int i = 0; i < dialog->getPointsNumber(); i++) { std::uniform_int_distribution<int> randx(1, this->width() / 2 - 2); std::uniform_int_distribution<int> randy(100, this->height() - 2); // 100 in order to avoid paint on toolbar points.append(QPoint(randx(gen), randy(gen))); } qDebug()<<"random time: "<<t.elapsed() / 1000.0; update(); isRandomized = true; }
void MainWindow::mouseReleaseEvent(QMouseEvent * event) { QString pos = QString("%1,%2").arg(event->pos().x()).arg(event->pos().y()); if(isSelectMannually) { if (event->pos().x() > this->width() / 2 || event->pos().y() < 100 || points_set.contains(pos)) { return; } points.append(event->pos()); points_set.insert(pos); update(); if (ui->actionReal_Time->isChecked()) { isDemoRealTimeFinished = false; demoRealTime(event->pos()); isDemoRealTimeFinished = true; if (isStopDemoRealTime) { on_actionClear_triggered(); } } } }
void MainWindow::on_actionReal_Time_toggled(bool isRealTime_) { isRandomized = !isRealTime_; if (points.size() > 0) { on_actionClear_triggered(); } }
int EditorWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QMainWindow::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: on_actionClear_triggered(); break; case 1: on_action_New_triggered(); break; case 2: on_action_Run_File_triggered(); break; case 3: onEngineStarted(); break; case 4: onEngineStopped(); break; case 5: onEnginePanic((*reinterpret_cast< Atom(*)>(_a[1])),(*reinterpret_cast< Word(*)>(_a[2])),(*reinterpret_cast< const QString(*)>(_a[3])),(*reinterpret_cast< const QString(*)>(_a[4]))); break; case 6: on_action_Inspect_Selection_triggered(); break; case 7: on_action_Quit_triggered(); break; case 8: on_action_Save_triggered(); break; case 9: on_actionSave_as_triggered(); break; case 10: on_action_Open_triggered(); break; default: ; } _id -= 11; } return _id; }
void MainWindow::on_actionPerform_triggered() { if (ui->actionReal_Time->isChecked() && !isRandomized) { QToolTip::showText(QPoint(this->x() + 20, this->y() + 120), "Please click Random Generation or disable Real Time Mode first", this); return; } isRandomized = false; if (points.size() < 3) { return; } if (delay_mseconds != 0) { isDemoRealTimeFinished = false; for(auto& p : points) { demoRealTime(p); } isDemoRealTimeFinished = true; if (isStopDemoRealTime) { on_actionClear_triggered(); } return; } isSelectMannually = false; triangles.clear(); QObject::connect(delaunay, SIGNAL(signalRefreshGui()), this, SLOT(slotRefreshGui())); PointVec mesh_points; for(auto& p : points) { mesh_points.push_back(Point(p.x(), p.y(), 0)); } QTime t; t.start(); delaunay->perform(mesh_points); qDebug()<<"delaunay time: "<<t.elapsed() / 1000.0; // display 2d result for (auto& fh : delaunay->mesh.faces()) { for(auto& vh : delaunay->mesh.fv_range(fh)) { Point p = delaunay->mesh.point(vh); triangles.push_back(QPoint(p[0], p[1])); } } isTrianglated = true; update(); // display 3d result ui->viewer->setParam(delaunay, this->width(), this->height()); ui->viewer->showMesh2D(); ui->viewer->showMesh3D(); }
void MainWindow::closeEvent(QCloseEvent * e) { on_actionClear_triggered(); QMainWindow::closeEvent(e); }