OpenMesh
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
OpenMesh::ArrayKernel Class Reference

Mesh kernel using arrays for mesh item storage. More...

#include <OpenMesh/Core/Mesh/ArrayKernel.hh>

Inheritance diagram for OpenMesh::ArrayKernel:
Collaboration diagram for OpenMesh::ArrayKernel:

Classes

class  AutoStatusSetT
 — AutoStatusSet API — More...
class  ExtStatusSetT
 — ExtStatusSet API — (hybrid between a set and an array) More...
class  StatusSetT
 — StatusSet API — More...

Public Types

typedef OpenMesh::VertexHandle VertexHandle
typedef OpenMesh::HalfedgeHandle HalfedgeHandle
typedef OpenMesh::EdgeHandle EdgeHandle
typedef OpenMesh::FaceHandle FaceHandle
typedef Attributes::StatusInfo StatusInfo
typedef VPropHandleT< StatusInfoVertexStatusPropertyHandle
typedef HPropHandleT< StatusInfoHalfedgeStatusPropertyHandle
typedef EPropHandleT< StatusInfoEdgeStatusPropertyHandle
typedef FPropHandleT< StatusInfoFaceStatusPropertyHandle
typedef AutoStatusSetT
< VertexHandle
VertexStatusSet
typedef AutoStatusSetT
< EdgeHandle
EdgeStatusSet
typedef AutoStatusSetT
< FaceHandle
FaceStatusSet
typedef AutoStatusSetT
< HalfedgeHandle
HalfedgeStatusSet
typedef ExtStatusSetT< FaceHandleExtFaceStatusSet
typedef ExtStatusSetT
< VertexHandle
ExtVertexStatusSet
typedef ExtStatusSetT< EdgeHandleExtEdgeStatusSet
typedef ExtStatusSetT
< HalfedgeHandle
ExtHalfedgeStatusSet
- Public Types inherited from OpenMesh::BaseKernel
typedef PropertyContainer::iterator prop_iterator
typedef
PropertyContainer::const_iterator 
const_prop_iterator

Public Member Functions

void assign_connectivity (const ArrayKernel &_other)
 ArrayKernel uses the default copy constructor and assignment operator, which means that the connectivity and all properties are copied, including reference counters, allocated bit status masks, etc.
VertexHandle handle (const Vertex &_v) const
HalfedgeHandle handle (const Halfedge &_he) const
EdgeHandle handle (const Edge &_e) const
FaceHandle handle (const Face &_f) const
bool is_valid_handle (VertexHandle _vh) const
bool is_valid_handle (HalfedgeHandle _heh) const
bool is_valid_handle (EdgeHandle _eh) const
bool is_valid_handle (FaceHandle _fh) const
const Vertex & vertex (VertexHandle _vh) const
Vertex & vertex (VertexHandle _vh)
const Halfedge & halfedge (HalfedgeHandle _heh) const
Halfedge & halfedge (HalfedgeHandle _heh)
const Edge & edge (EdgeHandle _eh) const
Edge & edge (EdgeHandle _eh)
const Face & face (FaceHandle _fh) const
Face & face (FaceHandle _fh)
VertexHandle vertex_handle (unsigned int _i) const
HalfedgeHandle halfedge_handle (unsigned int _i) const
EdgeHandle edge_handle (unsigned int _i) const
FaceHandle face_handle (unsigned int _i) const
VertexHandle new_vertex ()
HalfedgeHandle new_edge (VertexHandle _start_vh, VertexHandle _end_vh)
FaceHandle new_face ()
FaceHandle new_face (const Face &_f)
void resize (unsigned int _n_vertices, unsigned int _n_edges, unsigned int _n_faces)
void reserve (unsigned int _n_vertices, unsigned int _n_edges, unsigned int _n_faces)
void garbage_collection (bool _v=true, bool _e=true, bool _f=true)
 garbage collection
template<typename std_API_Container_VHandlePointer , typename std_API_Container_HHandlePointer , typename std_API_Container_FHandlePointer >
void garbage_collection (std_API_Container_VHandlePointer &vh_to_update, std_API_Container_HHandlePointer &hh_to_update, std_API_Container_FHandlePointer &fh_to_update, bool _v=true, bool _e=true, bool _f=true)
 garbage collection with handle tracking
void clear ()
 Clear the whole mesh.
void clean ()
 Reset the whole mesh.
