OpenMesh
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
 AutoStatusSetT: A status set that automatically picks a status bit. More...
 
class  ExtStatusSetT
 ExtStatusSet: A status set augmented with 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< VertexHandleVertexStatusSet
 
typedef AutoStatusSetT< EdgeHandleEdgeStatusSet
 
typedef AutoStatusSetT< FaceHandleFaceStatusSet
 
typedef AutoStatusSetT< HalfedgeHandleHalfedgeStatusSet
 
typedef ExtStatusSetT< FaceHandleExtFaceStatusSet
 
typedef ExtStatusSetT< VertexHandleExtVertexStatusSet
 
typedef ExtStatusSetT< EdgeHandleExtEdgeStatusSet
 
typedef ExtStatusSetT< HalfedgeHandleExtHalfedgeStatusSet
 
- Public Types inherited from OpenMesh::BaseKernel
typedef PropertyContainer::iterator prop_iterator
 You should not use this function directly. More...
 
typedef PropertyContainer::const_iterator const_prop_iterator
 You should not use this function directly. More...
 

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. More...
 
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
 checks handle validity - useful for debugging
 
bool is_valid_handle (HalfedgeHandle _heh) const
 checks handle validity - useful for debugging
 
bool is_valid_handle (EdgeHandle _eh) const
 checks handle validity - useful for debugging
 
bool is_valid_handle (FaceHandle _fh) const
 checks handle validity - useful for debugging
 
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 ()
 Add a new vertex. More...
 
VertexHandle new_vertex_dirty ()
 Same as new_vertex() but uses PropertyContainer::resize_if_smaller() to resize the vertex property container. More...
 
HalfedgeHandle new_edge (VertexHandle _start_vh, VertexHandle _end_vh)
 
FaceHandle new_face ()
 
FaceHandle new_face (const Face &_f)
 
void resize (size_t _n_vertices, size_t _n_edges, size_t _n_faces)
 
void reserve (size_t _n_vertices, size_t _n_edges, size_t _n_faces)
 
void garbage_collection (bool _v=true, bool _e=true, bool _f=true)
 garbage collection More...
 
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 More...
 
void clear ()
 Does the same as clean() and in addition erases all properties.
 
void clean ()
 Remove all vertices, edges and faces and deallocates their memory. More...
 
void clean_keep_reservation ()
 Remove all vertices, edges and faces but keep memory allocated. More...
 
size_t n_vertices () const override
 You should not use this function directly. More...
 
size_t n_halfedges () const override
 You should not use this function directly. More...
 
size_t n_edges () const override
 You should not use this function directly. More...
 
size_t n_faces () const override
 You should not use this function directly. More...
 
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::TrueType)
 
void set_prev_halfedge_handle (HalfedgeHandle, HalfedgeHandle, GenProg::FalseType)
 
HalfedgeHandle prev_halfedge_handle (HalfedgeHandle _heh) const
 
HalfedgeHandle prev_halfedge_handle (HalfedgeHandle _heh, GenProg::TrueType) const
 
HalfedgeHandle prev_halfedge_handle (HalfedgeHandle _heh, GenProg::FalseType) 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=0) 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)
 
void reset_status ()
 Reinitializes the status of all vertices using the StatusInfo default constructor, i.e. More...
 
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<>
size_t n_elements () const
 
template<>
size_t n_elements () const
 
template<>
size_t n_elements () const
 
template<>
size_t n_elements () const
 
template<class T >
void add_property (VPropHandleT< T > &_ph, const std::string &_name="<vprop>")
 You should not use this function directly. More...
 
template<class T >
void add_property (HPropHandleT< T > &_ph, const std::string &_name="<hprop>")
 You should not use this function directly. More...
 
template<class T >
void add_property (EPropHandleT< T > &_ph, const std::string &_name="<eprop>")
 You should not use this function directly. More...
 
template<class T >
void add_property (FPropHandleT< T > &_ph, const std::string &_name="<fprop>")
 You should not use this function directly. More...
 
template<class T >
void add_property (MPropHandleT< T > &_ph, const std::string &_name="<mprop>")
 You should not use this function directly. More...
 
