Horus Doc || C++ Reference || Class Overview   Pixels   Images   Detector   Geometry   Registry || Doxygen's 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  *  Dennis Koelma           (koelma@wins.uva.nl)
00009  */
00010 
00011 #ifndef HxKernel_h
00012 #define HxKernel_h
00013 
00014 #include "HxClassName.h"
00015 #include "HxSizes.h"
00016 #include "HxTagList.h"
00017 
00018 
00021 template<class KerDataPtrT, class ArithT>
00022 class HxKernel1d
00023 {
00024 public:
00025     typedef ArithT ArithType;
00026 
00027                     HxKernel1d(KerDataPtrT kerPtr, HxSizes size, HxTagList&);
00028                     ~HxKernel1d();
00029 
00030     HxSizes         sizes() const;
00031     const ArithT&   operator ()(int i) const;
00032     static HxString className();
00033 
00034 private:
00035     HxSizes         _sizes;
00036     ArithT*         _data;
00037 };
00038 
00039 template<class KerDataPtrT, class ArithT>
00040 inline const ArithT&
00041 HxKernel1d<KerDataPtrT, ArithT>::operator() (int i) const
00042 {
00043     return _data[i];
00044 }
00045 
00046 
00047 
00050 template<class KerDataPtrT, class ArithT>
00051 class HxKernel2d
00052 {
00053 public:
00054     typedef ArithT ArithType;
00055 
00056                     HxKernel2d(KerDataPtrT kerPtr, HxSizes size, HxTagList&);
00057                     ~HxKernel2d();
00058 
00059     HxSizes         sizes() const;
00060     ArithT          operator ()(int i, int j) const;
00061     static HxString className();
00062 
00063 private:
00064     HxSizes         _sizes;
00065     ArithT*         _data;
00066     int             _width;
00067 };
00068 
00069 template<class KerDataPtrT, class ArithT>
00070 inline ArithT
00071 HxKernel2d<KerDataPtrT, ArithT>::operator() (int i, int j) const
00072 {
00073     return _data[j*_width+i];
00074 }
00075 
00076 
00077 
00080 template<class KerDataPtrT, class ArithT>
00081 class HxKernel3d
00082 {
00083 public:
00084     typedef ArithT ArithType;
00085 
00086                     HxKernel3d(KerDataPtrT kerPtr, HxSizes size, HxTagList&);
00087                     ~HxKernel3d();
00088 
00089     HxSizes         sizes() const;
00090     ArithT          operator ()(int i, int j, int k) const;
00091     static HxString className();
00092 
00093 private:
00094     HxSizes         _sizes;
00095     ArithT*         _data;
00096     int             _width;
00097     int             _height;
00098 };
00099 
00100 template<class KerDataPtrT, class ArithT>
00101 inline ArithT
00102 HxKernel3d<KerDataPtrT, ArithT>::operator() (int i, int j, int k) const
00103 {
00104     return _data[(k*_height+j)*_width+i];
00105 }
00106 
00107 #ifdef INC_TEMPLATE_SRC
00108 #include "HxKernel.c"
00109 #endif
00110 
00111 #endif

Generated on Tue Feb 3 14:18:38 2004 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001