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
00033 template <class Img1SigT, class Img2SigT, class Img3SigT>
00034 class L_HXIMAGEREP HxImgFtorI3Cast : public HxImgFtorI3
00035 {
00036
00037 public:
00038
00040 typedef HxImgFtorI3CastKey KeyType;
00041
00043 typedef typename Img1SigT::DataPtrType Img1DataPtrType;
00044
00046 typedef typename Img2SigT::DataPtrType Img2DataPtrType;
00047
00049 typedef typename Img3SigT::DataPtrType Img3DataPtrType;
00050
00052 HxImgFtorI3Cast(const KeyType&);
00053
00055 virtual ~HxImgFtorI3Cast();
00056
00058 virtual void callIt(HxImageData* img1, HxImageData* img2,
00059 HxImageData* img3, HxTagList &tags);
00060
00061 protected:
00072 virtual void doIt(Img1DataPtrType img1Ptr, Img2DataPtrType img2Ptr,
00073 Img3DataPtrType img3Ptr, HxSizes img1Size,
00074 HxSizes img2Size, HxSizes img3Size,
00075 HxTagList &tags, HxImgFtorDescription* = 0) = 0;
00076
00077 private:
00078 HxImgFtorI3Cast();
00079 HxImgFtorI3Cast(const HxImgFtorI3Cast&);
00080 };
00081
00082 template <class Img1SigT, class Img2SigT, class Img3SigT>
00083 inline
00084
00085 HxImgFtorI3Cast<Img1SigT, Img2SigT, Img3SigT> ::HxImgFtorI3Cast(const KeyType& key) : HxImgFtorI3(key)
00086 {
00087 }
00088
00089 #ifdef INC_TEMPLATE_SRC
00090 #include "HxImgFtorI3Cast.c"
00091 #endif
00092
00093 #endif