00001 #ifndef X3DTK_MESH_FACESDRAWER_H
00002 #define X3DTK_MESH_FACESDRAWER_H
00003
00004 #include "MESH_FacesDrawerStateVariables.h"
00005 #include "X3DOnePassProcessor.h"
00006 #include "MESH_SceneGraphTypes.h"
00007 #include "DFSGraphTraversal.h"
00008 #include "MESH_FacesDrawerCoreVisitor.h"
00009 #include "MESH_Mesh.h"
00010 #include "MESH_MeshData.h"
00011
00012 namespace X3DTK {
00013 namespace MESH {
00014
00021 template<class MData, class VData, class EData, class FData, bool readOnly>
00022 class FacesDrawer : public X3DOnePassProcessor
00023 {
00024 public:
00026 FacesDrawer();
00028 virtual ~FacesDrawer();
00029
00031 void changeOneColorPerMesh();
00032
00034 void draw(X3DNode *N, bool selection = false);
00035
00036
00037 inline Mesh<MData, VData, EData, FData, readOnly> *getMesh(int i) const;
00038
00039 inline const SFMatrix34f &getMatrix(int i) const;
00041 inline typename Mesh<MData, VData, EData, FData, readOnly>::SFFace *getFaceOfMesh(int i, int j) const;
00043 void setRenderingMode(FaceMode mode);
00045 void setSelectedNodes(const MFNode &selectedNodes);
00046
00047 protected:
00048 FacesDrawerStateVariables<MData, VData, EData, FData, readOnly>* stateVariables;
00049 };
00050
00052 typedef FacesDrawer<MeshData, VertexData, EdgeData, FaceData, true> DefFacesDrawer;
00053
00054 }
00055 }
00056
00057 #include "MESH_FacesDrawer.inl"
00058
00059 #endif
00060