MESH_MeshData.h

Go to the documentation of this file.
00001 #ifndef X3DTK_MESH_MESHDATA_H
00002 #define X3DTK_MESH_MESHDATA_H
00003 
00004 #include "X3DTypes.h"
00005 #include "TypeList.h"
00006 #include "MESH_SFFace.h"
00007 
00008 #include <map>
00009 
00010 namespace X3DTK {
00011 namespace MESH {
00012 
00018 class VertexPointData
00019 {
00020 public:
00022   void setPoint(const SFPoint3f &point) {_point = point;};
00024   inline const SFPoint3f &getPoint() const {return _point;};
00025   
00026 private:
00027   SFPoint3f _point;  
00028 };
00029 
00035 class VertexNormalData
00036 {
00037 public:
00039   void setNormalOfFace(const SFVec3f &normal, BaseSFFace *face);
00041   const SFVec3f &getNormalOfFace(BaseSFFace *face) const;
00042   
00044   const std::map<BaseSFFace *, unsigned short> &getMap() const {return _normalMap;};
00046   const MFVec3f &getNormalArray() const {return _normalArray;};
00047   
00048 private:
00049   MFVec3f _normalArray; 
00050   std::map<BaseSFFace *, unsigned short> _normalMap;
00051 };
00052 
00058 class VertexColorData
00059 {
00060 public:
00062   void setColorOfFace(const SFColorRGBA &color, BaseSFFace *face);
00064   const SFColorRGBA &getColorOfFace(BaseSFFace *face) const;
00065   
00067   const std::map<BaseSFFace *, unsigned short> &getMap() const {return _colorMap;};
00069   const MFColorRGBA &getColorArray() const {return _colorArray;};
00070   
00071 private:
00072   MFColorRGBA _colorArray;
00073   std::map<BaseSFFace *, unsigned short> _colorMap;
00074 };
00075 
00081 class VertexTexCoordData
00082 {
00083 public:
00085   void setTexCoordOfFace(const SFPoint2f &texCoord, BaseSFFace *face);
00087   const SFPoint2f &getTexCoordOfFace(BaseSFFace *face) const;
00088 
00090   const std::map<BaseSFFace *, unsigned short> &getMap() const {return _texCoordMap;};
00092   const MFPoint2f &getTexCoordArray() const {return _texCoordArray;};
00093    
00094 private:
00095   MFPoint2f _texCoordArray;
00096   std::map<BaseSFFace *, unsigned short> _texCoordMap;
00097 };
00098 
00104 class FaceNormalData
00105 {
00106 public:
00108   void setNormal(const SFVec3f &normal) {_normal = normal;};
00110   inline const SFVec3f &getNormal() const {return _normal;};
00111   
00112 private:
00113   SFVec3f _normal;  
00114 };
00115 
00121 class FaceColorData
00122 {
00123 public:
00125   void setColor(const SFColorRGBA &color) {_color = color;};
00127   inline const SFColorRGBA &getColor() const {return _color;};
00128   
00129 private:
00130   SFColorRGBA _color;  
00131 };
00132 
00138 class MeshNormalData
00139 {
00140 public:
00142   void setNormal(bool value) {_normal = value;};
00144   void setNormalPerVertex(bool value) {_normalPerVertex = value;};
00146   void setCreaseAngle(float value) {_creaseAngle = value;};
00147   
00149   inline bool hasNormal() const {return _normal;};
00151   inline bool getNormalPerVertex() const {return _normalPerVertex;};
00153   inline float getCreaseAngle() const {return _creaseAngle;};
00154   
00155 private:
00156   bool _normal;
00157   bool _normalPerVertex;
00158   float _creaseAngle;
00159 };
00160 
00166 class MeshColorData
00167 {
00168 public:
00170   void setColor(bool value) {_color = value;};
00172   void setColorPerVertex(bool value) {_colorPerVertex = value;};
00174   void setRGBA(bool value) {_rgba = value;};
00175   
00177   inline bool hasColor() const {return _color;};
00179   inline bool getColorPerVertex() const {return _colorPerVertex;};
00181   inline bool getRGBA() const {return _rgba;};
00182   
00183 private:
00184   bool _color;
00185   bool _colorPerVertex;
00186   bool _rgba;
00187 };
00188 
00194 class MeshTexCoordData
00195 {
00196 public:
00198   void setTexCoord(bool value) {_texCoord = value;};
00200   inline bool hasTexCoord() const {return _texCoord;};
00201   
00202 private:
00203   bool _texCoord;
00204 };
00205 
00211 class MeshSolidData
00212 {
00213 public:
00215   void setSolid(bool value) {_solid = value;};
00217   inline bool isSolid() const {return _solid;};
00218   
00219 private:
00220   bool _solid;
00221 };
00222 
00223 
00224 #ifdef TEMPLATE_SPECIALIZATION_SUPPORTED
00225 
00231 typedef clist<tlist<VertexPointData, tlist<VertexNormalData, tlist<VertexColorData, tlist<VertexTexCoordData> > > > > VertexData;
00232 
00238 typedef nil EdgeData;
00239 
00245 typedef clist<tlist<FaceNormalData, tlist<FaceColorData> > > FaceData;
00246 
00252 typedef clist<tlist<MeshNormalData, tlist<MeshColorData, tlist<MeshTexCoordData, tlist<MeshSolidData> > > > > MeshData;
00253 
00254 #else
00255 
00256 class VertexData : public VertexPointData, public VertexNormalData, public VertexColorData, public VertexTexCoordData
00257 {};
00258 
00259 class EdgeData
00260 {};
00261 
00262 class FaceData : public FaceNormalData, public FaceColorData
00263 {};
00264 
00265 class MeshData : public MeshNormalData, public MeshColorData, public MeshTexCoordData, public MeshSolidData 
00266 {};
00267 
00268 #endif
00269 
00270 }
00271 }
00272 
00273 #endif

Generated on Fri Jul 30 12:02:28 2004 for X3DToolKit by doxygen 1.3.6