00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef HxImgFtorIMCast_h
00013 #define HxImgFtorIMCast_h
00014
00015 #include "HxSizes.h"
00016 #include "HxImgFtorIMCastKey.h"
00017 #include "HxImgFtorIM.h"
00018 #include "HxDataPtrArray.h"
00019
00020 #include "HxTagList.h"
00021
00022 class HxImageData;
00023
00024
00028 template <class DstImgSigT, class SrcImgsSigT>
00029 class L_HXIMAGEREP HxImgFtorIMCast : public HxImgFtorIM
00030 {
00031
00032 public:
00033
00035 typedef HxImgFtorIMCastKey KeyType;
00036
00038 typedef typename DstImgSigT::DataPtrType DstDataPtrType;
00039
00041 typedef typename SrcImgsSigT::DataPtrType SrcDataPtrType;
00042
00044 typedef HxDataPtrArray<SrcImgsSigT> SrcDataPtrArray;
00045
00047 HxImgFtorIMCast(const KeyType&);
00048
00050 virtual ~HxImgFtorIMCast();
00051
00053 virtual void callIt(HxImageData* dstImg, HxImageData** srcImgs,
00054 const int nImgs,
00055 HxTagList &tags);
00056
00057 protected:
00059 virtual void doIt(DstDataPtrType dstPtr, SrcDataPtrArray& srcPtrs,
00060 HxSizes dstSize, HxSizes srcSize, HxTagList &tags,
00061 HxImgFtorDescription* description = 0) = 0;
00062
00063 private:
00064 HxImgFtorIMCast();
00065 HxImgFtorIMCast(const HxImgFtorIMCast&);
00066 };
00067
00068 template <class DstImgSigT, class SrcImgsSigT>
00069 inline
00070 HxImgFtorIMCast<DstImgSigT, SrcImgsSigT>::HxImgFtorIMCast(const KeyType& key)
00071 : HxImgFtorIM(key){}
00072
00073 #ifdef INC_TEMPLATE_SRC
00074 #include "HxImgFtorIMCast.c"
00075 #endif
00076
00077 #endif