00001 //============================================================================= 00002 // 00003 // OpenMesh 00004 // Copyright (C) 2001-2005 by Computer Graphics Group, RWTH Aachen 00005 // www.openmesh.org 00006 // 00007 //----------------------------------------------------------------------------- 00008 // 00009 // License 00010 // 00011 // This library is free software; you can redistribute it and/or modify it 00012 // under the terms of the GNU Library General Public License as published 00013 // by the Free Software Foundation, version 2. 00014 // 00015 // This library is distributed in the hope that it will be useful, but 00016 // WITHOUT ANY WARRANTY; without even the implied warranty of 00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 // Library General Public License for more details. 00019 // 00020 // You should have received a copy of the GNU Library General Public 00021 // License along with this library; if not, write to the Free Software 00022 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00023 // 00024 //----------------------------------------------------------------------------- 00025 // 00026 // $Revision: 1.1.1.1 $ 00027 // $Date: 2004/09/06 12:38:20 $ 00028 // 00029 //============================================================================= 00030 00031 00032 //============================================================================= 00033 // 00034 // Mesh Items Concept 00035 // 00036 //============================================================================= 00037 00038 00039 #error this file is for documentation purposes only 00040 00041 00042 //== NAMESPACES =============================================================== 00043 00044 00045 namespace OpenMesh { 00046 namespace Concepts { 00047 00048 00049 //== CLASS DEFINITION ========================================================= 00050 00051 00057 struct MeshItems { 00058 00059 00067 template <class Refs_> class VertexT 00068 { 00069 public: 00070 00072 typedef Refs_ Refs; 00073 00075 VertexT(); 00076 00078 HalfedgeHandle halfedge_handle() const; 00080 void set_halfedge_handle(HalfedgeHandle _eh); 00081 }; 00082 00083 00084 00085 00093 template <class Refs_> class HalfedgeT 00094 { 00095 public: 00096 00098 typedef Refs_ Refs; 00099 00102 VertexHandle vertex_handle() const; 00103 00106 void set_vertex_handle(VertexHandle _vh); 00107 00110 FaceHandle face_handle() const; 00111 00114 void set_face_handle(FaceHandle _fh); 00115 00118 HalfedgeHandle next_halfedge_handle() const; 00119 00122 void set_next_halfedge_handle(HalfedgeHandle _eh); 00123 }; 00124 00125 00126 00127 00135 template <class Refs_> class EdgeT 00136 { 00137 public: 00138 00140 typedef Refs_ Refs; 00141 00144 Halfedge halfedges[2]; 00145 }; 00146 00147 00148 00149 00157 template <class Refs_> class FaceT 00158 { 00159 public: 00160 00162 typedef Refs_ Refs; 00163 00166 typedef GenProg::TagTrue IsTriangle; 00168 static bool is_triangle(); 00169 00171 unsigned char n_vertices() const; 00174 void set_n_vertices(unsigned char _n); 00175 00177 HalfedgeHandle halfedge_handle() const; 00180 void set_halfedge_handle(HalfedgeHandle _eh); 00181 }; 00182 00183 }; 00184 00185 //============================================================================= 00186 } // namespace Concepts 00187 } // namespace OpenMesh 00188 //=============================================================================