unsigned int n_vertices () const
unsigned int n_halfedges () const
unsigned int n_edges () const
unsigned int n_faces () const
bool vertices_empty () const
bool halfedges_empty () const
bool edges_empty () const
bool faces_empty () const
HalfedgeHandle halfedge_handle (VertexHandle _vh) const
void set_halfedge_handle (VertexHandle _vh, HalfedgeHandle _heh)
bool is_isolated (VertexHandle _vh) const
void set_isolated (VertexHandle _vh)
unsigned int delete_isolated_vertices ()
VertexHandle to_vertex_handle (HalfedgeHandle _heh) const
VertexHandle from_vertex_handle (HalfedgeHandle _heh) const
void set_vertex_handle (HalfedgeHandle _heh, VertexHandle _vh)
FaceHandle face_handle (HalfedgeHandle _heh) const
void set_face_handle (HalfedgeHandle _heh, FaceHandle _fh)
void set_boundary (HalfedgeHandle _heh)
bool is_boundary (HalfedgeHandle _heh) const
 Is halfedge _heh a boundary halfedge (is its face handle invalid) ?
HalfedgeHandle next_halfedge_handle (HalfedgeHandle _heh) const
void set_next_halfedge_handle (HalfedgeHandle _heh, HalfedgeHandle _nheh)
void set_prev_halfedge_handle (HalfedgeHandle _heh, HalfedgeHandle _pheh)
void set_prev_halfedge_handle (HalfedgeHandle _heh, HalfedgeHandle _pheh, GenProg::True)
void set_prev_halfedge_handle (HalfedgeHandle, HalfedgeHandle, GenProg::False)
HalfedgeHandle prev_halfedge_handle (HalfedgeHandle _heh) const
HalfedgeHandle prev_halfedge_handle (HalfedgeHandle _heh, GenProg::True) const
HalfedgeHandle prev_halfedge_handle (HalfedgeHandle _heh, GenProg::False) const
HalfedgeHandle opposite_halfedge_handle (HalfedgeHandle _heh) const
HalfedgeHandle ccw_rotated_halfedge_handle (HalfedgeHandle _heh) const
HalfedgeHandle cw_rotated_halfedge_handle (HalfedgeHandle _heh) const
HalfedgeHandle halfedge_handle (EdgeHandle _eh, unsigned int _i) const
EdgeHandle edge_handle (HalfedgeHandle _heh) const
HalfedgeHandle halfedge_handle (FaceHandle _fh) const
void set_halfedge_handle (FaceHandle _fh, HalfedgeHandle _heh)
const StatusInfostatus (VertexHandle _vh) const
 Status Query API.
StatusInfostatus (VertexHandle _vh)
const StatusInfostatus (HalfedgeHandle _hh) const
StatusInfostatus (HalfedgeHandle _hh)
const StatusInfostatus (EdgeHandle _eh) const
StatusInfostatus (EdgeHandle _eh)
const StatusInfostatus (FaceHandle _fh) const
StatusInfostatus (FaceHandle _fh)
bool has_vertex_status () const
bool has_halfedge_status () const
bool has_edge_status () const
bool has_face_status () const
VertexStatusPropertyHandle vertex_status_pph () const
HalfedgeStatusPropertyHandle halfedge_status_pph () const
EdgeStatusPropertyHandle edge_status_pph () const
FaceStatusPropertyHandle face_status_pph () const
VertexStatusPropertyHandle status_pph (VertexHandle) const
 status property by handle
HalfedgeStatusPropertyHandle status_pph (HalfedgeHandle) const
EdgeStatusPropertyHandle status_pph (EdgeHandle) const
FaceStatusPropertyHandle status_pph (FaceHandle) const
void request_vertex_status ()
 Status Request API.
void request_halfedge_status ()
void request_edge_status ()
void request_face_status ()
void release_vertex_status ()
 Status Release API.
void release_halfedge_status ()
void release_edge_status ()
void release_face_status ()
- Public Member Functions inherited from OpenMesh::BaseKernel
template<class T >
void copy_property (VPropHandleT< T > &_ph, VertexHandle _vh_from, VertexHandle _vh_to)
 Copies a single property from one mesh element to another (of the same type)
template<class T >
void copy_property (HPropHandleT< T > _ph, HalfedgeHandle _hh_from, HalfedgeHandle _hh_to)
 Copies a single property from one mesh element to another (of the same type)
