42#ifndef OPENMESH_POLYCONNECTIVITY_INTERFACE_INCLUDE
43#error Do not include this directly, include instead PolyConnectivity.hh
46#include <OpenMesh/Core/Mesh/PolyConnectivity.hh>
54struct SmartVertexHandle;
55struct SmartHalfedgeHandle;
56struct SmartEdgeHandle;
57struct SmartFaceHandle;
79template <
typename HandleType>
100template <
typename HandleType>
164 uint valence()
const;
166 bool is_manifold()
const;
260 uint valence()
const;
284template <
typename HandleT>
293template <
typename HandleType>
296 const auto& handle =
static_cast<const HandleType&
>(*this);
297 assert(handle.mesh() !=
nullptr);
298 return handle.mesh()->status(handle).feature();
301template <
typename HandleType>
304 const auto& handle =
static_cast<const HandleType&
>(*this);
305 assert(handle.mesh() !=
nullptr);
306 return handle.mesh()->status(handle).selected();
309template <
typename HandleType>
312 const auto& handle =
static_cast<const HandleType&
>(*this);
313 assert(handle.mesh() !=
nullptr);
314 return handle.mesh()->status(handle).tagged();
317template <
typename HandleType>
320 const auto& handle =
static_cast<const HandleType&
>(*this);
321 assert(handle.mesh() !=
nullptr);
322 return handle.mesh()->status(handle).tagged2();
325template <
typename HandleType>
328 const auto& handle =
static_cast<const HandleType&
>(*this);
329 assert(handle.mesh() !=
nullptr);
330 return handle.mesh()->status(handle).locked();
333template <
typename HandleType>
336 const auto& handle =
static_cast<const HandleType&
>(*this);
337 assert(handle.mesh() !=
nullptr);
338 return handle.mesh()->status(handle).hidden();
341template <
typename HandleType>
344 const auto& handle =
static_cast<const HandleType&
>(*this);
345 assert(handle.mesh() !=
nullptr);
346 return handle.mesh()->status(handle).deleted();
349template <
typename HandleType>
352 const auto& handle =
static_cast<const HandleType&
>(*this);
353 assert(handle.mesh() !=
nullptr);
354 return handle.mesh()->is_boundary(handle);
359 assert(
mesh() !=
nullptr);
375 assert(
mesh() !=
nullptr);
381 assert(
mesh() !=
nullptr);
387 assert(
mesh() !=
nullptr);
393 assert(
mesh() !=
nullptr);
399 assert(
mesh() !=
nullptr);
405 assert(
mesh() !=
nullptr);
411 assert(
mesh() !=
nullptr);
417 assert(
mesh() !=
nullptr);
423 assert(
mesh() !=
nullptr);
429 assert(
mesh() !=
nullptr);
470 assert(
mesh() !=
nullptr);
476 assert(
mesh() !=
nullptr);
int idx() const
Get the underlying index of this handle.
Generic class for iterator ranges.
Connectivity Class for polygonal meshes.
uint valence(VertexHandle _vh) const
Vertex valence.
bool is_manifold(VertexHandle _vh) const
Is (the mesh at) vertex _vh two-manifold ?
Base class for all smart handle types.
const PolyConnectivity * mesh() const
Get the underlying mesh of this handle.
Base class for all smart handle types that contains status related methods.
bool is_boundary() const
Returns true iff the handle is boundary.
Base class for all smart handle types that contains status related methods.
bool selected() const
Returns true iff the handle is marked as selected.
bool feature() const
Returns true iff the handle is marked as feature.
bool locked() const
Returns true iff the handle is marked as locked.
bool deleted() const
Returns true iff the handle is marked as deleted.
bool tagged() const
Returns true iff the handle is marked as tagged.
bool tagged2() const
Returns true iff the handle is marked as tagged2.
bool hidden() const
Returns true iff the handle is marked as hidden.
SmartVertexHandle make_smart(VertexHandle _vh, const PolyConnectivity *_mesh)
Creats a SmartVertexHandle from a VertexHandle and a Mesh.
Handle for a edge entity.
Handle for a face entity.
Handle for a halfedge entity.
SmartVertexHandle v(unsigned int _i) const
Shorthand for vertex()
SmartVertexHandle v1() const
Shorthand for vertex(1)
SmartHalfedgeHandle h(unsigned int _i) const
Shorthand for halfedge()
SmartHalfedgeHandle h1() const
Shorthand for halfedge(1)
SmartVertexHandle vertex(unsigned int _i) const
Returns one of the two incident vertices of the edge.
SmartVertexHandle v0() const
Shorthand for vertex(0)
SmartHalfedgeHandle halfedge(unsigned int _i) const
Returns one of the two halfedges of the edge.
SmartHalfedgeHandle h0() const
Shorthand for halfedge(0)
uint valence() const
Returns the valence of the face.
SmartHalfedgeHandle halfedge() const
Returns one of the halfedges of the face.
SmartFaceHandle face() const
Returns incident face of halfedge.
SmartVertexHandle from() const
Returns vertex at start of halfedge.
SmartHalfedgeHandle next() const
Returns next halfedge handle.
SmartHalfedgeHandle prev() const
Returns previous halfedge handle.
SmartEdgeHandle edge() const
Returns incident edge of halfedge.
SmartHalfedgeHandle opp() const
Returns opposite halfedge handle.
SmartVertexHandle to() const
Returns vertex pointed to by halfedge.
Smart version of VertexHandle contains a pointer to the corresponding mesh and allows easier access t...
SmartHalfedgeHandle halfedge() const
Returns an outgoing halfedge.
SmartHalfedgeHandle out() const
Returns an outgoing halfedge.
bool is_manifold() const
Returns true iff (the mesh at) the vertex is two-manifold ?
SmartHalfedgeHandle in() const
Returns an incoming halfedge.
uint valence() const
Returns valence of the vertex.
Handle for a vertex entity.