00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef HxImgFtorI2Cast_h
00012 #define HxImgFtorI2Cast_h
00013
00014 #include "HxSizes.h"
00015 #include "HxImgFtorI2CastKey.h"
00016 #include "HxImgFtorI2.h"
00017
00018 #include "HxTagList.h"
00019
00020 class HxImageData;
00021
00022
00032 template <class Img1SigT, class Img2SigT>
00033 class L_HXIMAGEREP HxImgFtorI2Cast : public HxImgFtorI2
00034 {
00035
00036 public:
00037
00039 typedef HxImgFtorI2CastKey KeyType;
00040
00042 typedef typename Img1SigT::DataPtrType Img1DataPtrType;
00043
00045 typedef typename Img2SigT::DataPtrType Img2DataPtrType;
00046
00048 HxImgFtorI2Cast(const KeyType&);
00049
00051 virtual ~HxImgFtorI2Cast();
00052
00054 virtual void callIt(HxImageData* img1, HxImageData* img2,
00055 HxTagList &tags);
00056
00057 protected:
00068 virtual void doIt(Img1DataPtrType img1Ptr, Img2DataPtrType img2Ptr,
00069 HxSizes img1Size, HxSizes img2Size, HxTagList &tags,
00070 HxImgFtorDescription* description = 0) = 0;
00071
00072 private:
00073 HxImgFtorI2Cast();
00074 HxImgFtorI2Cast(const HxImgFtorI2Cast&);
00075 };
00076
00077 template <class Img1SigT, class Img2SigT>
00078 inline
00079 HxImgFtorI2Cast<Img1SigT, Img2SigT>::HxImgFtorI2Cast(const KeyType& key)
00080 : HxImgFtorI2(key)
00081 {
00082 }
00083
00084 #ifdef INC_TEMPLATE_SRC
00085 #include "HxImgFtorI2Cast.c"
00086 #endif
00087
00088 #endif