Main Page   Class Overview   Pixels   Images   Geometry   Quick Index  

HxFuncPixOp.h

Go to the documentation of this file.
00001 /*
00002  *  Copyright (c) 2000, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *  Author(s):
00006  *  Edo Poll                (poll@wins.uva.nl)
00007  */
00008 
00011 #ifndef HxFuncPixOp_h
00012 #define HxFuncPixOp_h
00013 
00014 #include "HxPixOpCategory.h"
00015 
00016 /*
00017 
00018 Declaration and description of unary, binary and in/out operations on data
00019 fields.
00020 
00021 IMPORTANT!
00022 
00023 All pixel operators should behave well on copying. A copy constructor and
00024 assignment operator should be defined whenever the default member wise
00025 copy is not sufficient.
00026 
00027 */
00028 
00031 template <class DstDataPtrT, class SrcDataPtrT, class UpoT>
00032 void
00033 HxFuncUnaryPixOp(
00034     DstDataPtrT dstPtr, SrcDataPtrT srcPtr, int nPix, UpoT& upo);
00035 
00036 
00039 template <class DstDataPtrT, class Src1DataPtrT, class Src2DataPtrT, class BpoT>
00040 void
00041 HxFuncBinaryPixOp(
00042     DstDataPtrT dstPtr, Src1DataPtrT src1Ptr, Src2DataPtrT src2Ptr,
00043     int nPix, BpoT& bpo);
00044 
00045 
00048 template <class DstDataPtrT, class SrcDataPtrArray, class MpoT>
00049 void
00050 HxFuncMultiPixOp(
00051     DstDataPtrT dstPtr, SrcDataPtrArray& srcPtrs, int nPix, MpoT& mpo);
00052 
00053 
00056 template <class DstDataPtrArray, class SrcDataPtrArray, class MNpoT>
00057 void
00058 HxFuncMNPixOp(
00059     DstDataPtrArray& dstPtr, SrcDataPtrArray& srcPtrs, int nPix, MNpoT& mpo);
00060 
00061 
00064 template <class DataPtrT, class PixOpT>
00065 void
00066 HxFuncInOutPixOp(
00067     DataPtrT ptr, HxSizes sizes, PixOpT& pixOp,
00068     HxPixOpOutTag dummy1, HxPixOpTransInVarTag dummy2, HxPixOp1PhaseTag dummy3);
00069 
00070 
00073 template <class DataPtrT, class PixOpT>
00074 void
00075 HxFuncInOutPixOp(
00076     DataPtrT ptr, HxSizes sizes, PixOpT& pixOp,
00077     HxPixOpOutTag dummy1, HxPixOpTransVarTag dummy2, HxPixOp1PhaseTag dummy3);
00078 
00079 
00082 template <class DataPtrT, class PixOpT>
00083 void
00084 HxFuncInOutPixOp(
00085     DataPtrT ptr, HxSizes sizes, PixOpT& pixOp,
00086     HxPixOpInTag dummy1, HxPixOpTransInVarTag dummy2, HxPixOp1PhaseTag dummy3);
00087 
00088 
00091 template <class DataPtrT, class PixOpT>
00092 void
00093 HxFuncInOutPixOp(
00094     DataPtrT ptr, HxSizes sizes, PixOpT& pixOp,
00095     HxPixOpInTag dummy1, HxPixOpTransVarTag dummy2, HxPixOp1PhaseTag dummy3);
00096 
00097 
00100 template <class DataPtrT, class PixOpT>
00101 void
00102 HxFuncInOutPixOp(
00103     DataPtrT ptr, HxSizes sizes, PixOpT& pixOp,
00104     HxPixOpOutTag dummy1, HxPixOpTransInVarTag dummy2, HxPixOpNPhaseTag dummy3);
00105 
00106 
00109 template <class DataPtrT, class PixOpT>
00110 void
00111 HxFuncInOutPixOp(
00112     DataPtrT ptr, HxSizes sizes, PixOpT& pixOp,
00113     HxPixOpOutTag dummy1, HxPixOpTransVarTag dummy2, HxPixOpNPhaseTag dummy3);
00114 
00115 
00118 template <class DataPtrT, class PixOpT>
00119 void
00120 HxFuncInOutPixOp(
00121     DataPtrT ptr, HxSizes sizes, PixOpT& pixOp,
00122     HxPixOpInTag dummy1, HxPixOpTransInVarTag dummy2, HxPixOpNPhaseTag dummy3);
00123 
00124 
00127 template <class DataPtrT, class PixOpT>
00128 void
00129 HxFuncInOutPixOp(
00130     DataPtrT ptr, HxSizes sizes, PixOpT& pixOp,
00131     HxPixOpInTag dummy1, HxPixOpTransVarTag dummy2, HxPixOpNPhaseTag dummy3);
00132 
00133 
00134 
00138 template <class DataPtrT, class PixOpT>
00139 inline void
00140 HxFuncInOutPixOp(DataPtrT ptr, HxSizes sizes, PixOpT& pixOp)
00141 {
00142     HxFuncInOutPixOp(
00143         ptr, sizes, pixOp,
00144         typename PixOpT::DirectionCategory(),
00145         typename PixOpT::TransVarianceCategory(),
00146         typename PixOpT::PhaseCategory());
00147 }
00148 
00149 /*
00150 The pixel operator is initialized differently for different in/out operations.
00151 For each in/out operation a matching initialization is provided.
00152 */
00153 
00156 template <class PixOpT>
00157 inline PixOpT
00158 HxFuncInOutPixOpInit(
00159     HxSizes, HxTagList& tags,
00160     const HxPixOpOutTag, const HxPixOpTransInVarTag, const HxPixOp1PhaseTag)
00161 {
00162     PixOpT pixOp(tags);
00163     return pixOp;
00164 }
00165 
00168 template <class PixOpT>
00169 inline PixOpT
00170 HxFuncInOutPixOpInit(
00171     HxSizes sizes, HxTagList& tags,
00172     const HxPixOpOutTag, const HxPixOpTransVarTag, const HxPixOp1PhaseTag)
00173 {
00174     PixOpT pixOp(tags, sizes.x(), sizes.y(), sizes.z());
00175     return pixOp;
00176 }
00177 
00180 template <class PixOpT>
00181 inline PixOpT
00182 HxFuncInOutPixOpInit(
00183     HxSizes, HxTagList& tags,
00184     const HxPixOpInTag, const HxPixOpTransInVarTag, const HxPixOp1PhaseTag)
00185 {
00186     PixOpT pixOp(tags);
00187     return pixOp;
00188 }
00189 
00192 template <class PixOpT>
00193 inline PixOpT
00194 HxFuncInOutPixOpInit(
00195     HxSizes sizes, HxTagList& tags,
00196     const HxPixOpInTag, const HxPixOpTransVarTag, const HxPixOp1PhaseTag)
00197 {
00198     PixOpT pixOp(tags, sizes.x(), sizes.y(), sizes.z());
00199     return pixOp;
00200 }
00201 
00204 template <class PixOpT>
00205 inline PixOpT
00206 HxFuncInOutPixOpInit(
00207     HxSizes, HxTagList& tags,
00208     const HxPixOpOutTag, const HxPixOpTransInVarTag, const HxPixOpNPhaseTag)
00209 {
00210     PixOpT pixOp(tags);
00211     return pixOp;
00212 }
00213 
00216 template <class PixOpT>
00217 inline PixOpT
00218 HxFuncInOutPixOpInit(
00219     HxSizes sizes, HxTagList& tags,
00220     const HxPixOpOutTag, const HxPixOpTransVarTag, const HxPixOpNPhaseTag)
00221 {
00222     PixOpT pixOp(tags, sizes.x(), sizes.y(), sizes.z());
00223     return pixOp;
00224 }
00225 
00228 template <class PixOpT>
00229 inline PixOpT
00230 HxFuncInOutPixOpInit(
00231     HxSizes, HxTagList& tags,
00232     const HxPixOpInTag, const HxPixOpTransInVarTag, const HxPixOpNPhaseTag)
00233 {
00234     PixOpT pixOp(tags);
00235     return pixOp;
00236 }
00237 
00240 template <class PixOpT>
00241 inline PixOpT
00242 HxFuncInOutPixOpInit(
00243     HxSizes sizes, HxTagList& tags,
00244     const HxPixOpInTag, const HxPixOpTransVarTag, const HxPixOpNPhaseTag)
00245 {
00246     PixOpT pixOp(tags, sizes.x(), sizes.y(), sizes.z());
00247     return pixOp;
00248 }
00249 
00250 
00254 template <class DataPtrT, class PixOpT>
00255 inline void
00256 HxFuncInOutPixOpInit(HxSizes sizes, HxTagList& tags)
00257 {
00258     HxFuncInOutPixOp(
00259         sizes, tags,
00260         typename PixOpT::DirectionCategory(),
00261         typename PixOpT::TransVarianceCategory(),
00262         typename PixOpT::PhaseCategory());
00263 }
00264 
00265 
00266 #ifdef INC_TEMPLATE_SRC
00267 #include "HxFuncPixOp.c"
00268 #endif
00269 
00270 #endif

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