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
00028 template <class TInputImage>
00029 class ITK_EXPORT ImageDuplicator : public Object
00030 {
00031 public:
00032
00034 typedef ImageDuplicator Self;
00035 typedef Object Superclass;
00036 typedef SmartPointer<Self> Pointer;
00037 typedef SmartPointer<const Self> ConstPointer;
00038
00040 itkNewMacro(Self);
00041
00043 itkTypeMacro(ImageDuplicator, Object);
00044
00046 typedef TInputImage ImageType;
00047 typedef typename TInputImage::Pointer ImagePointer;
00048 typedef typename TInputImage::ConstPointer ImageConstPointer;
00049 typedef typename TInputImage::PixelType PixelType;
00050 typedef typename TInputImage::IndexType IndexType;
00051
00052 itkStaticConstMacro(ImageDimension, unsigned int,
00053 ImageType::ImageDimension);
00054
00056 itkSetConstObjectMacro(InputImage,ImageType);
00057
00059 itkGetObjectMacro(Output,ImageType);
00060
00062 void Update(void);
00063
00064 protected:
00065 ImageDuplicator();
00066 virtual ~ImageDuplicator() {};
00067 void PrintSelf(std::ostream& os, Indent indent) const;
00068
00069 private:
00070 ImageDuplicator(const Self&);
00071 void operator=(const Self&);
00072
00073 ImageConstPointer m_InputImage;
00074 ImagePointer m_Output;
00075 unsigned long m_InternalImageTime;
00076
00077 };
00078
00079 }
00080
00081
00082 #define ITK_TEMPLATE_ImageDuplicator(_, EXPORT, x, y) namespace itk { \
00083 _(1(class EXPORT ImageDuplicator< ITK_TEMPLATE_1 x >)) \
00084 namespace Templates { typedef ImageDuplicator< ITK_TEMPLATE_1 x > ImageDuplicator##y; } \
00085 }
00086
00087 #if ITK_TEMPLATE_EXPLICIT
00088 # include "Templates/itkImageDuplicator+-.h"
00089 #endif
00090
00091 #if ITK_TEMPLATE_TXX
00092 # include "itkImageDuplicator.txx"
00093 #endif
00094
00095 #endif
00096