GEL  2
GEL is a library for Geometry and Linear Algebra
/Users/jab/Documents/Teaching/02585/GEL2_and_demos/GEL/src/Util/Grid2D.h
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations