00001 #ifndef VLCCLUSTER_H 00002 #define VLCCLUSTER_H 00003 00004 #include <list> 00005 #include "VLCCluster.h" 00006 00007 class VLCClusterliste 00008 { 00009 private: 00010 //a list that contains the cluster 00011 std::list<VLCCluster> clist; 00012 00013 //two list that contains navigation-information, 00014 //vNavi is a pointer-list that returns the cluster sort by xmin (left border of the bounding-box of the cluster) 00015 //hNavi is a pointer-list that returns the cluster sort by ymin (top border of the bounding-box of the cluster) 00016 std::list<std::list<VLCCluster>::iterator> vNavi; 00017 std::list<std::list<VLCCluster>::iterator> hNavi; 00018 00019 //list of mid-points. 00020 std::list<Vector2<double> > midlist; 00021 00022 //iterator to run through the clusterlist clist 00023 std::list<VLCCluster>::iterator cIter; 00024 00025 00026 //iterators to run through the navigation-information list vNavi, hNavi 00027 std::list<std::list<VLCCluster>::iterator>::iterator vhIter; 00028 //std::list<std::list<Cluster>::iterator>::iterator vhIter2; 00029 00030 //iterator to run through midlist 00031 std::list<Vector2<double> >::iterator mIter; 00032 00033 //variable used to find the position for new elements in vNavi and hNavi 00034 bool posGefunden; 00035 00036 00037 00038 public: 00039 VLCClusterliste(); 00040 00041 /*a method that add a cluster to the clusterlist and updates the navigation information in vNavi/hNavi. 00042 * if v equals to true, the direction of scanning is vertical and the iterator i gives the position of the new cluster 00043 * in vNavi. 00044 * if v equals to false, the direction of scanning is horizontal and the iterator i gives the position of the new 00045 * cluster in hNavi. 00046 */ 00047 void addCluster(VLCCluster c, std::list<std::list<VLCCluster>::iterator>::iterator i, bool v); 00048 00049 //a method that delete all clusters and navigation information 00050 void deleteAll(); 00051 00052 //this method is used in clustering. rc is a iterator that points on the element of clist that contains the cluster 00053 //which should be removed 00054 void removeCluster(std::list<VLCCluster>::iterator rc); 00055 00056 //return of a list,which stores the midpoints of the cluster 00057 std::list<Vector2<double> > getMidpoints(); 00058 00059 //return of the iterator that points at the first element of clist 00060 std::list<VLCCluster>::iterator getCListBegin(); 00061 00062 //return of the iterator that points at the after last element of clist 00063 std::list<VLCCluster>::iterator getCListEnd(); 00064 00065 //return of the iterator that points at the first element of vNavi 00066 std::list<std::list<VLCCluster>::iterator>::iterator getVNaviBegin(); 00067 00068 //return of the iterator that points at the after last element of vNavi 00069 std::list<std::list<VLCCluster>::iterator>::iterator getVNaviEnd(); 00070 00071 //return of the iterator that points at the first element of hNavi 00072 std::list<std::list<VLCCluster>::iterator>::iterator getHNaviBegin(); 00073 00074 //return of the iterator that points at the after last element of hNavi 00075 std::list<std::list<VLCCluster>::iterator>::iterator getHNaviEnd(); 00076 00077 //returns true, if clist is empty 00078 bool getEmpty(); 00079 00080 }; 00081 00082 00083 #endif 00084
1.3.6