template<typename T >
void remove_property (VPropHandleT< T > &_ph)
 You should not use this function directly. More...
 
template<typename T >
void remove_property (HPropHandleT< T > &_ph)
 You should not use this function directly. More...
 
template<typename T >
void remove_property (EPropHandleT< T > &_ph)
 You should not use this function directly. More...
 
template<typename T >
void remove_property (FPropHandleT< T > &_ph)
 You should not use this function directly. More...
 
template<typename T >
void remove_property (MPropHandleT< T > &_ph)
 You should not use this function directly. More...
 
template<class T >
bool get_property_handle (VPropHandleT< T > &_ph, const std::string &_name) const
 You should not use this function directly. More...
 
template<class T >
bool get_property_handle (HPropHandleT< T > &_ph, const std::string &_name) const
 You should not use this function directly. More...
 
template<class T >
bool get_property_handle (EPropHandleT< T > &_ph, const std::string &_name) const
 You should not use this function directly. More...
 
template<class T >
bool get_property_handle (FPropHandleT< T > &_ph, const std::string &_name) const
 You should not use this function directly. More...
 
template<class T >
bool get_property_handle (MPropHandleT< T > &_ph, const std::string &_name) const
 You should not use this function directly. More...
 
template<class T >
PropertyT< T > & property (VPropHandleT< T > _ph)
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
const PropertyT< T > & property (VPropHandleT< T > _ph) const
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
PropertyT< T > & property (HPropHandleT< T > _ph)
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
const PropertyT< T > & property (HPropHandleT< T > _ph) const
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
PropertyT< T > & property (EPropHandleT< T > _ph)
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
const PropertyT< T > & property (EPropHandleT< T > _ph) const
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
PropertyT< T > & property (FPropHandleT< T > _ph)
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
const PropertyT< T > & property (FPropHandleT< T > _ph) const
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
PropertyT< T > & mproperty (MPropHandleT< T > _ph)
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
const PropertyT< T > & mproperty (MPropHandleT< T > _ph) const
 In most cases you should use the convenient PropertyManager wrapper and use of this function should not be necessary. More...
 
template<class T >
VPropHandleT< T >::reference property (VPropHandleT< T > _ph, VertexHandle _vh)
 You should not use this function directly. More...
 
template<class T >
VPropHandleT< T >::const_reference property (VPropHandleT< T > _ph, VertexHandle _vh) const
 You should not use this function directly. More...
 
template<class T >
HPropHandleT< T >::reference property (HPropHandleT< T > _ph, HalfedgeHandle _hh)
 You should not use this function directly. More...
 
template<class T >
HPropHandleT< T >::const_reference property (HPropHandleT< T > _ph, HalfedgeHandle _hh) const
 You should not use this function directly. More...
 
template<class T >
EPropHandleT< T >::reference property (EPropHandleT< T > _ph, EdgeHandle _eh)
 You should not use this function directly. More...
 
template<class T >
EPropHandleT< T >::const_reference property (EPropHandleT< T > _ph, EdgeHandle _eh) const
 You should not use this function directly. More...
 
template<class T >
FPropHandleT< T >::reference property (FPropHandleT< T > _ph, FaceHandle _fh)
 You should not use this function directly. More...
 
template<class T >
FPropHandleT< T >::const_reference property (FPropHandleT< T > _ph, FaceHandle _fh) const
 You should not use this function directly. More...
 
template<class T >
MPropHandleT< T >::reference property (MPropHandleT< T > _ph)
 You should not use this function directly. More...
 
template<class T >
MPropHandleT< T >::const_reference property (MPropHandleT< T > _ph) const
 You should not use this function directly. More...
 
template<class T >
void copy_property (VPropHandleT< T > &_ph, VertexHandle _vh_from, VertexHandle _vh_to)
 You should not use this function directly. More...
 
template<class T >
void copy_property (HPropHandleT< T > _ph, HalfedgeHandle _hh_from, HalfedgeHandle _hh_to)
 You should not use this function directly. More...
 