template<class T >
void copy_property (EPropHandleT< T > _ph, EdgeHandle _eh_from, EdgeHandle _eh_to)
 Copies a single property from one mesh element to another (of the same type)
template<class T >
void copy_property (FPropHandleT< T > _ph, FaceHandle _fh_from, FaceHandle _fh_to)
 Copies a single property from one mesh element to another (of the same type)
void copy_all_properties (VertexHandle _vh_from, VertexHandle _vh_to, bool _copyBuildIn=false)
 Copies all properties from one mesh element to another (of the same type)
void copy_all_properties (HalfedgeHandle _hh_from, HalfedgeHandle _hh_to, bool _copyBuildIn=false)
 Copies all properties from one mesh element to another (of the same type)
void copy_all_properties (EdgeHandle _eh_from, EdgeHandle _eh_to, bool _copyBuildIn=false)
 Copies all properties from one mesh element to another (of the same type)
void copy_all_properties (FaceHandle _fh_from, FaceHandle _fh_to, bool _copyBuildIn=false)
 Copies all properties from one mesh element to another (of the same type)
size_t n_vprops (void) const
size_t n_eprops (void) const
size_t n_hprops (void) const
size_t n_fprops (void) const
size_t n_mprops (void) const
BaseProperty_get_vprop (const std::string &_name)
BaseProperty_get_eprop (const std::string &_name)
BaseProperty_get_hprop (const std::string &_name)
BaseProperty_get_fprop (const std::string &_name)
BaseProperty_get_mprop (const std::string &_name)
const BaseProperty_get_vprop (const std::string &_name) const
const BaseProperty_get_eprop (const std::string &_name) const
const BaseProperty_get_hprop (const std::string &_name) const
const BaseProperty_get_fprop (const std::string &_name) const
const BaseProperty_get_mprop (const std::string &_name) const
BaseProperty_vprop (size_t _idx)
BaseProperty_eprop (size_t _idx)
BaseProperty_hprop (size_t _idx)
BaseProperty_fprop (size_t _idx)
BaseProperty_mprop (size_t _idx)
const BaseProperty_vprop (size_t _idx) const
const BaseProperty_eprop (size_t _idx) const
const BaseProperty_hprop (size_t _idx) const
const BaseProperty_fprop (size_t _idx) const
const BaseProperty_mprop (size_t _idx) const
size_t _add_vprop (BaseProperty *_bp)
size_t _add_eprop (BaseProperty *_bp)
size_t _add_hprop (BaseProperty *_bp)
size_t _add_fprop (BaseProperty *_bp)
size_t _add_mprop (BaseProperty *_bp)
void property_stats (std::ostream &_ostr=std::clog) const
void vprop_stats (std::string &_string) const
void hprop_stats (std::string &_string) const
void eprop_stats (std::string &_string) const
void fprop_stats (std::string &_string) const
void mprop_stats (std::string &_string) const
void vprop_stats (std::ostream &_ostr=std::clog) const
void hprop_stats (std::ostream &_ostr=std::clog) const
void eprop_stats (std::ostream &_ostr=std::clog) const
void fprop_stats (std::ostream &_ostr=std::clog) const
void mprop_stats (std::ostream &_ostr=std::clog) const
prop_iterator vprops_begin ()
prop_iterator vprops_end ()
const_prop_iterator vprops_begin () const
const_prop_iterator vprops_end () const
prop_iterator eprops_begin ()
prop_iterator eprops_end ()
const_prop_iterator eprops_begin () const
const_prop_iterator eprops_end () const
prop_iterator hprops_begin ()
prop_iterator hprops_end ()
const_prop_iterator hprops_begin () const
const_prop_iterator hprops_end () const
prop_iterator fprops_begin ()
prop_iterator fprops_end ()
const_prop_iterator fprops_begin () const
const_prop_iterator fprops_end () const
prop_iterator mprops_begin ()
prop_iterator mprops_end ()
const_prop_iterator mprops_begin () const
const_prop_iterator mprops_end () const
template<class T >
void add_property (VPropHandleT< T > &_ph, const std::string &_name="<vprop>")
 Adds a property.
template<class T >
void add_property (HPropHandleT< T > &_ph, const std::string &_name="<hprop>")
 Adds a property.
template<class T >
void add_property (EPropHandleT< T > &_ph, const std::string &_name="<eprop>")
 Adds a property.
