Main Page | Modules | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

ArrayItems.hh

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:35:18 $
00028 //                                                                            
00029 //=============================================================================
00030 
00031 #ifndef OPENMESH_ARRAY_ITEMS_HH
00032 #define OPENMESH_ARRAY_ITEMS_HH
00033 
00034 
00035 //== INCLUDES =================================================================
00036 
00037 
00038 #include <OpenMesh/Core/System/config.hh>
00039 #include <OpenMesh/Core/Utils/GenProg.hh>
00040 #include <OpenMesh/Core/Mesh/Kernels/Common/Handles.hh>
00041 
00042 
00043 //== NAMESPACES ===============================================================
00044 
00045 namespace OpenMesh {
00046 
00047 
00048 //== CLASS DEFINITION =========================================================
00049 
00050 
00052 struct ArrayItems
00053 {
00054 
00055   //------------------------------------------------------ internal vertex type
00056 
00058   class Vertex
00059   {
00060     template <class AttribKernel, class Items> friend class ArrayKernelT;
00061     HalfedgeHandle  halfedge_handle_;
00062   };
00063 
00064 
00065   //---------------------------------------------------- internal halfedge type
00066 
00067 #ifndef DOXY_IGNORE_THIS
00068   class Halfedge_without_prev
00069   {
00070     template <class AttribKernel, class Items> friend class ArrayKernelT;
00071     FaceHandle      face_handle_;
00072     VertexHandle    vertex_handle_;
00073     HalfedgeHandle  next_halfedge_handle_;
00074   };
00075 #endif
00076 
00077 
00078 #ifndef DOXY_IGNORE_THIS
00079   class Halfedge_with_prev : public Halfedge_without_prev
00080   {
00081     template <class AttribKernel, class Items> friend class ArrayKernelT;
00082     HalfedgeHandle  prev_halfedge_handle_;
00083   };
00084 #endif
00085 
00086   
00087 
00088   //-------------------------------------------------------- internal edge type
00089 #ifndef DOXY_IGNORE_THIS
00090   template <class _Halfedge>
00091   class Edge
00092   {
00093     template <class AttribKernel, class Items> friend class ArrayKernelT;
00094     _Halfedge  halfedges_[2]; 
00095   };
00096 #endif
00097 
00098 
00099 
00100   //-------------------------------------------------------- internal face type
00101 
00102 #ifndef DOXY_IGNORE_THIS
00103   template <bool _is_triangle>
00104   class Face
00105   {
00106     template <class AttribKernel, class Items> friend class ArrayKernelT;
00107     HalfedgeHandle  halfedge_handle_;
00108 
00109   public:
00110     typedef GenProg::Bool2Type<_is_triangle>  IsTriangle;
00111     static bool is_triangle() { return _is_triangle; }
00112   };
00113 };
00114 #endif
00115 
00116 //=============================================================================
00117 } // namespace OpenMesh
00118 //=============================================================================
00119 #endif // OPENMESH_ITEMS_HH defined
00120 //=============================================================================

acg pic Project OpenMesh, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .