13 #include <CGAL/boost/graph/internal/helpers.h>
14 #include <boost/graph/graph_traits.hpp>
15 #include <CGAL/boost/graph/iterator.h>
17 #include <CGAL/boost/graph/Euler_operations.h>
19 #include <CGAL/boost/graph/helpers.h>
40 template<
typename MutableFaceGraph >
44 typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &h)
48 typedef boost::graph_traits< MutableFaceGraph > GraphTraits;
49 typedef typename GraphTraits::halfedge_descriptor halfedge_descriptor;
51 typedef typename GraphTraits::face_descriptor face_descriptor;
54 if(h == boost::graph_traits< MutableFaceGraph >::null_halfedge())
57 halfedge_descriptor opp_h =
opposite(h, g);
59 if(CGAL::is_border(h, g))
63 else if(CGAL::is_border(opp_h, g))
69 if(!CGAL::is_triangle(h, g) || !CGAL::is_triangle(opp_h, g))
77 typedef CGAL::Halfedge_around_face_iterator< MutableFaceGraph >
78 Halfedge_around_face_iterator;
81 std::vector< vertex_descriptor > face_vertices;
86 halfedge_descriptor h1 =
next(h, g), h2 =
prev(h, g);
87 halfedge_descriptor h3 =
next(opp_h, g), h4 =
prev(opp_h, g);
89 CGAL::internal::set_border(h1, g);
90 CGAL::internal::set_border(h2, g);
93 CGAL::internal::set_border(h3, g);
94 CGAL::internal::set_border(h4, g);
96 face_vertices.push_back(vs);
97 face_vertices.push_back(opp_v2);
98 face_vertices.push_back(opp_v1);
100 face_vertices.clear();
101 face_vertices.push_back(opp_v1);
102 face_vertices.push_back(opp_v2);
103 face_vertices.push_back(vt);
106 Halfedge_around_face_iterator hi, he;
108 for(boost::tie(hi, he) = CGAL::halfedges_around_face(
halfedge(f1, g), g);
112 if(CGAL::is_border_edge(*hi, g))
115 CGAL::internal::set_border(
opposite(*hi, g), g);
118 for(boost::tie(hi, he) = CGAL::halfedges_around_face(
halfedge(f2, g), g);
122 if(CGAL::is_border_edge(*hi, g))
125 CGAL::internal::set_border(
opposite(*hi, g), g);