Main Page | Modules | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

MESH_Mesh.h

Go to the documentation of this file.
00001 #ifndef X3DTK_MESH_MESH_H
00002 #define X3DTK_MESH_MESH_H
00003 
00004 #include "MESH_X3DMeshNode.h"
00005 #include "MESH_SFVertex.h"
00006 #include "MESH_SFEdge.h"
00007 #include "MESH_SFFace.h"
00008 #include "MESH_MeshData.h"
00009 
00010 #include <iostream>
00011 #include <typeinfo>
00012 
00013 namespace X3DTK {
00014 namespace MESH {
00015 
00016 template<class MData, class VData, class EData, class FData, bool RW> class MeshMFTemplateVertex;
00017 template<class MData, class VData, class EData, class FData, bool RW> class MeshMFTemplateEdge;
00018 template<class MData, class VData, class EData, class FData, bool RW> class MeshMFTemplateFace;
00019 
00028 template<class MData, class VData, class EData, class FData, bool RW>
00029 class TemplateMesh : public X3DMeshNode
00030 {
00031 public:
00032   typedef MeshMFTemplateVertex<MData, VData, EData, FData, RW> MFVertex;
00033   typedef MeshMFTemplateEdge<MData, VData, EData, FData, RW> MFEdge;
00034   typedef MeshMFTemplateFace<MData, VData, EData, FData, RW> MFFace;
00035   
00037   TemplateMesh();
00039   virtual SFAbstractNode clone() const;
00041   virtual ~TemplateMesh(); 
00042    
00044   void setVertex(TemplateVertex<MData, VData, EData, FData, RW> *vertexSet);
00046   virtual MFAbstractNode getChildList() const;
00047   
00050   bool addChild(const SFAbstractNode &N);
00053   bool setChild(const SFAbstractNode &N);
00055   bool removeChild(const SFAbstractNode &N);
00056  
00058   const MFVertex &getVertices() const;
00060   const MFEdge &getEdges() const;
00062   inline const MFFace &getFaces() const;
00064   inline MData &data();
00066   inline const MData &data() const;
00067 
00068 #ifdef TEMPLATE_SPECIALIZATION_SUPPORTED
00069 
00070   template<class F>  
00071   F &getData();
00073   template<class F>  
00074   F &ogetData();
00075 #endif
00076     
00079   SFTemplateFace<MData, VData, EData, FData, RW> *createFace(const MFInt32 &coordIndex, bool ccw = true);
00081   SFTemplateFace<MData, VData, EData, FData, RW> *createFace(unsigned int i, const MFInt32 &coordIndex, bool ccw = true);
00082 
00084   bool removeFace(SFTemplateFace<MData, VData, EData, FData, RW> *face);
00085   
00086 protected:
00088   TemplateMesh(const TemplateMesh &N);
00089 
00091   void removeFaceFromNeighBourhood(SFTemplateFace<MData, VData, EData, FData, RW> *face);
00092   
00093 private:
00094   MFFace _faces;
00095   MData _data;
00096 };
00097 
00100 typedef TemplateMesh<MeshData, VertexData, EdgeData, FaceData, true> Mesh;
00101 typedef SFTemplateVertex<MeshData, VertexData, EdgeData, FaceData, true> SFVertex;
00102 typedef SFTemplateEdge<MeshData, VertexData, EdgeData, FaceData, true> SFEdge;
00103 typedef SFTemplateFace<MeshData, VertexData, EdgeData, FaceData, true> SFFace;
00104 
00105 }
00106 }
00107 
00108 #include "MESH_Mesh.inl"
00109 
00110 #endif

Generated on Thu Jun 3 10:12:08 2004 for X3DToolKit by doxygen 1.3.6