contrib/tbl/vipl/vipl_x_gradient.txx
Go to the documentation of this file.
00001 #ifndef vipl_x_gradient_txx_
00002 #define vipl_x_gradient_txx_
00003 
00004 #include "vipl_x_gradient.h"
00005 
00006 template <class ImgIn,class ImgOut,class DataIn,class DataOut,class PixelItr>
00007 bool vipl_x_gradient <ImgIn,ImgOut,DataIn,DataOut,PixelItr> :: section_applyop()
00008 {
00009   const ImgIn &in = this->in_data(0);
00010   ImgOut &out = *this->out_data_ptr();
00011 
00012   int startx = vipl_filter<ImgIn,ImgOut,DataIn,DataOut,2,PixelItr>::start(this->X_Axis());
00013   int starty = vipl_filter<ImgIn,ImgOut,DataIn,DataOut,2,PixelItr>::start(this->Y_Axis());
00014   int stopx  = vipl_filter<ImgIn,ImgOut,DataIn,DataOut,2,PixelItr>::stop(this->X_Axis());
00015   int stopy  = vipl_filter<ImgIn,ImgOut,DataIn,DataOut,2,PixelItr>::stop(this->Y_Axis());
00016   for (register int j = starty; j < stopy; ++j)
00017     for (register int i = startx+1; i < stopx; ++i) {
00018       DataIn w = fgetpixel(in, i,  j, DataIn(0))
00019                - fgetpixel(in, i-1,j, DataIn(0)) /* + shift() */;
00020 #if 0
00021       if (scale() != 1) w *= scale();
00022 #endif
00023       fsetpixel(out, i, j, DataOut(w));
00024     }
00025   return true;
00026 }
00027 
00028 #endif // vipl_x_gradient_txx_