template<class T >
void add_property (FPropHandleT< T > &_ph, const std::string &_name="<fprop>")
 Adds a property.
template<class T >
void add_property (MPropHandleT< T > &_ph, const std::string &_name="<mprop>")
 Adds a property.
template<typename T >
void remove_property (VPropHandleT< T > &_ph)
 Remove a property.
template<typename T >
void remove_property (HPropHandleT< T > &_ph)
 Remove a property.
template<typename T >
void remove_property (EPropHandleT< T > &_ph)
 Remove a property.
template<typename T >
void remove_property (FPropHandleT< T > &_ph)
 Remove a property.
template<typename T >
void remove_property (MPropHandleT< T > &_ph)
 Remove a property.
template<class T >
bool get_property_handle (VPropHandleT< T > &_ph, const std::string &_name) const
 Retrieves the handle to a named property by it's name.
template<class T >
bool get_property_handle (HPropHandleT< T > &_ph, const std::string &_name) const
 Retrieves the handle to a named property by it's name.
template<class T >
bool get_property_handle (EPropHandleT< T > &_ph, const std::string &_name) const
 Retrieves the handle to a named property by it's name.
template<class T >
bool get_property_handle (FPropHandleT< T > &_ph, const std::string &_name) const
 Retrieves the handle to a named property by it's name.
template<class T >
bool get_property_handle (MPropHandleT< T > &_ph, const std::string &_name) const
 Retrieves the handle to a named property by it's name.
template<class T >
PropertyT< T > & property (VPropHandleT< T > _ph)
 Access a property.
template<class T >
const PropertyT< T > & property (VPropHandleT< T > _ph) const
 Access a property.
template<class T >
PropertyT< T > & property (HPropHandleT< T > _ph)
 Access a property.
template<class T >
const PropertyT< T > & property (HPropHandleT< T > _ph) const
 Access a property.
template<class T >
PropertyT< T > & property (EPropHandleT< T > _ph)
 Access a property.
template<class T >
const PropertyT< T > & property (EPropHandleT< T > _ph) const
 Access a property.
template<class T >
PropertyT< T > & property (FPropHandleT< T > _ph)
 Access a property.
template<class T >
const PropertyT< T > & property (FPropHandleT< T > _ph) const
 Access a property.
template<class T >
PropertyT< T > & mproperty (MPropHandleT< T > _ph)
 Access a property.
template<class T >
const PropertyT< T > & mproperty (MPropHandleT< T > _ph) const
 Access a property.
template<class T >
VPropHandleT< T >::reference property (VPropHandleT< T > _ph, VertexHandle _vh)
 Return value of property for an item.
template<class T >
VPropHandleT< T >::const_reference property (VPropHandleT< T > _ph, VertexHandle _vh) const
 Return value of property for an item.
template<class T >
HPropHandleT< T >::reference property (HPropHandleT< T > _ph, HalfedgeHandle _hh)
 Return value of property for an item.
template<class T >
HPropHandleT< T >::const_reference property (HPropHandleT< T > _ph, HalfedgeHandle _hh) const
 Return value of property for an item.
template<class T >
EPropHandleT< T >::reference property (EPropHandleT< T > _ph, EdgeHandle _eh)
 Return value of property for an item.
template<class T >
EPropHandleT< T >::const_reference property (EPropHandleT< T > _ph, EdgeHandle _eh) const
 Return value of property for an item.
template<class T >
FPropHandleT< T >::reference property (FPropHandleT< T > _ph, FaceHandle _fh)
 Return value of property for an item.
template<class T >
FPropHandleT< T >::const_reference property (FPropHandleT< T > _ph, FaceHandle _fh) const
 Return value of property for an item.
template<class T >
MPropHandleT< T >::reference property (MPropHandleT< T > _ph)
 Return value of property for an item.
template<class T >
MPropHandleT< T >::const_reference property (MPropHandleT< T > _ph) const
 Return value of property for an item.

Friends

class StatusSetT< VertexHandle >
class StatusSetT< EdgeHandle >
class StatusSetT< FaceHandle >
class StatusSetT< HalfedgeHandle >
class AutoStatusSetT< VertexHandle >
class AutoStatusSetT< EdgeHandle >
class AutoStatusSetT< FaceHandle >
class AutoStatusSetT< HalfedgeHandle >

Additional Inherited Members

