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
00026 template <class DstImgSigT, class SrcImgSigT>
00027 class L_HXIMAGEREP HxImgFtorI2Cast : public HxImgFtorI2
00028 {
00029
00030 public:
00031
00033 typedef HxImgFtorI2CastKey KeyType;
00034
00036 typedef typename DstImgSigT::DataPtrType DstDataPtrType;
00037
00039 typedef typename SrcImgSigT::DataPtrType SrcDataPtrType;
00040
00042 HxImgFtorI2Cast(const KeyType&);
00043
00045 virtual ~HxImgFtorI2Cast();
00046
00048 virtual void callIt(HxImageData* dstImg, const HxImageData* srcImg,
00049 HxTagList &tags);
00050
00051 protected:
00053 virtual void doIt(DstDataPtrType dstPtr, SrcDataPtrType srcPtr,
00054 HxSizes dstSize, HxSizes srcSize, HxTagList &tags,
00055 HxImgFtorDescription* description = 0) = 0;
00056
00057 private:
00058 HxImgFtorI2Cast();
00059 HxImgFtorI2Cast(const HxImgFtorI2Cast&);
00060 };
00061
00062 template <class DstImgSigT, class SrcImgSigT>
00063 inline
00064 HxImgFtorI2Cast<DstImgSigT, SrcImgSigT>::HxImgFtorI2Cast(const KeyType& key)
00065 : HxImgFtorI2(key){}
00066
00067 #ifdef INC_TEMPLATE_SRC
00068 #include "HxImgFtorI2Cast.c"
00069 #endif
00070
00071 #endif