00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef HxImgFtorIMNCast_h
00013 #define HxImgFtorIMNCast_h
00014
00015 #include "HxSizes.h"
00016 #include "HxImgFtorIMNCastKey.h"
00017 #include "HxImgFtorIMN.h"
00018 #include "HxDataPtrArray.h"
00019
00020 #include "HxTagList.h"
00021
00022 class HxImageData;
00023
00024
00034 template <class DstImgsSigT, class SrcImgsSigT>
00035 class L_HXIMAGEREP HxImgFtorIMNCast : public HxImgFtorIMN
00036 {
00037
00038 public:
00039
00041 typedef HxImgFtorIMNCastKey KeyType;
00042
00044 typedef DstImgsSigT::DataPtrType DstDataPtrType;
00045
00047 typedef SrcImgsSigT::DataPtrType SrcDataPtrType;
00048
00050 typedef HxDataPtrArray<SrcImgsSigT> SrcDataPtrArray;
00051
00053 typedef HxDataPtrArray<DstImgsSigT> DstDataPtrArray;
00054
00056 HxImgFtorIMNCast(const KeyType&);
00057
00059 virtual ~HxImgFtorIMNCast();
00060
00062 virtual void callIt(HxImageData** dstImgs, int dstCnt,
00063 HxImageData** srcImgs, int srcCnt,
00064 HxTagList &tags);
00065
00066 protected:
00072 virtual void doIt(DstDataPtrArray& dstPtrs, SrcDataPtrArray& srcPtrs,
00073 HxSizes dstSize, HxSizes srcSize, HxTagList &tags,
00074 HxImgFtorDescription* description = 0) = 0;
00075
00076 private:
00077 HxImgFtorIMNCast();
00078 HxImgFtorIMNCast(const HxImgFtorIMNCast&);
00079 };
00080
00081 template <class DstImgsSigT, class SrcImgsSigT>
00082 inline
00083 HxImgFtorIMNCast<DstImgsSigT, SrcImgsSigT>::HxImgFtorIMNCast(const KeyType& key)
00084 : HxImgFtorIMN(key){}
00085
00086 #ifdef INC_TEMPLATE_SRC
00087 #include "HxImgFtorIMNCast.c"
00088 #endif
00089
00090 #endif