00001 #ifndef DEF_TILEFACEITER_123 00002 #define DEF_TILEFACEITER_123 00003 00004 #include "Common.hh" 00005 #include <list> 00006 00007 class Tile; 00008 00009 00011 class Tile_Face_Iter 00012 { 00013 private: 00014 00016 Tile* t; 00017 00019 OriginalMesh* m; 00020 00022 OpenMesh::FPropHandleT< bool > fprop_face_visited; 00023 00025 OpenMesh::VPropHandleT< unsigned int > vprop_tile; 00026 00028 list<OriginalMesh::FaceHandle> unvisited_faces; 00029 00031 Tile_Face_Iter(Tile* tile, OriginalMesh* mesh); 00032 00034 Tile_Face_Iter(Tile* tile, OriginalMesh* mesh, OriginalMesh::FaceHandle& fh); 00035 00037 void add_adjacent_faces(OriginalMesh::FaceHandle fh); 00038 00039 public: 00040 00041 00042 friend class Tile; 00043 00045 Tile_Face_Iter() { 00046 t = NULL; 00047 m = NULL; 00048 unvisited_faces.clear(); 00049 }; 00050 00052 virtual ~Tile_Face_Iter() 00053 { 00054 if(m != NULL) 00055 m->remove_property(fprop_face_visited); 00056 }; 00057 00059 void operator++(); 00060 00062 Tile_Face_Iter& operator= (const Tile_Face_Iter& it); 00063 00065 bool is_valid(); 00066 00068 OriginalMesh::FaceHandle operator *(); 00069 00070 }; 00071 00072 00073 00074 #endif