42 #ifndef OPENMESH_POLYCONNECTIVITY_HH
43 #define OPENMESH_POLYCONNECTIVITY_HH
45 #include <OpenMesh/Core/Mesh/ArrayKernel.hh>
46 #include <OpenMesh/Core/Mesh/IteratorsT.hh>
47 #include <OpenMesh/Core/Mesh/CirculatorsT.hh>
167 inline static bool is_triangles()
181 {
return new_vertex(); }
190 FaceHandle add_face(
const std::vector<VertexHandle>& _vhandles);
243 void delete_vertex(
VertexHandle _vh,
bool _delete_isolated_vertices =
true);
253 void delete_edge(
EdgeHandle _eh,
bool _delete_isolated_vertices=
true);
265 void delete_face(
FaceHandle _fh,
bool _delete_isolated_vertices=
true);
325 template<
typename CONTAINER_TYPE,
typename ITER_TYPE, ITER_TYPE (CONTAINER_TYPE::*begin_fn)(), ITER_TYPE (CONTAINER_TYPE::*end_fn)()>
328 EntityRange(CONTAINER_TYPE &container) : container_(container) {}
329 ITER_TYPE begin() {
return (container_.*begin_fn)(); }
330 ITER_TYPE end() {
return (container_.*end_fn)(); }
333 CONTAINER_TYPE &container_;
608 return (is_boundary(halfedge_handle(_eh, 0)) ||
609 is_boundary(halfedge_handle(_eh, 1)));
626 return (!(heh.
is_valid() && face_handle(heh).is_valid()));
638 bool is_boundary(
FaceHandle _fh,
bool _check_vertex=
false)
const;
658 {
return face_handle(opposite_halfedge_handle(_heh)); }
700 bool is_simply_connected(
FaceHandle _fh)
const;
828 struct AddFaceEdgeInfo
834 std::vector<AddFaceEdgeInfo> edgeData_;
835 std::vector<std::pair<HalfedgeHandle, HalfedgeHandle> > next_cache_;
836 uint next_cache_count_;
842 #endif//OPENMESH_POLYCONNECTIVITY_HH