00001 #ifndef X3DTK_MESH_EDGESDRAWERSTATEVARIABLES_H
00002 #define X3DTK_MESH_EDGESDRAWERSTATEVARIABLES_H
00003
00004 #include "MESH_Transform.h"
00005 #include "MESH_SceneGraphTypes.h"
00006
00007 #include <list>
00008 #include <vector>
00009
00010 namespace X3DTK {
00011 namespace MESH {
00012
00019 template<class MData, class VData, class EData, class FData, bool RW>
00020 class TemplateEdgesDrawerStateVariables : public StateVariables
00021 {
00022 public:
00023
00024 TemplateEdgesDrawerStateVariables();
00025
00026
00027 void init();
00028
00029 void finish();
00030
00031
00032 void pushTransform(const SFMatrix34f &matrix);
00034 SFMatrix34f getCurrentTransform();
00035
00036 void popTransform();
00037
00038
00039 void addCouple(X3DNode *N, const SFMatrix34f &matrix);
00040
00041 bool getCouple(X3DNode *N, const SFMatrix34f &matrix) const;
00042
00043
00044
00045 int getCurrentMeshId();
00046
00047 void storeVertex(TemplateVertex<MData, VData, EData, FData, RW> *vertex);
00048
00049
00050 inline TemplateVertex<MData, VData, EData, FData, RW> *getVertex(int i) const;
00051
00052 inline const SFMatrix34f &getMatrix(int i) const;
00053
00054
00055 inline void setSelectionMode(bool selectionMode);
00056 inline bool getSelectionMode() const;
00057
00058 private:
00059 std::list<SFMatrix34f> _matrixStack;
00060 std::vector<SFMatrix34f> _matrixVector;
00061 std::list<std::pair<X3DNode *, SFMatrix34f> > _coupleList;
00062 std::vector<TemplateVertex<MData, VData, EData, FData, RW> *> _vertexVector;
00063 bool _selectionMode;
00064 };
00065
00066 }
00067 }
00068
00069 #include "MESH_EdgesDrawerStateVariables.inl"
00070
00071 #endif