Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

MESH_SceneGraphTypes.h

Go to the documentation of this file.
00001 
00002 //                            MeshTypes.h                                     //
00004 
00005 #ifndef MESH_SceneGraphTYPES_H
00006 #define MESH_SceneGraphTYPES_H
00007 
00008 #include "Platform.h"
00009 
00010 #include <vector>
00011 #include <list>
00012 #include <iostream>
00013 
00014 namespace X3DTK {
00015 namespace MESH {
00016 
00017 class X3DNode;
00018 typedef X3DNode *SFNode;
00019 typedef std::list<SFNode> MFNode;
00020 
00021 template<class A, class B, class C> class SFTemplateVertex;
00022 template<class A, class B, class C> class SFTemplateEdge;
00023 template<class A, class B, class C> class SFTemplateFace;
00024 
00026 
00027 template<class VData, class EData, class FData>
00028 class MFTemplateVertex : public std::vector<SFTemplateVertex<VData, EData, FData> *>
00029 {
00030 public:
00032   MFTemplateVertex() : std::vector<SFTemplateVertex<VData, EData, FData> *>() {};
00034   explicit MFTemplateVertex(const std::vector<SFTemplateVertex<VData, EData, FData> *> &vector)
00035   : std::vector<SFTemplateVertex<VData, EData, FData> *>(vector)
00036   {}; 
00037 };
00038 
00040 
00041 template<class EData, class FData, class VData>
00042 class MFTemplateEdge : public std::vector<SFTemplateEdge<EData, FData, VData> *>
00043 {
00044 public:
00046   MFTemplateEdge() : std::vector<SFTemplateEdge<EData, FData, VData> *>() {};
00048   explicit MFTemplateEdge(const std::vector<SFTemplateEdge<EData, FData, VData> *> &vector, bool ccw)
00049   : std::vector<SFTemplateEdge<EData, FData, VData> *>(vector)
00050   {
00051     if (!ccw)
00052     {
00053       unsigned int last = vector.size() - 1;
00054       unsigned int mid = (last + 1)/2;
00055       for (unsigned int i = 0; i < mid; ++i)
00056       {
00057         SFTemplateEdge<EData, FData, VData> *temp = (*this)[i];
00058         (*this)[i] = (*this)[last - i];
00059         (*this)[last - i] = temp;
00060       }
00061     }  
00062   };
00063 };
00064 
00066 
00067 template<class FData, class VData, class EData>
00068 class MFTemplateFace : public std::vector<SFTemplateFace<FData, VData, EData> *>
00069 {
00070 public:
00072   MFTemplateFace() : std::vector<SFTemplateFace<FData, VData, EData> *>() {};
00074   explicit MFTemplateFace(const std::vector<SFTemplateFace<FData, VData, EData> *> &vector)
00075   : std::vector<SFTemplateFace<FData, VData, EData> *>(vector)
00076   {};
00077 };
00078 
00079 }
00080 }
00081 
00082 #endif

Generated on Thu Dec 4 13:25:46 2003 for X3DToolKit by doxygen1.2.18