Main Page   Class Overview   Pixels   Images   Geometry   Quick Index  

HxKernel.h

00001 /*
00002  *  Copyright (c) 1999, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *  Author(s):
00006  *  Edo Poll                (poll@wins.uva.nl)
00007  *  Marc Navarro            (mnavarro@wins.uva.nl)
00008  */
00009 
00010 #ifndef HxKernel_h
00011 #define HxKernel_h
00012 
00013 #include "HxClassName.h"
00014 #include "HxSizes.h"
00015 #include "HxTagList.h"
00016 
00017 template<class KerDataPtrT, class ArithT>
00018 class HxKernel1d
00019 {
00020 public:
00021 
00022                     HxKernel1d(KerDataPtrT kerPtr, HxSizes size, HxTagList&);
00023                     ~HxKernel1d();
00024 
00025     const ArithT&   operator ()(int i) const;
00026     static HxString className();
00027 
00028 private:
00029     ArithT*         _data;
00030 };
00031 
00032 template<class KerDataPtrT, class ArithT>
00033 inline const ArithT&
00034 HxKernel1d<KerDataPtrT, ArithT>::operator() (int i) const
00035 {
00036     return _data[i];
00037 }
00038 
00039 template<class KerDataPtrT, class ArithT>
00040 class HxKernel2d
00041 {
00042 public:
00043 
00044                     HxKernel2d(KerDataPtrT kerPtr, HxSizes size, HxTagList&);
00045                     ~HxKernel2d();
00046 
00047     ArithT          operator ()(int i, int j) const;
00048     static HxString className();
00049 
00050 private:
00051     ArithT*         _data;
00052     int             _width;         
00053 };
00054 
00055 template<class KerDataPtrT, class ArithT>
00056 inline ArithT
00057 HxKernel2d<KerDataPtrT, ArithT>::operator() (int i, int j) const
00058 {
00059     return _data[j*_width+i];
00060 }
00061 
00062 template<class KerDataPtrT, class ArithT>
00063 class HxKernel3d
00064 {
00065 public:
00066 
00067                     HxKernel3d(KerDataPtrT kerPtr, HxSizes size, HxTagList&);
00068                     ~HxKernel3d();
00069 
00070     ArithT          operator ()(int i, int j, int k) const;
00071     static HxString className();
00072 
00073 private:
00074     ArithT*         _data;
00075     int             _width;
00076     int             _height;
00077 };
00078 
00079 template<class KerDataPtrT, class ArithT>
00080 inline ArithT
00081 HxKernel3d<KerDataPtrT, ArithT>::operator() (int i, int j, int k) const
00082 {
00083     return _data[(k*_height+j)*_width+i];
00084 }
00085 
00086 #ifdef INC_TEMPLATE_SRC
00087 #include "HxKernel.c"
00088 #endif
00089 
00090 #endif

Generated on Tue Jan 8 13:59:14 2002 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001