53 #ifndef ACG_STATUS_NODES_HH
54 #define ACG_STATUS_NODES_HH
62 #include "MaterialNode.hh"
63 #include "DrawModes.hh"
72 namespace SceneGraph {
83 template <
class Mesh,
class Mod>
91 const std::string& _name =
"<StatusNode>" );
96 ACG_CLASSNAME(StatusNode);
125 typedef typename Mesh::Face Face;
126 typedef typename Mesh::Vertex Vertex;
127 typedef typename Mesh::Halfedge Halfedge;
128 typedef typename Mesh::Edge Edge;
129 typedef typename Mesh::FaceHandle FaceHandle;
130 typedef typename Mesh::HalfedgeHandle HalfedgeHandle;
132 typedef typename Mesh::Point Point;
137 void draw_halfedges();
138 void draw_faces(
bool _per_vertex);
140 Point halfedge_point(
const HalfedgeHandle _heh);
146 std::vector<unsigned int> v_cache_, e_cache_, f_cache_;
147 std::vector<FaceHandle> fh_cache_;
149 std::vector<Point> he_points_;
150 std::vector<Normal> he_normals_;
159 bool vertexIndexInvalid_;
160 bool halfedgeCacheInvalid_;
161 bool edgeIndexInvalid_;
162 bool faceIndexInvalid_;
171 template <
class Mesh,
unsigned int Bit>
174 static bool is_vertex_selected(
const Mesh& _mesh,
175 typename Mesh::VertexHandle _vh)
177 return _mesh.status(_vh).is_bit_set(Bit);
180 static bool is_edge_selected(
const Mesh& _mesh,
181 typename Mesh::EdgeHandle _eh)
183 return _mesh.status(_eh).is_bit_set(Bit);
186 static bool is_halfedge_selected(
const Mesh& _mesh,
187 typename Mesh::HalfedgeHandle _heh)
189 return _mesh.status(_heh).is_bit_set(Bit);
192 static bool is_face_selected(
const Mesh& _mesh,
193 typename Mesh::FaceHandle _fh)
195 return _mesh.status(_fh).is_bit_set(Bit);
204 template <
class Mesh>
206 :
public StatusModT<Mesh, OpenMesh::Attributes::SELECTED>
216 template <
class Mesh>
218 :
virtual public StatusNodeT<Mesh, SelectionModT<Mesh> >
229 const std::string& _name =
"<SelectionNode>" )
238 template <
class Mesh>
240 :
public StatusModT<Mesh, OpenMesh::Attributes::LOCKED>
244 template <
class Mesh>
251 const std::string& _name =
"<LockNode>" )
261 #if defined(INCLUDE_TEMPLATES) && !defined(ACG_STATUS_NODES_C)
262 #define ACG_STATUS_NODES_TEMPLATES
263 #include "StatusNodesT.cc"
266 #endif // ACG_STATUS_NODES_HH defined