Developer Documentation
|
#include <libs_required/OpenMesh/src/OpenMesh/Core/Mesh/ArrayKernel.hh>
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< StatusInfo > | VertexStatusPropertyHandle |
typedef HPropHandleT< StatusInfo > | HalfedgeStatusPropertyHandle |
typedef EPropHandleT< StatusInfo > | EdgeStatusPropertyHandle |
typedef FPropHandleT< StatusInfo > | FaceStatusPropertyHandle |
typedef AutoStatusSetT < VertexHandle > | VertexStatusSet |
typedef AutoStatusSetT < EdgeHandle > | EdgeStatusSet |
typedef AutoStatusSetT < FaceHandle > | FaceStatusSet |
typedef AutoStatusSetT < HalfedgeHandle > | HalfedgeStatusSet |
typedef ExtStatusSetT< FaceHandle > | ExtFaceStatusSet |
typedef ExtStatusSetT < VertexHandle > | ExtVertexStatusSet |
typedef ExtStatusSetT< EdgeHandle > | ExtEdgeStatusSet |
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) |
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 () |
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 |
size_t | n_halfedges () const |
size_t | n_edges () const |
size_t | 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::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) const |
EdgeHandle | edge_handle (HalfedgeHandle _heh) const |
HalfedgeHandle | halfedge_handle (FaceHandle _fh) const |
void | set_halfedge_handle (FaceHandle _fh, HalfedgeHandle _heh) |
const StatusInfo & | status (VertexHandle _vh) const |
Status Query API. | |
StatusInfo & | status (VertexHandle _vh) |
void | reset_status () |
const StatusInfo & | status (HalfedgeHandle _hh) const |
StatusInfo & | status (HalfedgeHandle _hh) |
const StatusInfo & | status (EdgeHandle _eh) const |
StatusInfo & | status (EdgeHandle _eh) |
const StatusInfo & | status (FaceHandle _fh) const |
StatusInfo & | status (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) |
template<class T > | |
void | copy_property (HPropHandleT< T > _ph, HalfedgeHandle _hh_from, HalfedgeHandle _hh_to) |
template<class T > | |
void | copy_property (EPropHandleT< T > _ph, EdgeHandle _eh_from, EdgeHandle _eh_to) |
template<class T > | |
void | copy_property (FPropHandleT< T > _ph, FaceHandle _fh_from, FaceHandle _fh_to) |
void | copy_all_properties (VertexHandle _vh_from, VertexHandle _vh_to, bool _copyBuildIn=false) |
void | copy_all_properties (HalfedgeHandle _hh_from, HalfedgeHandle _hh_to, bool _copyBuildIn=false) |
void | copy_all_properties (EdgeHandle _eh_from, EdgeHandle _eh_to, bool _copyBuildIn=false) |
void | copy_all_properties (FaceHandle _fh_from, FaceHandle _fh_to, bool _copyBuildIn=false) |
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 () const |
void | property_stats (std::ostream &_ostr) 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 () const |
void | hprop_stats () const |
void | eprop_stats () const |
void | fprop_stats () const |
void | mprop_stats () const |
void | vprop_stats (std::ostream &_ostr) const |
void | hprop_stats (std::ostream &_ostr) const |
void | eprop_stats (std::ostream &_ostr) const |
void | fprop_stats (std::ostream &_ostr) const |
void | mprop_stats (std::ostream &_ostr) 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>") |
template<class T > | |
void | add_property (HPropHandleT< T > &_ph, const std::string &_name="<hprop>") |
template<class T > | |
void | add_property (EPropHandleT< T > &_ph, const std::string &_name="<eprop>") |
template<class T > | |
void | add_property (FPropHandleT< T > &_ph, const std::string &_name="<fprop>") |
template<class T > | |
void | add_property (MPropHandleT< T > &_ph, const std::string &_name="<mprop>") |
template<typename T > | |
void | remove_property (VPropHandleT< T > &_ph) |
template<typename T > | |
void | remove_property (HPropHandleT< T > &_ph) |
template<typename T > | |
void | remove_property (EPropHandleT< T > &_ph) |
template<typename T > | |
void | remove_property (FPropHandleT< T > &_ph) |
template<typename T > | |
void | remove_property (MPropHandleT< T > &_ph) |
template<class T > | |
bool | get_property_handle (VPropHandleT< T > &_ph, const std::string &_name) const |
template<class T > | |
bool | get_property_handle (HPropHandleT< T > &_ph, const std::string &_name) const |
template<class T > | |
bool | get_property_handle (EPropHandleT< T > &_ph, const std::string &_name) const |
template<class T > | |
bool | get_property_handle (FPropHandleT< T > &_ph, const std::string &_name) const |
template<class T > | |
bool | get_property_handle (MPropHandleT< T > &_ph, const std::string &_name) const |
template<class T > | |
PropertyT< T > & | property (VPropHandleT< T > _ph) |
template<class T > | |
const PropertyT< T > & | property (VPropHandleT< T > _ph) const |
template<class T > | |
PropertyT< T > & | property (HPropHandleT< T > _ph) |
template<class T > | |
const PropertyT< T > & | property (HPropHandleT< T > _ph) const |
template<class T > | |
PropertyT< T > & | property (EPropHandleT< T > _ph) |
template<class T > | |
const PropertyT< T > & | property (EPropHandleT< T > _ph) const |
template<class T > | |
PropertyT< T > & | property (FPropHandleT< T > _ph) |
template<class T > | |
const PropertyT< T > & | property (FPropHandleT< T > _ph) const |
template<class T > | |
PropertyT< T > & | mproperty (MPropHandleT< T > _ph) |
template<class T > | |
const PropertyT< T > & | mproperty (MPropHandleT< T > _ph) const |
template<class T > | |
VPropHandleT< T >::reference | property (VPropHandleT< T > _ph, VertexHandle _vh) |
template<class T > | |
VPropHandleT< T >::const_reference | property (VPropHandleT< T > _ph, VertexHandle _vh) const |
template<class T > | |
HPropHandleT< T >::reference | property (HPropHandleT< T > _ph, HalfedgeHandle _hh) |
template<class T > | |
HPropHandleT< T >::const_reference | property (HPropHandleT< T > _ph, HalfedgeHandle _hh) const |
template<class T > | |
EPropHandleT< T >::reference | property (EPropHandleT< T > _ph, EdgeHandle _eh) |
template<class T > | |
EPropHandleT< T >::const_reference | property (EPropHandleT< T > _ph, EdgeHandle _eh) const |
template<class T > | |
FPropHandleT< T >::reference | property (FPropHandleT< T > _ph, FaceHandle _fh) |
template<class T > | |
FPropHandleT< T >::const_reference | property (FPropHandleT< T > _ph, FaceHandle _fh) const |
template<class T > | |
MPropHandleT< T >::reference | property (MPropHandleT< T > _ph) |
template<class T > | |
MPropHandleT< T >::const_reference | property (MPropHandleT< T > _ph) const |
Static Public Member Functions | |
static HalfedgeHandle | s_halfedge_handle (EdgeHandle _eh, unsigned int _i) |
static EdgeHandle | s_edge_handle (HalfedgeHandle _heh) |
Private Member Functions | |
KernelVertexIter | vertices_begin () |
KernelConstVertexIter | vertices_begin () const |
KernelVertexIter | vertices_end () |
KernelConstVertexIter | vertices_end () const |
KernelEdgeIter | edges_begin () |
KernelConstEdgeIter | edges_begin () const |
KernelEdgeIter | edges_end () |
KernelConstEdgeIter | edges_end () const |
KernelFaceIter | faces_begin () |
KernelConstFaceIter | faces_begin () const |
KernelFaceIter | faces_end () |
KernelConstFaceIter | faces_end () const |
BitMaskContainer & | bit_masks (VertexHandle) |
bit mask container by handle | |
BitMaskContainer & | bit_masks (EdgeHandle) |
BitMaskContainer & | bit_masks (FaceHandle) |
BitMaskContainer & | bit_masks (HalfedgeHandle) |
template<class Handle > | |
unsigned int | pop_bit_mask (Handle _hnd) |
template<class Handle > | |
void | push_bit_mask (Handle _hnd, unsigned int _bit_mask) |
void | init_bit_masks (BitMaskContainer &_bmc) |
void | init_bit_masks () |
Private Attributes | |
VertexContainer | vertices_ |
EdgeContainer | edges_ |
FaceContainer | faces_ |
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_ |
BitMaskContainer | halfedge_bit_masks_ |
BitMaskContainer | edge_bit_masks_ |
BitMaskContainer | vertex_bit_masks_ |
BitMaskContainer | face_bit_masks_ |
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 (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 |
void | vprops_clear () |
void | vprops_swap (unsigned int _i0, unsigned int _i1) const |
void | hprops_reserve (size_t _n) const |
void | hprops_resize (size_t _n) const |
void | hprops_clear () |
void | hprops_swap (unsigned int _i0, unsigned int _i1) const |
void | eprops_reserve (size_t _n) const |
void | eprops_resize (size_t _n) const |
void | eprops_clear () |
void | eprops_swap (unsigned int _i0, unsigned int _i1) const |
void | fprops_reserve (size_t _n) const |
void | fprops_resize (size_t _n) const |
void | fprops_clear () |
void | fprops_swap (unsigned int _i0, unsigned int _i1) const |
void | mprops_resize (size_t _n) const |
void | mprops_clear () |
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.
Definition at line 92 of file ArrayKernel.hh.
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.
Definition at line 76 of file ArrayKernel.cc.
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.
Definition at line 190 of file ArrayKernel.cc.
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.
Definition at line 180 of file ArrayKernel.cc.
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.
_v | Remove deleted vertices? |
_e | Remove deleted edges? |
_f | Remove deleted faces? |
Definition at line 172 of file ArrayKernel.cc.
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.
vh_to_update | Pointers to vertex handles that should get updated |
hh_to_update | Pointers to halfedge handles that should get updated |
fh_to_update | Pointers to face handles that should get updated |
_v | Remove deleted vertices? |
_e | Remove deleted edges? |
_f | Remove deleted faces? |
Definition at line 65 of file ArrayKernelT.cc.
|
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.
Definition at line 221 of file ArrayKernel.hh.
|
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.
Definition at line 239 of file ArrayKernel.hh.
|
inline |
Reinitializes the status of all vertices using the StatusInfo default constructor, i.e. all flags will be set to false.
Definition at line 516 of file ArrayKernel.hh.