GEL
2
GEL is a library for Geometry and Linear Algebra
|
00001 #ifndef __UTIL_GRID2D_H 00002 #define __UTIL_GRID2D_H 00003 00004 #include <vector> 00005 #include "CGLA/Vec2i.h" 00006 00007 namespace Util 00008 { 00009 00010 template<class T> 00011 class Grid2D 00012 { 00013 int XDIM, YDIM; 00014 std::vector<T> pixels; 00015 00016 public: 00017 00018 ~Grid2D() {} 00019 00020 Grid2D(int i, int j, const T& val): XDIM(i), YDIM(j), pixels(i*j, val) {} 00021 Grid2D(int i, int j): XDIM(i), YDIM(j), pixels(i*j) {} 00022 Grid2D(): XDIM(0), YDIM(0) {} 00023 00024 void resize(int i, int j) 00025 { 00026 XDIM = i; 00027 YDIM = j; 00028 pixels.resize(i*j); 00029 } 00030 00031 00032 const T& operator()(int i, int j) const 00033 { 00034 assert(i>=0 && i< XDIM); 00035 assert(j>=0 && j< YDIM); 00036 return pixels[j*XDIM+i]; 00037 } 00038 00039 T& operator()(int i, int j) 00040 { 00041 assert(i>=0 && i< XDIM); 00042 assert(j>=0 && j< YDIM); 00043 return pixels[j*XDIM+i]; 00044 } 00045 00046 const T& operator()(const CGLA::Vec2i& p) const 00047 { 00048 assert(p[0]>=0 && p[0]< XDIM); 00049 assert(p[1]>=0 && p[1]< YDIM); 00050 return pixels[p[1]*XDIM+p[0]]; 00051 } 00052 00053 T& operator()(const CGLA::Vec2i& p) 00054 { 00055 assert(p[0]>=0 && p[0]< XDIM); 00056 assert(p[1]>=0 && p[1]< YDIM); 00057 return pixels[p[1]*XDIM+p[0]]; 00058 } 00059 00060 int get_xdim() const {return XDIM;} 00061 int get_ydim() const {return YDIM;} 00062 00063 }; 00064 } 00065 00066 #endif