/vol/vipdata/irtk/image++/include/irtkImageToImage.h

00001 /*=========================================================================
00002 
00003   Library   : Image Registration Toolkit (IRTK)
00004   Module    : $Id: irtkImageToImage.h 2 2008-12-23 12:40:14Z dr $
00005   Copyright : Imperial College, Department of Computing
00006               Visual Information Processing (VIP), 2008 onwards
00007   Date      : $Date: 2008-12-23 12:40:14 +0000 (Tue, 23 Dec 2008) $
00008   Version   : $Revision: 2 $
00009   Changes   : $Author: dr $
00010 
00011 =========================================================================*/
00012 
00013 #ifndef _IRTKIMAGETOIMAGE_H
00014 
00015 #define _IRTKIMAGETOIMAGE_H
00016 
00017 #ifdef HAS_TBB
00018 
00019 template <class VoxelType> class irtkMultiThreadedImageToImage;
00020 
00021 #endif
00022 
00031 template <class VoxelType> class irtkImageToImage : public irtkObject
00032 {
00033 
00034 #ifdef HAS_TBB
00035 
00036   friend class irtkMultiThreadedImageToImage<VoxelType>;
00037 
00038 #endif
00039 
00040 private:
00041 
00043   irtkGenericImage<VoxelType> *_tmp;
00044 
00046   Bool _DebugFlag;
00047 
00048 protected:
00049 
00051   irtkGenericImage<VoxelType> *_input;
00052 
00054   irtkGenericImage<VoxelType> *_output;
00055 
00058   virtual void Initialize();
00059 
00062   virtual void Finalize();
00063 
00064 public:
00065 
00067   irtkImageToImage();
00068 
00070   virtual ~irtkImageToImage();
00071 
00073   virtual void SetInput (irtkGenericImage<VoxelType> *);
00074 
00076   virtual void SetOutput(irtkGenericImage<VoxelType> *);
00077 
00079   virtual void   Run();
00080 
00082   virtual double Run(int, int, int, int = 0);
00083 
00084 
00091   virtual Bool RequiresBuffering() = 0;
00092 
00094   virtual const char *NameOfClass() = 0;
00095 
00097   SetMacro(DebugFlag, Bool);
00098 
00100   GetMacro(DebugFlag, Bool);
00101 
00103   virtual void Debug(const char *);
00104 };
00105 
00106 #endif