template<class T >
void copy_property (EPropHandleT< T > _ph, EdgeHandle _eh_from, EdgeHandle _eh_to)
 You should not use this function directly. More...
 
template<class T >
void copy_property (FPropHandleT< T > _ph, FaceHandle _fh_from, FaceHandle _fh_to)
 You should not use this function directly. More...
 
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) More...
 
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) More...
 
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) More...
 
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) More...
 
void copy_all_kernel_properties (const BaseKernel &_other)
 copy_all_kernel_properties uses the = operator to copy all properties from a given other BaseKernel. More...
 
size_t n_vprops (void) const
 You should not use this function directly. More...
 
size_t n_eprops (void) const
 You should not use this function directly. More...
 
size_t n_hprops (void) const
 You should not use this function directly. More...
 
size_t n_fprops (void) const
 You should not use this function directly. More...
 
size_t n_mprops (void) const
 You should not use this function directly. More...
 
BaseProperty_get_vprop (const std::string &_name)
 You should not use this function directly. More...
 
BaseProperty_get_eprop (const std::string &_name)
 You should not use this function directly. More...
 
BaseProperty_get_hprop (const std::string &_name)
 You should not use this function directly. More...
 
BaseProperty_get_fprop (const std::string &_name)
 You should not use this function directly. More...
 
BaseProperty_get_mprop (const std::string &_name)
 You should not use this function directly. More...
 
const BaseProperty_get_vprop (const std::string &_name) const
 You should not use this function directly. More...
 
const BaseProperty_get_eprop (const std::string &_name) const
 You should not use this function directly. More...
 
const BaseProperty_get_hprop (const std::string &_name) const
 You should not use this function directly. More...
 
const BaseProperty_get_fprop (const std::string &_name) const
 You should not use this function directly. More...
 
const BaseProperty_get_mprop (const std::string &_name) const
 You should not use this function directly. More...
 
BaseProperty_vprop (size_t _idx)
 You should not use this function directly. More...
 
BaseProperty_eprop (size_t _idx)
 You should not use this function directly. More...
 
BaseProperty_hprop (size_t _idx)
 You should not use this function directly. More...
 
BaseProperty_fprop (size_t _idx)
 You should not use this function directly. More...
 
BaseProperty_mprop (size_t _idx)
 You should not use this function directly. More...
 
const BaseProperty_vprop (size_t _idx) const
 You should not use this function directly. More...
 
const BaseProperty_eprop (size_t _idx) const
 You should not use this function directly. More...
 
const BaseProperty_hprop (size_t _idx) const
 You should not use this function directly. More...
 
const BaseProperty_fprop (size_t _idx) const
 You should not use this function directly. More...
 
const BaseProperty_mprop (size_t _idx) const
 You should not use this function directly. More...
 
size_t _add_vprop (BaseProperty *_bp)
 You should not use this function directly. More...
 
size_t _add_eprop (BaseProperty *_bp)
 You should not use this function directly. More...
 
size_t _add_hprop (BaseProperty *_bp)
 You should not use this function directly. More...
 
size_t _add_fprop (BaseProperty *_bp)
 You should not use this function directly. More...
 
size_t _add_mprop (BaseProperty *_bp)
 You should not use this function directly. More...
 
template<typename HandleT >
size_t n_elements () const
 You should not use this function directly. More...
 
void property_stats () const
 You should not use this function directly. More...
 
void property_stats (std::ostream &_ostr) const
 You should not use this function directly. More...
 
void vprop_stats (std::string &_string) const
 You should not use this function directly. More...
 
void hprop_stats (std::string &_string) const
 You should not use this function directly. More...
 
void eprop_stats (std::string &_string) const
 You should not use this function directly. More...
 
void fprop_stats (std::string &_string) const
 You should not use this function directly. More...
 
void mprop_stats (std::string &_string) const
 You should not use this function directly. More...
 
void vprop_stats () const
 You should not use this function directly. More...
 
void hprop_stats () const
 You should not use this function directly. More...
 
void eprop_stats () const
 You should not use this function directly. More...
 
void fprop_stats () const
 You should not use this function directly. More...
 
void mprop_stats () const
 You should not use this function directly. More...
 
