diff --git a/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.cpp b/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.cpp index 7e49e55be75..2f07c180a5a 100644 --- a/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.cpp +++ b/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.cpp @@ -193,6 +193,8 @@ public slots: void on_actionShowDelaunay_toggled(bool checked); + void on_actionShowTriangulationInDomain_toggled(bool checked); + void on_actionShow_constrained_edges_toggled(bool checked); void on_actionShow_voronoi_edges_toggled(bool checked); @@ -297,6 +299,7 @@ MainWindow::MainWindow() // Check two actions this->actionInsertPolyline->setChecked(true); this->actionShowDelaunay->setChecked(true); + this->actionShowTriangulationInDomain->setChecked(false); this->actionShow_faces_in_domain->setChecked(true); this->actionShow_constrained_edges->setChecked(true); this->actionShow_voronoi_edges->setChecked(false); @@ -390,6 +393,23 @@ void MainWindow::on_actionShowDelaunay_toggled(bool checked) { dgi->setVisibleEdges(checked); + if(checked) + { + dgi->setVisibleInsideEdges(false); + actionShowTriangulationInDomain->setChecked(false); + } + update(); +} + +void +MainWindow::on_actionShowTriangulationInDomain_toggled(bool checked) +{ + dgi->setVisibleInsideEdges(checked); + if(checked) + { + dgi->setVisibleEdges(false); + actionShowDelaunay->setChecked(false); + } update(); } diff --git a/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.ui b/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.ui index bff01e1cd15..888a012378f 100644 --- a/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.ui +++ b/GraphicsView/demo/Triangulation_2/Constrained_Delaunay_triangulation_2.ui @@ -110,6 +110,7 @@ + @@ -368,6 +369,14 @@ Show seeds + + + true + + + Show triangulation in domain only + + diff --git a/GraphicsView/include/CGAL/Qt/DelaunayMeshTriangulationGraphicsItem.h b/GraphicsView/include/CGAL/Qt/DelaunayMeshTriangulationGraphicsItem.h index aa54fcfb633..ac25d265936 100644 --- a/GraphicsView/include/CGAL/Qt/DelaunayMeshTriangulationGraphicsItem.h +++ b/GraphicsView/include/CGAL/Qt/DelaunayMeshTriangulationGraphicsItem.h @@ -32,7 +32,8 @@ namespace CGAL { namespace Qt { template -class DelaunayMeshTriangulationGraphicsItem : public ConstrainedTriangulationGraphicsItem +class DelaunayMeshTriangulationGraphicsItem + : public ConstrainedTriangulationGraphicsItem { typedef ConstrainedTriangulationGraphicsItem Base; typedef typename T::Geom_traits Geom_traits; @@ -49,6 +50,7 @@ public: , seeds_begin() , seeds_end() , visible_seeds(false) + , visible_inside_edges(false) { setSeedsPen(QPen(::Qt::black, 10.)); } @@ -143,6 +145,18 @@ public: this->update(); } + bool visibleInsideEdges() const + { + return visible_inside_edges; + } + + void setVisibleInsideEdges(const bool b) + { + visible_inside_edges = b; + update(); + } + + protected: void drawAll(QPainter *painter); void paintSeeds(QPainter *painter); @@ -151,6 +165,7 @@ protected: bool visible_blind_faces; bool visible_voronoi; bool visible_seeds; + bool visible_inside_edges; typename std::list::iterator seeds_begin, seeds_end; QBrush in_domain_brush; @@ -177,6 +192,20 @@ DelaunayMeshTriangulationGraphicsItem::drawAll(QPainter *painter) } painter->setBrush(::Qt::NoBrush); } + if(visibleInsideEdges()) + { + this->painterostream = PainterOstream(painter); + painter->setBrush(::Qt::NoBrush); + painter->setPen(this->edgesPen()); + for(typename T::Finite_faces_iterator fit = this->t->finite_faces_begin(); + fit != this->t->finite_faces_end(); + ++fit){ + if(fit->is_in_domain()){ + this->painterostream << this->t->triangle(fit); + } + } + painter->setBrush(::Qt::NoBrush); + } if(visibleBlindFaces()) { this->painterostream = PainterOstream(painter);