Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef __UTIL_TRANSPOSE_PREFIX__
00038 #define __UTIL_TRANSPOSE_PREFIX__
00039
00040 #include "rect_list.hpp"
00041
00042 namespace util{
00055 template <typename T, typename Pr>
00056 class TransposePrefix2D
00057 {
00058 private:
00059
00060 TransposePrefix2D(const TransposePrefix2D& c);
00061 TransposePrefix2D& operator= (const TransposePrefix2D& c);
00062 TransposePrefix2D();
00063 const Pr& originalMatrix;
00064
00065
00069 class Intermediate
00070 {
00071 public:
00072 const TransposePrefix2D& a;
00073 int x;
00074
00075 Intermediate(const TransposePrefix2D& ar, int xval)
00076 :a(ar),x(xval)
00077 {
00078 }
00079
00080 T operator[] (int y) const
00081 {
00082 return a.originalMatrix[y][x];
00083 }
00084 };
00085
00086 public:
00092 TransposePrefix2D(const Pr& psa)
00093 :originalMatrix(psa){}
00097 int prefixsizeX() const {return originalMatrix.prefixsizeY();}
00104 int prefixsizeY() const{return originalMatrix.prefixsizeX();}
00105
00106
00107 Intermediate operator[] (int x) const{return Intermediate(*this,x);}
00108 ~TransposePrefix2D(){}
00109
00110
00111 static void convertRectList( const util::RectList<T, util::TransposePrefix2D<T, Pr> > & intermediate,
00112 util::RectList<T,Pr> &parts)
00113 {
00114
00115 for (typename util::RectList<T,Pr>::container::const_iterator it = intermediate.rectangles.begin();
00116 it != intermediate.rectangles.end();
00117 it++)
00118 {
00119 parts.add_rect(util::rectangle(it->y_top_l,it->y_bot_r,it->x_top_l,it->x_bot_r));
00120 }
00121
00122 }
00123 };
00124 }
00125 #endif
00126