void vprop_stats (std::ostream &_ostr) const
 You should not use this function directly. More...
 
void hprop_stats (std::ostream &_ostr) const
 You should not use this function directly. More...
 
void eprop_stats (std::ostream &_ostr) const
 You should not use this function directly. More...
 
void fprop_stats (std::ostream &_ostr) const
 You should not use this function directly. More...
 
void mprop_stats (std::ostream &_ostr) const
 You should not use this function directly. More...
 
prop_iterator vprops_begin ()
 You should not use this function directly. More...
 
prop_iterator vprops_end ()
 You should not use this function directly. More...
 
const_prop_iterator vprops_begin () const
 You should not use this function directly. More...
 
const_prop_iterator vprops_end () const
 You should not use this function directly. More...
 
prop_iterator eprops_begin ()
 You should not use this function directly. More...
 
prop_iterator eprops_end ()
 You should not use this function directly. More...
 
const_prop_iterator eprops_begin () const
 You should not use this function directly. More...
 
const_prop_iterator eprops_end () const
 You should not use this function directly. More...
 
prop_iterator hprops_begin ()
 You should not use this function directly. More...
 
prop_iterator hprops_end ()
 You should not use this function directly. More...
 
const_prop_iterator hprops_begin () const
 You should not use this function directly. More...
 
const_prop_iterator hprops_end () const
 You should not use this function directly. More...
 
prop_iterator fprops_begin ()
 You should not use this function directly. More...
 
prop_iterator fprops_end ()
 You should not use this function directly. More...
 
const_prop_iterator fprops_begin () const
 You should not use this function directly. More...
 
const_prop_iterator fprops_end () const
 You should not use this function directly. More...
 
prop_iterator mprops_begin ()
 You should not use this function directly. More...
 
prop_iterator mprops_end ()
 You should not use this function directly. More...
 
const_prop_iterator mprops_begin () const
 You should not use this function directly. More...
 
const_prop_iterator mprops_end () const
 You should not use this function directly. More...
 

Static Public Member Functions

static HalfedgeHandle s_halfedge_handle (EdgeHandle _eh, unsigned int _i=0)
 
static EdgeHandle s_edge_handle (HalfedgeHandle _heh)
 

Protected Attributes

VertexStatusPropertyHandle vertex_status_
 
HalfedgeStatusPropertyHandle halfedge_status_
 
EdgeStatusPropertyHandle edge_status_
 
FaceStatusPropertyHandle face_status_
 
unsigned int refcount_vstatus_
 
unsigned int refcount_hstatus_
 
unsigned int refcount_estatus_
 
unsigned int refcount_fstatus_
 

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)
 You should not use this function directly. More...
 
BaseProperty_eprop (BaseHandle _h)
 You should not use this function directly. More...
 
BaseProperty_hprop (BaseHandle _h)
 You should not use this function directly. More...
 
BaseProperty_fprop (BaseHandle _h)
 You should not use this function directly. More...
 
BaseProperty_mprop (BaseHandle _h)
 You should not use this function directly. More...
 
const BaseProperty_vprop (BaseHandle _h) const
 You should not use this function directly. More...
 
const BaseProperty_eprop (BaseHandle _h) const
 You should not use this function directly. More...
 
const BaseProperty_hprop (BaseHandle _h) const
 You should not use this function directly. More...
 
const BaseProperty_fprop (BaseHandle _h) const
 You should not use this function directly. More...
 
const BaseProperty_mprop (BaseHandle _h) const
 You should not use this function directly. More...
 
void vprops_reserve (size_t _n) const
 Reserves space for _n elements in all vertex property vectors.
 
void vprops_resize (size_t _n) const
 Resizes all vertex property vectors to the specified size.
 
void vprops_resize_if_smaller (size_t _n) const
 Same as vprops_resize() but ignores vertex property vectors that have a size larger than _n. More...
 
void vprops_clear ()
 You should not use this function directly. More...
 
void vprops_swap (unsigned int _i0, unsigned int _i1) const
 You should not use this function directly. More...
 
void hprops_reserve (size_t _n) const
 You should not use this function directly. More...
 
