00001 #ifndef X3DTK_MESH_STATSCALCULATOR_H 00002 #define X3DTK_MESH_STATSCALCULATOR_H 00003 00004 #include "MESH_StatsCalculatorStateVariables.h" 00005 #include "X3DOnePassProcessor.h" 00006 #include "MESH_SceneGraphTypes.h" 00007 #include "DFSGraphTraversal.h" 00008 #include "MESH_StatsCalculatorCoreVisitor.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 RW> 00022 class TemplateStatsCalculator : public X3DOnePassProcessor 00023 { 00024 public: 00026 TemplateStatsCalculator(); 00028 virtual ~TemplateStatsCalculator(); 00029 00031 void calculate(X3DNode *N); 00032 00034 inline unsigned int getModelFaces() const; 00036 inline unsigned int getModelVertices() const; 00038 inline unsigned int getModelEdges() const; 00039 00041 inline unsigned int getFacesOf(X3DNode *N) const; 00043 inline unsigned int getVerticesOf(X3DNode *N) const; 00045 inline unsigned int getEdgesOf(X3DNode *N) const; 00047 const SFMatrix34f &getMatrixOf(X3DNode *N); 00048 00050 inline const TemplateMeshInfo<MData, VData, EData, FData, RW> &getModelMeshInfo() const; 00052 inline const std::list<std::pair<X3DNode *, TemplateMeshInfo<MData, VData, EData, FData, RW> > > &getMeshInfoList() const; 00054 inline const TemplateVertexInfo<MData, VData, EData, FData, RW> &getModelVertexInfo() const; 00056 inline const std::list<std::pair<X3DNode *, TemplateVertexInfo<MData, VData, EData, FData, RW> > > &getVertexInfoList() const; 00057 00059 void setSelectedNodes(const MFNode &selectedNodes); 00061 MFNode getSelectedNodes() const; 00062 00063 protected: 00064 TemplateStatsCalculatorStateVariables<MData, VData, EData, FData, RW>* stateVariables; 00065 }; 00066 00068 typedef TemplateStatsCalculator<MeshData, VertexData, EdgeData, FaceData, true> StatsCalculator; 00069 00070 } 00071 } 00072 00073 #include "MESH_StatsCalculator.inl" 00074 00075 #endif 00076