00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _MBMESH_H
00025 #define _MBMESH_H
00026
00027 #ifdef _WIN32
00028 # pragma warning( push )
00029 # pragma warning(disable:4250)
00030 #endif
00031
00032 #include <MeshVizXLM/mesh/MiMeshUnstructured.h>
00033 #include <MeshVizXLM/mesh/data/MiDataSetI.h>
00034
00035 #include <MbMeshVizImpl.h>
00036 #include <data/MbDataSetStorageI.h>
00037 #include <geometry/MbMeshGeometry.h>
00038
00039 #include <Inventor/STL/set>
00040 #include <Inventor/STL/algorithm>
00041 #include <Inventor/STL/functional>
00042 #include <Inventor/STL/iostream>
00043
00052 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00053 class MbMesh : virtual public MiMeshUnstructured, public MbDataSetStorageI<_ScalarT, _Vec3T>
00054 {
00055 public:
00056
00057 virtual const MbMeshGeometry<_CoordT>& getGeometry() const;
00058 MbMeshGeometry<_CoordT>& getGeometry();
00059
00063 template <typename _CoordIter>
00064 void setGeometry(_CoordIter beginCoord, _CoordIter endCoord);
00065
00066 private:
00067 virtual std::ostream& toStream(std::ostream& s) const;
00068
00069
00070 MbMesh();
00071 template <typename _CoordIter>
00072 MbMesh(_CoordIter beginCoord, _CoordIter endCoord);
00073
00074 MbMeshGeometry<_CoordT> m_geometry;
00075 };
00076
00077
00078 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00079 MbMesh<_CoordT,_ScalarT,_Vec3T>::MbMesh()
00080 {
00081 }
00082
00083
00084 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00085 template <typename _CoordIter>
00086 MbMesh<_CoordT,_ScalarT,_Vec3T>::MbMesh(_CoordIter beginCoord, _CoordIter endCoord):
00087 m_geometry(beginCoord,endCoord)
00088 {
00089 }
00090
00091
00092 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00093 template <typename _CoordIter>
00094 inline void
00095 MbMesh<_CoordT,_ScalarT,_Vec3T>::setGeometry(_CoordIter beginCoord, _CoordIter endCoord)
00096 {
00097 m_geometry.assign( beginCoord,endCoord );
00098 }
00099
00100
00101 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00102 inline const MbMeshGeometry<_CoordT>&
00103 MbMesh<_CoordT,_ScalarT,_Vec3T>::getGeometry() const
00104 {
00105 return m_geometry;
00106 }
00107
00108
00109 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00110 inline MbMeshGeometry<_CoordT>&
00111 MbMesh<_CoordT,_ScalarT,_Vec3T>::getGeometry()
00112 {
00113 return m_geometry;
00114 }
00115
00116
00117 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00118 inline std::ostream&
00119 MbMesh<_CoordT,_ScalarT,_Vec3T>::toStream(std::ostream& s) const
00120 {
00121 return MbDataSetStorageI<_ScalarT, _Vec3T>::toStream(s);
00122 }
00123
00124 #ifdef _WIN32
00125 # pragma warning( pop )
00126 #endif
00127
00128 #endif
00129
00130
00131
00132
00133
00134
00135
00136