void hprops_resize (size_t _n) const
 You should not use this function directly. More...
 
void hprops_clear ()
 You should not use this function directly. More...
 
void hprops_swap (unsigned int _i0, unsigned int _i1) const
 You should not use this function directly. More...
 
void eprops_reserve (size_t _n) const
 You should not use this function directly. More...
 
void eprops_resize (size_t _n) const
 You should not use this function directly. More...
 
void eprops_clear ()
 You should not use this function directly. More...
 
void eprops_swap (unsigned int _i0, unsigned int _i1) const
 You should not use this function directly. More...
 
void fprops_reserve (size_t _n) const
 You should not use this function directly. More...
 
void fprops_resize (size_t _n) const
 You should not use this function directly. More...
 
void fprops_clear ()
 You should not use this function directly. More...
 
void fprops_swap (unsigned int _i0, unsigned int _i1) const
 You should not use this function directly. More...
 
void mprops_resize (size_t _n) const
 You should not use this function directly. More...
 
void mprops_clear ()
 You should not use this function directly. More...
 

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

◆ assign_connectivity()

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.

◆ clean()

void OpenMesh::ArrayKernel::clean ( )

Remove all vertices, edges and faces and deallocates their memory.

In contrast to clear() this method does neither erases the properties nor clears the property vectors. Depending on how you add any new entities to the mesh after calling this method, your properties will be initialized with old values.

See also
clean_keep_reservation()

◆ clean_keep_reservation()

void OpenMesh::ArrayKernel::clean_keep_reservation ( )

Remove all vertices, edges and faces but keep memory allocated.

This method behaves like clean() (also regarding the properties) but leaves the memory used for vertex, edge and face storage allocated. This leads to no reduction in memory consumption but allows for faster performance when rebuilding the mesh.

◆ garbage_collection() [1/2]

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?

◆ garbage_collection() [2/2]

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. Warning: You cannot update handles stored in a mesh property, as the memory might be moved during garbage collection! 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?

◆ n_edges()

size_t OpenMesh::ArrayKernel::n_edges ( ) const
inlineoverridevirtual

You should not use this function directly.

Instead, use the convenient PropertyManager wrapper.

Return value of property for an item

Reimplemented from OpenMesh::BaseKernel.

◆ n_faces()

size_t OpenMesh::ArrayKernel::n_faces ( ) const
inlineoverridevirtual

You should not use this function directly.

Instead, use the convenient PropertyManager wrapper.

Return value of property for an item

Reimplemented from OpenMesh::BaseKernel.

◆ n_halfedges()

size_t OpenMesh::ArrayKernel::n_halfedges ( ) const
inlineoverridevirtual

You should not use this function directly.

Instead, use the convenient PropertyManager wrapper.

Return value of property for an item

Reimplemented from OpenMesh::BaseKernel.

◆ n_vertices()

size_t OpenMesh::ArrayKernel::n_vertices ( ) const
inlineoverridevirtual

You should not use this function directly.

Instead, use the convenient PropertyManager wrapper.

Return value of property for an item

Reimplemented from OpenMesh::BaseKernel.

◆ new_vertex()

VertexHandle OpenMesh::ArrayKernel::new_vertex ( )
inline

Add a new vertex.

If you are rebuilding a mesh that you previously erased using clean() or clean_keep_reservation() you probably want to use new_vertex_dirty() instead.

See also
new_vertex_dirty()

◆ new_vertex_dirty()

VertexHandle OpenMesh::ArrayKernel::new_vertex_dirty ( )
inline

Same as new_vertex() but uses PropertyContainer::resize_if_smaller() to resize the vertex property container.

If you are rebuilding a mesh that you erased with clean() or clean_keep_reservation() using this method instead of new_vertex() saves reallocation and reinitialization of property memory.

See also
new_vertex()

◆ reset_status()

void OpenMesh::ArrayKernel::reset_status ( )
inline

Reinitializes the status of all vertices using the StatusInfo default constructor, i.e.

all flags will be set to false.


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

Project OpenMesh, ©  Visual Computing Institute, RWTH Aachen. Documentation generated using doxygen .