00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __itkInPlaceImageFilter_h
00021 #define __itkInPlaceImageFilter_h
00022
00023 #include "itkImageToImageFilter.h"
00024
00025 namespace itk
00026 {
00027
00061 template <class TInputImage, class TOutputImage=TInputImage>
00062 class ITK_EXPORT InPlaceImageFilter : public ImageToImageFilter<TInputImage, TOutputImage>
00063 {
00064 public:
00066 typedef InPlaceImageFilter Self;
00067 typedef ImageToImageFilter<TInputImage, TOutputImage> Superclass;
00068 typedef SmartPointer<Self> Pointer;
00069 typedef SmartPointer<const Self> ConstPointer;
00070
00071
00073 itkTypeMacro(InPlaceImageFilter,ImageToImageFilter);
00074
00076 typedef typename Superclass::OutputImageType OutputImageType;
00077 typedef typename Superclass::OutputImagePointer OutputImagePointer;
00078 typedef typename Superclass::OutputImageRegionType OutputImageRegionType;
00079 typedef typename Superclass::OutputImagePixelType OutputImagePixelType;
00080
00082 typedef TInputImage InputImageType;
00083 typedef typename InputImageType::Pointer InputImagePointer;
00084 typedef typename InputImageType::ConstPointer InputImageConstPointer;
00085 typedef typename InputImageType::RegionType InputImageRegionType;
00086 typedef typename InputImageType::PixelType InputImagePixelType;
00087
00089 itkStaticConstMacro(InputImageDimension, unsigned int,
00090 TInputImage::ImageDimension);
00091 itkStaticConstMacro(OutputImageDimension, unsigned int,
00092 TOutputImage::ImageDimension);
00093
00096 itkSetMacro(InPlace, bool);
00097 itkGetMacro(InPlace, bool);
00098 itkBooleanMacro(InPlace);
00099
00106 bool CanRunInPlace() const
00107 {
00108 return (typeid(TInputImage) == typeid(TOutputImage));
00109 };
00110
00111 protected:
00112 InPlaceImageFilter();
00113 ~InPlaceImageFilter();
00114
00115 virtual void PrintSelf(std::ostream& os, Indent indent) const;
00116
00129 virtual void AllocateOutputs();
00130
00140 virtual void ReleaseInputs();
00141
00142 private:
00143 InPlaceImageFilter(const Self&);
00144 void operator=(const Self&);
00145
00146 bool m_InPlace;
00147
00148 };
00149
00150 }
00151
00152 #ifndef ITK_MANUAL_INSTANTIATION
00153 #include "itkInPlaceImageFilter.txx"
00154 #endif
00155
00156 #endif