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
00032 #ifndef _KERNEL_HPP_
00033 #define _KERNEL_HPP_
00034
00035 #include "MillieExceptions.hpp"
00036 #include "DataBuffer.hpp"
00037
00038
00039 namespace Millie
00040 {
00041
00063 class Kernel
00064 {
00065 protected:
00069 bool _isSeparable;
00070
00074 DataBuffer<float> _data;
00075
00079 DataBuffer<float> _dataX;
00080
00084 DataBuffer<float> _dataY;
00085
00090 int _originex;
00091
00096 int _originey;
00097
00101 int _largeur;
00102
00106 int _hauteur;
00107
00111 bool isSeparable() const;
00112
00117 Kernel(int taillex, int tailley, int originex, int originey);
00118
00130 virtual void setValue(int x, int y, float value);
00131
00132
00133 public:
00165 Kernel(int taillex, int tailley, int originex, int originey, const float * data);
00166
00186 Kernel(int taillex, int tailley, int originex, int originey, const float * datax, const float * datay);
00187
00191 virtual ~Kernel();
00192
00193
00199 Kernel(const Kernel& k);
00200
00204 Kernel & operator=(Kernel& origine);
00205
00210 int getXOrigin() const;
00211
00216 int getYOrigin() const;
00217
00222 int getWidth() const;
00223
00228 int getHeight() const;
00229
00241 virtual float operator()(int x, int y) const;
00242
00250 int getTopPadding() const;
00251
00259 int getBottomPadding() const;
00260
00268 int getLeftPadding() const;
00269
00277 int getRightPadding() const;
00278
00279
00280 };
00281
00282
00283
00284
00285
00286
00287
00288
00289 }
00290
00291
00292 #endif