#include "MainWindow.h" #include // Function defined in map_3_subivision.cpp void subdivide_map_3(Map& m); MainWindow::MainWindow(QWidget* parent): CGAL::Qt::DemosMainWindow(parent), nbcube(0) { setupUi(this); this->viewer->setScene(&scene); connectActions(); this->addAboutDemo(":/cgal/help/about_Combinatorial_map_3.html"); this->addAboutCGAL(); this->addRecentFiles(this->menuFile, this->actionQuit); connect(this, SIGNAL(openRecentFile(QString)), this, SLOT(load_off(QString))); } void MainWindow::connectActions() { QObject::connect(this->actionImportOFF, SIGNAL(triggered()), this, SLOT(import_off())); QObject::connect(this->actionAddOFF, SIGNAL(triggered()), this, SLOT(add_off())); QObject::connect(this->actionImport3DTDS, SIGNAL(triggered()), this, SLOT(import_3DTDS())); QObject::connect(this->actionQuit, SIGNAL(triggered()), qApp, SLOT(quit())); QObject::connect(this->actionSubdivide, SIGNAL(triggered()), this, SLOT(subdivide())); QObject::connect(this->actionCreateCube, SIGNAL(triggered()), this, SLOT(create_cube())); QObject::connect(this, SIGNAL(sceneChanged()), this->viewer, SLOT(sceneChanged())); QObject::connect(this->actionDisplayInfo, SIGNAL(triggered()), this, SLOT(display_info())); QObject::connect(this->actionClear, SIGNAL(triggered()), this, SLOT(clear())); } void MainWindow::display_info() { scene.map.display_characteristics(std::cout)<(scene.map,ifs); this->addToRecentFiles(fileName); QApplication::restoreOverrideCursor(); emit (sceneChanged()); } void MainWindow::load_3DTDS(const QString& fileName, bool clear) { QApplication::setOverrideCursor(Qt::WaitCursor); if (clear) scene.map.clear(); typedef CGAL::Delaunay_triangulation_3 Triangulation; Triangulation T; std::ifstream ifs(qPrintable(fileName)); std::istream_iterator begin(ifs), end; T.insert(begin, end); CGAL::import_from_triangulation_3(scene.map, T); QApplication::restoreOverrideCursor(); emit (sceneChanged()); } void MainWindow::create_cube() { Dart_handle d1=make_cube(scene.map, Point_3(nbcube, nbcube, nbcube), 1); Dart_handle d2=make_cube(scene.map, Point_3(nbcube+1, nbcube, nbcube), 1); Dart_handle d3=make_cube(scene.map, Point_3(nbcube, nbcube+1, nbcube), 1); scene.map.sew3(d1->beta(1,1)->beta(2),d2->beta(2)); scene.map.sew3(d1->beta(2)->beta(1,1)->beta(2),d3); ++nbcube; emit (sceneChanged()); } void MainWindow::subdivide() { subdivide_map_3(scene.map); emit (sceneChanged()); } void MainWindow::clear() { scene.map.clear(); emit (sceneChanged()); } #include "MainWindow.moc"