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 #ifndef __OPENKN_IMAGE__IMAGEGS_HPP__
00027 #define __OPENKN_IMAGE__IMAGEGS_HPP__
00028
00029
00030
00031
00032 #include <iostream>
00033 #include <string>
00034
00035
00036
00037
00038
00039 #include "Image.hpp"
00040
00041
00042
00043
00044 namespace kn{
00045
00046
00047
00048
00052 template<typename T>
00053 class ImageGS : public Image<T> {
00054
00055
00056
00057
00058 public:
00061 ImageGS();
00067 ImageGS(const size_t w, const size_t h, T * buffer=NULL);
00071 ImageGS(const ImageGS & e);
00074 virtual ~ImageGS();
00075
00076 public :
00082 inline virtual T & at(const unsigned int x, const unsigned int y) {
00083 if (x>=this->width() || y>=this->height() ) {
00084 std::ostringstream o("Operator(");
00085 o << x << "," << y << ") ";
00086 throw ImageException(o.str(), "Invalid range");
00087 }
00088 return (*this)(x,y);
00089 }
00090
00096 inline virtual T & operator()(const unsigned int x, const unsigned int y){
00097 return (this->rows[y][x]);
00098 }
00099
00100 };
00101
00102
00103
00104
00105
00106
00107
00108
00109 template<typename T>
00110 ImageGS<T>::ImageGS() : Image<T>() {
00111 this->imageNbChannel = 1;
00112 }
00113
00114 template<typename T>
00115 ImageGS<T>::ImageGS(const size_t w, const size_t h, T* buffer) : Image<T>(w,h,1,buffer) {
00116 }
00117
00118
00119 template<typename T>
00120 ImageGS<T>::ImageGS(const ImageGS<T> & e) : Image<T>(e) {
00121 }
00122
00123 template<typename T>
00124 ImageGS<T>::~ImageGS(void) {
00125 }
00126
00127
00128
00129
00130
00131 typedef ImageGS<float> ImageGSf;
00132 typedef ImageGS<double> ImageGSd;
00133 typedef ImageGS<unsigned char> ImageGS8u;
00134 typedef ImageGS<unsigned short int> ImageGS16u;
00135 typedef ImageGS<unsigned int> ImageGS32u;
00136 typedef ImageGS<unsigned long int> ImageGS64u;
00137 typedef ImageGS<char> ImageGS8s;
00138 typedef ImageGS<short int> ImageGS16s;
00139 typedef ImageGS<int> ImageGS32s;
00140 typedef ImageGS<long int> ImageGS64s;
00141
00142
00143
00144
00145 }
00146
00147
00148
00149
00150 #endif