- Protected Member Functions inherited from OpenMesh::BaseKernel
BaseProperty_vprop (BaseHandle _h)
BaseProperty_eprop (BaseHandle _h)
BaseProperty_hprop (BaseHandle _h)
BaseProperty_fprop (BaseHandle _h)
BaseProperty_mprop (BaseHandle _h)
const BaseProperty_vprop (BaseHandle _h) const
const BaseProperty_eprop (BaseHandle _h) const
const BaseProperty_hprop (BaseHandle _h) const
const BaseProperty_fprop (BaseHandle _h) const
const BaseProperty_mprop (BaseHandle _h) const
void vprops_reserve (unsigned int _n) const
void vprops_resize (unsigned int _n) const
void vprops_clear ()
void vprops_swap (unsigned int _i0, unsigned int _i1) const
void hprops_reserve (unsigned int _n) const
void hprops_resize (unsigned int _n) const
void hprops_clear ()
void hprops_swap (unsigned int _i0, unsigned int _i1) const
void eprops_reserve (unsigned int _n) const
void eprops_resize (unsigned int _n) const
void eprops_clear ()
void eprops_swap (unsigned int _i0, unsigned int _i1) const
void fprops_reserve (unsigned int _n) const
void fprops_resize (unsigned int _n) const
void fprops_clear ()
void fprops_swap (unsigned int _i0, unsigned int _i1) const
void mprops_resize (unsigned int _n) const
void mprops_clear ()

Detailed Description

Mesh kernel using arrays for mesh item storage.

This mesh kernel uses the std::vector as container to store the mesh items. Therefore all handle types are internally represented by integers. To get the index from a handle use the handle's idx() method.

Note
For a description of the minimal kernel interface see OpenMesh::Mesh::BaseKernel.
You do not have to use this class directly, use the predefined mesh-kernel combinations in Predefined Mesh Types.
See Also
OpenMesh::Concepts::KernelT, Specifying your MyMesh

Member Function Documentation

void OpenMesh::ArrayKernel::assign_connectivity ( const ArrayKernel _other)

ArrayKernel uses the default copy constructor and assignment operator, which means that the connectivity and all properties are copied, including reference counters, allocated bit status masks, etc.

. In contrast assign_connectivity copies only the connectivity, i.e. vertices, edges, faces and their status fields. NOTE: The geometry (the points property) is NOT copied. Poly/TriConnectivity override(and hide) that function to provide connectivity consistence.

void OpenMesh::ArrayKernel::clean ( )

Reset the whole mesh.

This will remove all elements from the mesh but keeps the properties

void OpenMesh::ArrayKernel::clear ( void  )

Clear the whole mesh.

This will remove all properties and elements from the mesh

void OpenMesh::ArrayKernel::garbage_collection ( bool  _v = true,
bool  _e = true,
bool  _f = true 
)

garbage collection

Usually if you delete primitives in OpenMesh, they are only flagged as deleted. Only when you call garbage collection, they will be actually removed.

Note
Garbage collection invalidates all handles. If you need to keep track of a set of handles, you can pass them to the second garbage collection function, which will update a vector of handles. See also Deleted Elements.
Parameters
_vRemove deleted vertices?
_eRemove deleted edges?
_fRemove deleted faces?
template<typename std_API_Container_VHandlePointer , typename std_API_Container_HHandlePointer , typename std_API_Container_FHandlePointer >
void OpenMesh::ArrayKernel::garbage_collection ( std_API_Container_VHandlePointer &  vh_to_update,
std_API_Container_HHandlePointer &  hh_to_update,
std_API_Container_FHandlePointer &  fh_to_update,
bool  _v = true,
bool  _e = true,
bool  _f = true 
)

garbage collection with handle tracking

Usually if you delete primitives in OpenMesh, they are only flagged as deleted. Only when you call garbage collection, they will be actually removed.

Note
Garbage collection invalidates all handles. If you need to keep track of a set of handles, you can pass them to this function. The handles that the given pointers point to are updated in place. See also Deleted Elements.
Parameters
vh_to_updatePointers to vertex handles that should get updated
hh_to_updatePointers to halfedge handles that should get updated
fh_to_updatePointers to face handles that should get updated
_vRemove deleted vertices?
_eRemove deleted edges?
_fRemove deleted faces?

The documentation for this class was generated from the following files:

acg pic Project OpenMesh, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .