diff --git a/GraphicsView/demo/GraphicsView/CMakeLists.txt b/GraphicsView/demo/GraphicsView/CMakeLists.txt index 56ffb85c034..f1c6a5c83d7 100644 --- a/GraphicsView/demo/GraphicsView/CMakeLists.txt +++ b/GraphicsView/demo/GraphicsView/CMakeLists.txt @@ -27,7 +27,7 @@ link_directories(../../src/CGALQt4) qt4_wrap_ui( UI_FILES MainWindow.ui ) # qrc files (resources files, that contain icons, at least) -qt4_add_resources ( RESOURCE_FILES ./MainWindow.qrc ) +qt4_add_resources ( RESOURCE_FILES ./MainWindow.qrc ../icons/Input.qrc ../icons/File.qrc ../icons/Triangulation_2.qrc ) # use the Qt MOC preprocessor on classes that derives from QObject qt4_automoc( MainWindow.cpp ) @@ -39,8 +39,9 @@ add_executable ( delaunay main.cpp MainWindow.cpp ${UI_FILES} ${RESOURCE_FILES} target_link_libraries( delaunay ${QT_LIBRARIES} ) if ( NOT AUTO_LINK_ENABLED ) # If auto-link is not enabled (on Linux for example), link with libCGAL explicitly. - target_link_libraries( delaunay CGAL CGAL-Qt4 ) + target_link_libraries( delaunay CGAL ) endif() +target_link_libraries( delaunay CGAL-Qt4 ) #---------------------------------------- # minimal graphics view executable: min diff --git a/GraphicsView/demo/GraphicsView/MainWindow.cpp b/GraphicsView/demo/GraphicsView/MainWindow.cpp index 3442814393b..d6b13934492 100644 --- a/GraphicsView/demo/GraphicsView/MainWindow.cpp +++ b/GraphicsView/demo/GraphicsView/MainWindow.cpp @@ -12,13 +12,13 @@ #include #include -#include "QTriangulationCircumcenter_2.h" -#include "QTriangulationMovingPoint_2.h" -#include -#include -#include +#include "TriangulationCircumcircle.h" +#include "TriangulationMovingPoint_2.h" +#include +#include +#include -#include +#include #include @@ -30,7 +30,7 @@ MainWindow::MainWindow() setupStatusBar(); // Add a GraphicItem for the Delaunay triangulation - dgi = new CGAL::QtConstrainedTriangulationGraphicsItem(&dt); + dgi = new CGAL::Qt::ConstrainedTriangulationGraphicsItem(&dt); QObject::connect(this, SIGNAL(changed()), dgi, SLOT(modelChanged())); @@ -41,19 +41,19 @@ MainWindow::MainWindow() // Setup input handlers. They get events before the scene gets them // and the input they generate is passed to the triangulation with // the signal/slot mechanism - pi = new CGAL::QtPolylineInput(this, &scene, 0, false); // inputs polylines which are not closed + pi = new CGAL::Qt::GraphicsViewPolylineInput(this, &scene, 0, false); // inputs polylines which are not closed QObject::connect(pi, SIGNAL(generate(CGAL::Object)), - this, SLOT(process(CGAL::Object))); + this, SLOT(processInput(CGAL::Object))); - mp = new CGAL::QTriangulationMovingPoint_2(&dt, this); - // QTriangulationMovingPoint_2 generates an empty Object() each + mp = new CGAL::Qt::TriangulationMovingPoint(&dt, this); + // TriangulationMovingPoint generates an empty Object() each // time the moving point moves. // The following connection is for the purpose of emitting changed(). QObject::connect(mp, SIGNAL(generate(CGAL::Object)), - this, SLOT(process(CGAL::Object))); + this, SLOT(processInput(CGAL::Object))); - tcc = new CGAL::QTriangulationCircumcenter_2(&scene, &dt, this); + tcc = new CGAL::Qt::TriangulationCircumcircle(&scene, &dt, this); tcc->setPen(QPen(Qt::red, 0, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); @@ -85,7 +85,7 @@ MainWindow::MainWindow() // The navigation adds zooming and translation functionality to the // QGraphicsView - navigation = new CGAL::QtNavigation(this->graphicsView); + navigation = new CGAL::Qt::GraphicsViewNavigation(this->graphicsView); this->graphicsView->viewport()->installEventFilter(navigation); this->graphicsView->installEventFilter(navigation); @@ -94,7 +94,7 @@ MainWindow::MainWindow() } void -MainWindow::process(CGAL::Object o) +MainWindow::processInput(CGAL::Object o) { std::list points; if(CGAL::assign(points, o)){ diff --git a/GraphicsView/demo/GraphicsView/MainWindow.h b/GraphicsView/demo/GraphicsView/MainWindow.h index b54e57f3e39..d25328b0b02 100644 --- a/GraphicsView/demo/GraphicsView/MainWindow.h +++ b/GraphicsView/demo/GraphicsView/MainWindow.h @@ -12,13 +12,15 @@ #include "ui_MainWindow.h" namespace CGAL { - class QtNavigation; - template class QtTriangulationGraphicsItem; - template class QtConstrainedTriangulationGraphicsItem; - template class QTriangulationMovingPoint_2; - template class QTriangulationCircumcenter_2; - template class QtPolylineInput; -} // end namespace CGAL + namespace Qt { + class GraphicsViewNavigation; + template class TriangulationGraphicsItem; + template class ConstrainedTriangulationGraphicsItem; + template class TriangulationMovingPoint; + template class TriangulationCircumcircle; + template class GraphicsItemPolylineInput; + } // namespace Qt +} // namespace CGAL class QLabel; class QWidget; @@ -42,15 +44,15 @@ private: Delaunay dt; QGraphicsScene scene; - CGAL::QtNavigation* navigation; + CGAL::Qt::GraphicsViewNavigation* navigation; - CGAL::QtConstrainedTriangulationGraphicsItem * dgi; + CGAL::Qt::ConstrainedTriangulationGraphicsItem * dgi; QLabel* xycoord ; - CGAL::QTriangulationMovingPoint_2 * mp; - CGAL::QtPolylineInput * pi; - CGAL::QTriangulationCircumcenter_2 *tcc; + CGAL::Qt::TriangulationMovingPoint * mp; + CGAL::Qt::GraphicsViewPolylineInput * pi; + CGAL::Qt::TriangulationCircumcircle *tcc; public: MainWindow(); @@ -82,7 +84,7 @@ private: public slots: - void process(CGAL::Object o); + void processInput(CGAL::Object o); void on_actionUse_OpenGL_toggled(bool checked); diff --git a/GraphicsView/demo/GraphicsView/MainWindow.ui b/GraphicsView/demo/GraphicsView/MainWindow.ui index 336fb82cc08..7670091d431 100644 --- a/GraphicsView/demo/GraphicsView/MainWindow.ui +++ b/GraphicsView/demo/GraphicsView/MainWindow.ui @@ -13,18 +13,9 @@ CGAL Constrained Delaunay Triangulation - - :/cgal/logos/cgal_logo.xpm:/cgal/logos/cgal_logo.xpm + :/cgal/logos/cgal_logo.xpm - - - 0 - 66 - 400 - 209 - - @@ -50,7 +41,7 @@ 0 0 400 - 29 + 19 @@ -63,12 +54,14 @@ + &Edit + @@ -101,25 +94,8 @@ - - - - 0 - 275 - 400 - 25 - - - + - - - 0 - 29 - 116 - 37 - - File Tools @@ -134,14 +110,6 @@ - - - 116 - 29 - 284 - 37 - - Visualization Tools @@ -158,6 +126,18 @@ + + + toolBar_2 + + + TopToolBarArea + + + false + + + &About @@ -189,8 +169,7 @@ true - - :/cgal/Actions/icons/movingPoint.png:/cgal/Actions/icons/movingPoint.png + :/cgal/Actions/icons/movingPoint.png &Moving Point @@ -213,8 +192,7 @@ false - - :/cgal/Input/inputPolyline.png:/cgal/Input/inputPolyline.png + :/cgal/Input/inputPolyline.png &Insert Polyline @@ -228,8 +206,7 @@ - - :/cgal/fileToolbar/fileNew.png:/cgal/fileToolbar/fileNew.png + :/cgal/fileToolbar/fileNew.png &Clear @@ -246,8 +223,7 @@ false - - :/cgal/Triangulation_2/Voronoi_diagram_2.png:/cgal/Triangulation_2/Voronoi_diagram_2.png + :/cgal/Triangulation_2/Voronoi_diagram_2.png Show &Voronoi Diagram @@ -264,8 +240,7 @@ true - - :/cgal/Triangulation_2/Delaunay_triangulation_2.png:/cgal/Triangulation_2/Delaunay_triangulation_2.png + :/cgal/Triangulation_2/Delaunay_triangulation_2.png Show &Delaunay Triangulation @@ -276,8 +251,7 @@ - - :/cgal/fileToolbar/fileOpen.png:/cgal/fileToolbar/fileOpen.png + :/cgal/fileToolbar/fileOpen.png &Load Constraints @@ -288,8 +262,7 @@ - - :/cgal/fileToolbar/fileSave.png:/cgal/fileToolbar/fileSave.png + :/cgal/fileToolbar/fileSave.png &Save Constraints @@ -303,8 +276,7 @@ true - - :/cgal/Actions/icons/circumcenter.png:/cgal/Actions/icons/circumcenter.png + :/cgal/Actions/icons/circumcenter.png &Circumcenter @@ -329,8 +301,7 @@ - - :/cgal/Input/zoom-best-fit.svg:/cgal/Input/zoom-best-fit.svg + :/cgal/Input/zoom-best-fit.svg Re&center the viewport @@ -350,6 +321,22 @@ Ctrl+A + + + toto + + + + + true + + + :/cgal/Actions/icons/circumcenter.png + + + Display Nearest Neighbor + + diff --git a/GraphicsView/demo/GraphicsView/QTriangulationCircumcenter_2.h b/GraphicsView/demo/GraphicsView/QTriangulationCircumcenter_2.h index 13b614b7049..e715513d1b9 100644 --- a/GraphicsView/demo/GraphicsView/QTriangulationCircumcenter_2.h +++ b/GraphicsView/demo/GraphicsView/QTriangulationCircumcenter_2.h @@ -1,7 +1,6 @@ -#ifndef CGAL_Q_TRIANGULATION_CIRCUMCENTER_2 -#define CGAL_Q_TRIANGULATION_CIRCUMCENTER_2 +#ifndef CGAL_QT_TRIANGULATION_CIRCUMCIRCLE_H +#define CGAL_QT_TRIANGULATION_CIRCUMCIRCLE_H -#include #include #include #include @@ -9,16 +8,17 @@ #include #include - +#include namespace CGAL { +namespace Qt { template -class QTriangulationCircumcenter_2 : public QtInput +class TriangulationCircumcircle_2 : public GraphicsViewInput { public: - QTriangulationCircumcenter_2(QGraphicsScene* s, DT * dt_, QObject* parent); - ~QTriangulationCircumcenter_2(); + QTriangulationCircumcircle_2(QGraphicsScene* s, DT * dt_, QObject* parent); + ~QTriangulationCircumcircle_2(); void setPen(const QPen& pen); @@ -40,7 +40,7 @@ private: template -QTriangulationCircumcenter_2::QTriangulationCircumcenter_2(QGraphicsScene* s, +QTriangulationCircumcircle_2::QTriangulationCircumcircle_2(QGraphicsScene* s, T * dt_, QObject* parent) : QtInput(parent), dt(dt_), scene_(s) @@ -50,28 +50,32 @@ QTriangulationCircumcenter_2::QTriangulationCircumcenter_2(QGraphicsScene* s, scene_->addItem(circle); } + template -QTriangulationCircumcenter_2::~QTriangulationCircumcenter_2() +QTriangulationCircumcircle_2::~QTriangulationCircumcircle_2() { } + template void -QTriangulationCircumcenter_2::setPen(const QPen& pen) +QTriangulationCircumcircle_2::setPen(const QPen& pen) { circle->setPen(pen); } + template void -QTriangulationCircumcenter_2::show() +QTriangulationCircumcircle_2::show() { circle->show(); } + template void -QTriangulationCircumcenter_2::hide() +QTriangulationCircumcircle_2::hide() { circle->hide(); } @@ -79,7 +83,7 @@ QTriangulationCircumcenter_2::hide() template void -QTriangulationCircumcenter_2::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +QTriangulationCircumcircle_2::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { if(dt->dimension() != 2){ circle->hide(); @@ -102,7 +106,7 @@ QTriangulationCircumcenter_2::mouseMoveEvent(QGraphicsSceneMouseEvent *event) template bool -QTriangulationCircumcenter_2::eventFilter(QObject *obj, QEvent *event) +QTriangulationCircumcircle_2::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::GraphicsSceneMouseMove) { QGraphicsSceneMouseEvent *mouseEvent = static_cast(event); @@ -114,7 +118,7 @@ QTriangulationCircumcenter_2::eventFilter(QObject *obj, QEvent *event) } } - +} // namespace Qt } // namespace CGAL -#endif // CGAL_Q_TRIANGULATION_CIRCUMCENTER_2 +#endif // CGAL_QT_TRIANGULATION_CIRCUMCIRCLE_H diff --git a/GraphicsView/demo/GraphicsView/QTriangulationMovingPoint_2.h b/GraphicsView/demo/GraphicsView/QTriangulationMovingPoint_2.h index 7ee4fd8526e..dd4a4d1fabf 100644 --- a/GraphicsView/demo/GraphicsView/QTriangulationMovingPoint_2.h +++ b/GraphicsView/demo/GraphicsView/QTriangulationMovingPoint_2.h @@ -1,6 +1,6 @@ -#ifndef CGAL_Q_TRIANGULATION_MOVING_POINT_2 -#define CGAL_Q_TRIANGULATION_MOVING_POINT_2 +#ifndef CGAL_QT_TRIANGULATION_MOVING_POINT +#define CGAL_QT_TRIANGULATION_MOVING_POINT #include #include @@ -10,16 +10,17 @@ namespace CGAL { +namespace Qt { template -class QTriangulationMovingPoint_2 : public QtInput +class TriangulationMovingPoint : public GraphicsViewInput { public: typedef typename DT::Face_handle Face_handle; typedef typename DT::Vertex_handle Vertex_handle; typedef typename DT::Point Point; - QTriangulationMovingPoint_2(DT * dt_, QObject* parent); + TriangulationMovingPoint(DT * dt_, QObject* parent); protected: void localize_and_insert_point(QPointF qt_point); @@ -36,15 +37,15 @@ protected: template -QTriangulationMovingPoint_2::QTriangulationMovingPoint_2(T * dt_, - QObject* parent) - : QtInput(parent), dt(dt_), movePointToInsert(false), vh() +TriangulationMovingPoint_2::TriangulationMovingPoint_2(T * dt_, + QObject* parent) + : GraphicsViewInput(parent), dt(dt_), movePointToInsert(false), vh() {} template void -QTriangulationMovingPoint_2::localize_and_insert_point(QPointF qt_point) +TriangulationMovingPoint_2::localize_and_insert_point(QPointF qt_point) { Point p(qt_point.x(), qt_point.y()); typename T::Locate_type lt; @@ -59,7 +60,7 @@ QTriangulationMovingPoint_2::localize_and_insert_point(QPointF qt_point) template void -QTriangulationMovingPoint_2::mousePressEvent(QGraphicsSceneMouseEvent *event) +TriangulationMovingPoint_2::mousePressEvent(QGraphicsSceneMouseEvent *event) { if(dt->number_of_vertices() == 0 || event->modifiers() != 0 || @@ -73,7 +74,7 @@ QTriangulationMovingPoint_2::mousePressEvent(QGraphicsSceneMouseEvent *event) template void -QTriangulationMovingPoint_2::mouseMoveEvent(QGraphicsSceneMouseEvent *event) +TriangulationMovingPoint_2::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { if(! movePointToInsert) return; @@ -90,7 +91,7 @@ QTriangulationMovingPoint_2::mouseMoveEvent(QGraphicsSceneMouseEvent *event) template void -QTriangulationMovingPoint_2::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) +TriangulationMovingPoint_2::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if(! movePointToInsert || event->button() != Qt::LeftButton) { @@ -109,7 +110,7 @@ QTriangulationMovingPoint_2::mouseReleaseEvent(QGraphicsSceneMouseEvent *even template bool -QTriangulationMovingPoint_2::eventFilter(QObject *obj, QEvent *event) +TriangulationMovingPoint_2::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::GraphicsSceneMousePress) { QGraphicsSceneMouseEvent *mouseEvent = static_cast(event); @@ -130,7 +131,7 @@ QTriangulationMovingPoint_2::eventFilter(QObject *obj, QEvent *event) } - +} // namespace Qt } // namespace CGAL -#endif // CGAL_Q_TRIANGULATION_MOVING_POINT_2 +#endif // CGAL_QT_TRIANGULATION_MOVING_POINT diff --git a/GraphicsView/demo/GraphicsView/min.cpp b/GraphicsView/demo/GraphicsView/min.cpp index 0cbe6d0b43b..01fa6efff28 100644 --- a/GraphicsView/demo/GraphicsView/min.cpp +++ b/GraphicsView/demo/GraphicsView/min.cpp @@ -1,3 +1,80 @@ +#include // for cout +#include // for exit + +#include +#include +#include +#include + +template +class Build_Surface : public CGAL::Modifier_base +{ +public: + Build_Surface() { } + void operator()( HDS& hds ); +}; + +template +void Build_Surface< HDS >::operator()( HDS &hds ) +{ + /// Build a simple surface made of two triangles. + CGAL::Polyhedron_incremental_builder_3 pB(hds, true); + pB.begin_surface( 6, 2, 0); + + typedef typename HDS::Vertex::Point Point; + pB.add_vertex( Point( 0.0, 0.0, 0.0)); + pB.add_vertex( Point( 1.0, 0.0, 0.0)); + pB.add_vertex( Point( 0.0, 1.0, 0.0)); + pB.add_vertex( Point( 0.0, 0.0, 1.0)); + pB.add_vertex( Point( 1.0, 1.0, 1.0)); + pB.add_vertex( Point( 1.0, 0.0, 1.0)); + + // First triangle: + pB.begin_facet(); + pB.add_vertex_to_facet(2); + pB.add_vertex_to_facet(4); + pB.add_vertex_to_facet(0); + pB.end_facet(); + + // Second triangle: + std::vector< std::size_t> t; + t.push_back(0); t.push_back(5); t.push_back(4); + if( pB.test_facet(t.begin(), t.end()) == true ) + std::cout << "Test passed." << std::endl; + else + { + std::cout << "Test failed." << std::endl; + exit( 0 ) ; + } + + pB.begin_facet(); + pB.add_vertex_to_facet(t[0]); + pB.add_vertex_to_facet(t[1]); + pB.add_vertex_to_facet(t[2]); + pB.end_facet(); + + std::cout << "before end_surface()" << std::endl; + pB.end_surface(); + std::cout << "after end_surface()" << std::endl; +} + +int main() +{ + typedef CGAL::Simple_cartesian Kernel; + typedef CGAL::Polyhedron_3 Polyhedron; + typedef Polyhedron::HalfedgeDS HalfedgeDS; + + Polyhedron P; + Build_Surface surface; + P.delegate(surface); + std::cout << "Done with surface building." << std::endl; + return 0; +} + + + + +#if 0 #include #include #include @@ -288,3 +365,5 @@ int main(int argc, char **argv) } #include "min.moc" + +#endif