00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef HxImgFtorI4Cast_h
00010 #define HxImgFtorI4Cast_h
00011
00012 #include "HxSizes.h"
00013 #include "HxImgFtorI4CastKey.h"
00014 #include "HxImgFtorI4.h"
00015
00016 #include "HxTagList.h"
00017
00018 class HxImageData;
00019
00020
00032 template <class Img1SigT, class Img2SigT, class Img3SigT, class Img4SigT>
00033 class L_HXIMAGEREP HxImgFtorI4Cast : public HxImgFtorI4
00034 {
00035
00036 public:
00037
00039 typedef HxImgFtorI4CastKey KeyType;
00040
00042 typedef typename Img1SigT::DataPtrType Img1DataPtrType;
00043
00045 typedef typename Img2SigT::DataPtrType Img2DataPtrType;
00046
00048 typedef typename Img3SigT::DataPtrType Img3DataPtrType;
00049
00051 typedef typename Img4SigT::DataPtrType Img4DataPtrType;
00052
00054 HxImgFtorI4Cast(const KeyType&);
00055
00057 virtual ~HxImgFtorI4Cast();
00058
00060 virtual void callIt(HxImageData* img1, HxImageData* img2,
00061 HxImageData* img3, HxImageData* img4,
00062 HxTagList &tags);
00063
00064 protected:
00070 virtual void doIt(Img1DataPtrType img1Ptr, Img2DataPtrType img2Ptr,
00071 Img3DataPtrType img3Ptr, Img4DataPtrType img4Ptr,
00072 HxSizes img1Size, HxSizes img2Size,
00073 HxSizes img3Size, HxSizes img4Size,
00074 HxTagList &tags, HxImgFtorDescription* = 0) = 0;
00075
00076 private:
00077 HxImgFtorI4Cast();
00078 HxImgFtorI4Cast(const HxImgFtorI4Cast&);
00079 };
00080
00081 template <class Img1SigT, class Img2SigT, class Img3SigT, class Img4SigT>
00082 inline
00083
00084 HxImgFtorI4Cast<Img1SigT, Img2SigT, Img3SigT, Img4SigT> ::HxImgFtorI4Cast(const KeyType& key) : HxImgFtorI4(key)
00085 {
00086 }
00087
00088 #ifdef INC_TEMPLATE_SRC
00089 #include "HxImgFtorI4Cast.c"
00090 #endif
00091
00092 #endif