00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef HxImgFtorI3Cast_h
00012 #define HxImgFtorI3Cast_h
00013
00014 #include "HxSizes.h"
00015 #include "HxImgFtorI3CastKey.h"
00016 #include "HxImgFtorI3.h"
00017
00018 #include "HxTagList.h"
00019
00020 class HxImageData;
00021
00022
00026 template <class DstImgSigT, class Src1ImgSigT, class Src2ImgSigT>
00027 class L_HXIMAGEREP HxImgFtorI3Cast : public HxImgFtorI3
00028 {
00029
00030 public:
00031
00033 typedef HxImgFtorI3CastKey KeyType;
00034
00036 typedef typename DstImgSigT::DataPtrType DstDataPtrType;
00037
00039 typedef typename Src1ImgSigT::DataPtrType Src1DataPtrType;
00040
00042 typedef typename Src2ImgSigT::DataPtrType Src2DataPtrType;
00043
00045 HxImgFtorI3Cast(const KeyType&);
00046
00048 virtual ~HxImgFtorI3Cast();
00049
00051 virtual void callIt(HxImageData* dstImg, const HxImageData* src1Img,
00052 const HxImageData* src2Img, HxTagList &tags);
00053
00054 protected:
00056 virtual void doIt(DstDataPtrType dstPtr, Src1DataPtrType src1Ptr,
00057 Src2DataPtrType src2Ptr, HxSizes dstSize,
00058 HxSizes src1Size, HxSizes src2Size,
00059 HxTagList &tags, HxImgFtorDescription* = 0) = 0;
00060
00061 private:
00062 HxImgFtorI3Cast();
00063 HxImgFtorI3Cast(const HxImgFtorI3Cast&);
00064 };
00065
00066 template <class DstImgSigT, class Src1ImgSigT, class Src2ImgSigT>
00067 inline
00068
00069 HxImgFtorI3Cast<DstImgSigT, Src1ImgSigT, Src2ImgSigT> ::HxImgFtorI3Cast(const KeyType& key) : HxImgFtorI3(key){}
00070
00071 #ifdef INC_TEMPLATE_SRC
00072 #include "HxImgFtorI3Cast.c"
00073 #endif
00074
00075 #endif