55 #ifndef ACG_SMARTTAGGERT_HH
56 #define ACG_SMARTTAGGERT_HH
62 #include <OpenMesh/Core/Utils/Property.hh>
68 #define STV_DEBUG_CHECKS
112 template <
class Mesh,
class EHandle,
class EPHandle>
132 inline void untag_all(
const unsigned int _new_tag_range);
139 inline void set_tag (
const EHandle _eh,
unsigned int _tag = 1);
146 inline unsigned int get_tag (
const EHandle _eh)
const;
153 inline bool is_tagged(
const EHandle _eh)
const;
165 inline void all_tags_to_zero();
176 unsigned int current_base_;
179 unsigned int tag_range_;
186 template<
class Mesh>
188 :
public SmartTaggerT< Mesh, typename Mesh::VertexHandle, OpenMesh::VPropHandleT<unsigned int> >
192 SmartTaggerVT(
Mesh& _mesh,
unsigned int _tag_range = 1) : BaseType(_mesh, _tag_range) {}
195 template<
class Mesh>
197 :
public SmartTaggerT< Mesh, typename Mesh::EdgeHandle, OpenMesh::EPropHandleT<unsigned int> >
200 typedef SmartTaggerT< Mesh, typename Mesh::EdgeHandle, OpenMesh::EPropHandleT<unsigned int> > BaseType;
201 SmartTaggerET(
Mesh& _mesh,
unsigned int _tag_range = 1) : BaseType(_mesh, _tag_range) {}
204 template<
class Mesh>
206 :
public SmartTaggerT< Mesh, typename Mesh::FaceHandle, OpenMesh::FPropHandleT<unsigned int> >
209 typedef SmartTaggerT< Mesh, typename Mesh::FaceHandle, OpenMesh::FPropHandleT<unsigned int> > BaseType;
210 SmartTaggerFT(
Mesh& _mesh,
unsigned int _tag_range = 1): BaseType(_mesh, _tag_range) {}
213 template<
class Mesh>
215 :
public SmartTaggerT< Mesh, typename Mesh::HalfedgeHandle, OpenMesh::HPropHandleT<unsigned int> >
218 typedef SmartTaggerT< Mesh, typename Mesh::HalfedgeHandle, OpenMesh::HPropHandleT<unsigned int> > BaseType;
219 SmartTaggerHT(
Mesh& _mesh,
unsigned int _tag_range = 1): BaseType(_mesh, _tag_range){}
226 #if defined(INCLUDE_TEMPLATES) && !defined(ACG_SMARTTAGGERT_C)
227 #define ACG_SMARTTAGGERT_TEMPLATES
228 #include "SmartTaggerT.cc"
231 #endif // ACG_SMARTTAGGERT_HH defined
bool is_tagged(const EHandle _eh) const
overloaded member for boolean tags
Namespace providing different geometric functions concerning angles.
void set_tag_range(const unsigned int _tag_range)
set new tag range and untag_all
~SmartTaggerT()
Destructor.
unsigned int get_tag(const EHandle _eh) const
get tag value in range [0..tag_range]
SmartTaggerT(Mesh &_mesh, unsigned int _tag_range=1)
Constructor.
void untag_all()
untag all elements
void set_tag(const EHandle _eh, unsigned int _tag=1)
set tag to a value in [0..tag_range]