00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkImageDuplicator_h
00018 #define __itkImageDuplicator_h
00019
00020 #include "itkObject.h"
00021 #include "itkImage.h"
00022
00023 namespace itk
00024 {
00025
00046 template <class TInputImage>
00047 class ITK_EXPORT ImageDuplicator : public Object
00048 {
00049 public:
00051 typedef ImageDuplicator Self;
00052 typedef Object Superclass;
00053 typedef SmartPointer<Self> Pointer;
00054 typedef SmartPointer<const Self> ConstPointer;
00055
00057 itkNewMacro(Self);
00058
00060 itkTypeMacro(ImageDuplicator, Object);
00061
00063 typedef TInputImage ImageType;
00064 typedef typename TInputImage::Pointer ImagePointer;
00065 typedef typename TInputImage::ConstPointer ImageConstPointer;
00066 typedef typename TInputImage::PixelType PixelType;
00067 typedef typename TInputImage::IndexType IndexType;
00068
00069 itkStaticConstMacro(ImageDimension, unsigned int,
00070 ImageType::ImageDimension);
00071
00073 itkSetConstObjectMacro(InputImage,ImageType);
00074
00076 itkGetObjectMacro(Output,ImageType);
00077
00079 void Update(void);
00080
00081 protected:
00082 ImageDuplicator();
00083 virtual ~ImageDuplicator() {};
00084 void PrintSelf(std::ostream& os, Indent indent) const;
00085
00086 private:
00087 ImageDuplicator(const Self&);
00088 void operator=(const Self&);
00089
00090 ImageConstPointer m_InputImage;
00091 ImagePointer m_Output;
00092 unsigned long m_InternalImageTime;
00093
00094 };
00095
00096 }
00097
00098
00099 #define ITK_TEMPLATE_ImageDuplicator(_, EXPORT, x, y) namespace itk { \
00100 _(1(class EXPORT ImageDuplicator< ITK_TEMPLATE_1 x >)) \
00101 namespace Templates { typedef ImageDuplicator< ITK_TEMPLATE_1 x > ImageDuplicator##y; } \
00102 }
00103
00104 #if ITK_TEMPLATE_EXPLICIT
00105 # include "Templates/itkImageDuplicator+-.h"
00106 #endif
00107
00108 #if ITK_TEMPLATE_TXX
00109 # include "itkImageDuplicator.txx"
00110 #endif
00111
00112 #endif
00113