00001 #ifndef MESH_INFO_H 00002 #define MESH_INFO_H 00003 00004 #include <X3DTK/kernel.h> 00005 #include <X3DTK/MESH/scenegraph.h> 00006 #include <list> 00007 00008 namespace X3DTK { 00009 namespace MESH { 00010 00011 template<class MData, class VData, class EData, class FData, bool readOnly> 00012 class MeshInfo 00013 { 00014 public: 00016 MeshInfo(); 00018 ~MeshInfo(); 00019 00021 void init(); 00022 00024 void addFaces(unsigned int faces); 00026 void addEdges(unsigned int edges); 00028 void setInstances(unsigned int instances); 00029 00031 unsigned int getFaces() const; 00033 unsigned int getEdges() const; 00035 unsigned int getInstances() const; 00036 00037 private: 00038 unsigned int _nFaces; 00039 unsigned int _nEdges; 00040 unsigned int _nInstances; 00041 }; 00042 00043 template<class VData, class EData, class FData, bool readOnly> 00044 class VertexInfo 00045 { 00046 public: 00048 VertexInfo(); 00050 ~VertexInfo(); 00051 00053 void init(); 00054 00056 void addVertices(unsigned int vertices); 00058 void setInstances(unsigned int instances); 00059 00061 unsigned int getVertices() const; 00063 unsigned int getInstances() const; 00064 00065 private: 00066 unsigned int _nVertices; 00067 unsigned int _nInstances; 00068 }; 00069 00071 typedef MeshInfo<MeshData, VertexData, EdgeData, FaceData, true> DefMeshInfo; 00072 typedef std::list<std::pair<X3DNode *, MeshInfo<MeshData, VertexData, EdgeData, FaceData, true> > > DefMeshInfoList; 00073 00074 typedef VertexInfo<VertexData, EdgeData, FaceData, true> DefVertexInfo; 00075 typedef std::list<std::pair<X3DNode *, VertexInfo<VertexData, EdgeData, FaceData, true> > > DefVertexInfoList; 00076 00077 } 00078 } 00079 00080 #include "MESH_Info.inl" 00081 00082 #endif