ITK
4.1.0
Insight Segmentation and Registration Toolkit
|
00001 /*========================================================================= 00002 * 00003 * Copyright Insight Software Consortium 00004 * 00005 * Licensed under the Apache License, Version 2.0 (the "License"); 00006 * you may not use this file except in compliance with the License. 00007 * You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0.txt 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, 00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 * 00017 *=========================================================================*/ 00018 /*========================================================================= 00019 * 00020 * Portions of this file are subject to the VTK Toolkit Version 3 copyright. 00021 * 00022 * Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00023 * 00024 * For complete copyright, license and disclaimer of warranty information 00025 * please refer to the NOTICE file at the top of the ITK source tree. 00026 * 00027 *=========================================================================*/ 00028 #ifndef __itkImageToImageFilter_h 00029 #define __itkImageToImageFilter_h 00030 00031 #include "itkImageSource.h" 00032 #include "itkConceptChecking.h" 00033 #include "itkImageToImageFilterDetail.h" 00034 00035 namespace itk 00036 { 00079 template< class TInputImage, class TOutputImage > 00080 class ITK_EXPORT ImageToImageFilter:public ImageSource< TOutputImage > 00081 { 00082 public: 00084 typedef ImageToImageFilter Self; 00085 typedef ImageSource< TOutputImage > Superclass; 00086 typedef SmartPointer< Self > Pointer; 00087 typedef SmartPointer< const Self > ConstPointer; 00088 00090 itkTypeMacro(ImageToImageFilter, ImageSource); 00091 00093 typedef typename Superclass::OutputImageRegionType OutputImageRegionType; 00094 typedef typename Superclass::OutputImagePixelType OutputImagePixelType; 00095 00097 typedef TInputImage InputImageType; 00098 typedef typename InputImageType::Pointer InputImagePointer; 00099 typedef typename InputImageType::ConstPointer InputImageConstPointer; 00100 typedef typename InputImageType::RegionType InputImageRegionType; 00101 typedef typename InputImageType::PixelType InputImagePixelType; 00102 00104 itkStaticConstMacro(InputImageDimension, unsigned int, 00105 TInputImage::ImageDimension); 00106 itkStaticConstMacro(OutputImageDimension, unsigned int, 00107 TOutputImage::ImageDimension); 00109 00111 using Superclass::SetInput; 00112 virtual void SetInput(const InputImageType *image); 00113 00114 virtual void SetInput(unsigned int, const TInputImage *image); 00115 00116 const InputImageType * GetInput(void) const; 00117 00118 const InputImageType * GetInput(unsigned int idx) const; 00119 00139 virtual void PushBackInput(const InputImageType *image); 00140 00141 virtual void PopBackInput(); 00142 00143 virtual void PushFrontInput(const InputImageType *image); 00144 00145 virtual void PopFrontInput(); 00146 00147 protected: 00148 ImageToImageFilter(); 00149 ~ImageToImageFilter(); 00150 00151 virtual void PrintSelf(std::ostream & os, Indent indent) const; 00152 00172 virtual void VerifyInputInformation(); 00173 00198 virtual void GenerateInputRequestedRegion(); 00199 00202 typedef ImageToImageFilterDetail::ImageRegionCopier< itkGetStaticConstMacro(OutputImageDimension), 00203 itkGetStaticConstMacro(InputImageDimension) > 00204 InputToOutputRegionCopierType; 00205 00208 typedef ImageToImageFilterDetail::ImageRegionCopier< itkGetStaticConstMacro(InputImageDimension), 00209 itkGetStaticConstMacro(OutputImageDimension) > 00210 OutputToInputRegionCopierType; 00211 00247 virtual void CallCopyOutputRegionToInputRegion(InputImageRegionType & destRegion, 00248 const OutputImageRegionType & srcRegion); 00249 00280 virtual void CallCopyInputRegionToOutputRegion(OutputImageRegionType & destRegion, 00281 const InputImageRegionType & srcRegion); 00282 00291 void PushBackInput(const DataObject *input) 00292 { Superclass::PushBackInput(input); } 00293 void PushFrontInput(const DataObject *input) 00294 { Superclass::PushFrontInput(input); } 00295 private: 00296 ImageToImageFilter(const Self &); //purposely not implemented 00297 void operator=(const Self &); //purposely not implemented 00298 }; 00299 } // end namespace itk 00301 00302 // Define instantiation macro for this template. 00303 #define ITK_TEMPLATE_ImageToImageFilter(_, EXPORT, TypeX, TypeY) \ 00304 namespace itk \ 00305 { \ 00306 _( 2 ( class EXPORT ImageToImageFilter< ITK_TEMPLATE_2 TypeX > ) ) \ 00307 namespace Templates \ 00308 { \ 00309 typedef ImageToImageFilter< ITK_TEMPLATE_2 TypeX > ImageToImageFilter##TypeY; \ 00310 } \ 00311 } 00312 00313 #if ITK_TEMPLATE_EXPLICIT 00314 #include "Templates/itkImageToImageFilter+-.h" 00315 #endif 00316 00317 #if ITK_TEMPLATE_TXX 00318 #include "itkImageToImageFilter.hxx" 00319 #endif 00320 00321 #endif 00322