00001
00002
00003
00004
00005
00006
00007
00008
00011 #ifndef HxFuncPixOp_h
00012 #define HxFuncPixOp_h
00013
00014 #include "HxPixOpCategory.h"
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
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
00151
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