00001
00002
00004
00005 #ifndef TEMPLATEEDGECONTENT_H
00006 #define TEMPLATEEDGECONTENT_H
00007
00008 #include "MESH_SceneGraphTypes.h"
00009
00010 #include <vector>
00011
00012 namespace X3DTK {
00013 namespace MESH {
00014
00015 template<class A, class B, class C> class SFTemplateVertex;
00016 template<class A, class B, class C> class SFTemplateFace;
00017
00020
00021 template<class EData, class FData, class VData>
00022 class SFTemplateEdgeContent
00023 {
00024 template<class A, class B, class C, class D> friend class TemplateMesh;
00025 template<class A, class B, class C> friend class SFTemplateEdge;
00026 public:
00028 inline SFTemplateVertex<VData, EData, FData> *getFromVertex() const {return _from;};
00030 inline SFTemplateVertex<VData, EData, FData> *getToVertex() const {return _to;};
00032 inline const MFTemplateFace<FData, VData, EData> &get1Faces() const {return _r1Faces;};
00034 inline const MFTemplateFace<FData, VData, EData> &get2Faces() const {return _r2Faces;};
00036 inline bool isBoundary() const
00037 {
00038 return _isBoundary;
00039 };
00041 inline EData &data() {return _data;};
00043 inline const EData &data() const {return _data;};
00044
00045 private:
00046 SFTemplateVertex<VData, EData, FData> *const _from;
00047 SFTemplateVertex<VData, EData, FData> *const _to;
00048 MFTemplateFace<FData, VData, EData> _r1Faces;
00049 MFTemplateFace<FData, VData, EData> _r2Faces;
00050 bool _isBoundary;
00051 EData _data;
00052
00054 SFTemplateEdgeContent(SFTemplateVertex<VData, EData, FData> * from, SFTemplateVertex<VData, EData, FData> *const to)
00055 : _from(from), _to(to), _isBoundary(true)
00056 {};
00057
00059 ~SFTemplateEdgeContent() {};
00060
00062 void add1Face(SFTemplateFace<FData, VData, EData> *face)
00063 {
00064 _r1Faces.push_back(face);
00065 if (_r2Faces.size() > 0)
00066 _isBoundary = false;
00067 };
00069 void add2Face(SFTemplateFace<FData, VData, EData> *face)
00070 {
00071 _r2Faces.push_back(face);
00072 if (_r1Faces.size() > 0)
00073 _isBoundary = false;
00074 };
00075
00076 };
00077
00078 }
00079 }
00080
00081 #endif