00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00025 #ifndef __vtkImageShrink3D_h
00026 #define __vtkImageShrink3D_h
00027 
00028 
00029 #include "vtkThreadedImageAlgorithm.h"
00030 
00031 class VTK_IMAGING_EXPORT vtkImageShrink3D : public vtkThreadedImageAlgorithm
00032 {
00033 public:
00034   static vtkImageShrink3D *New();
00035   vtkTypeRevisionMacro(vtkImageShrink3D,vtkThreadedImageAlgorithm);
00036   void PrintSelf(ostream& os, vtkIndent indent);
00037   
00039 
00040   vtkSetVector3Macro(ShrinkFactors,int);
00041   vtkGetVector3Macro(ShrinkFactors,int);
00043 
00045 
00046   vtkSetVector3Macro(Shift,int);
00047   vtkGetVector3Macro(Shift,int);
00049 
00051 
00056   void SetAveraging(int);
00057   int GetAveraging() {return this->GetMean();};
00058   vtkBooleanMacro(Averaging,int);
00060   
00061   void SetMean(int);
00062   vtkGetMacro(Mean,int);
00063   vtkBooleanMacro(Mean,int);
00064   
00065   void SetMinimum(int);
00066   vtkGetMacro(Minimum,int);
00067   vtkBooleanMacro(Minimum,int);
00068   
00069   void SetMaximum(int);
00070   vtkGetMacro(Maximum,int);
00071   vtkBooleanMacro(Maximum,int);
00072   
00073   void SetMedian(int);
00074   vtkGetMacro(Median,int);
00075   vtkBooleanMacro(Median,int);
00076   
00077 protected:
00078   vtkImageShrink3D();
00079   ~vtkImageShrink3D() {};
00080 
00081   int ShrinkFactors[3];
00082   int Shift[3];
00083   int Mean;
00084   int Minimum;
00085   int Maximum;
00086   int Median;
00087 
00088   virtual int RequestInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00089   virtual int RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00090   
00091   void ThreadedRequestData(vtkInformation *request,
00092                            vtkInformationVector **inputVector,
00093                            vtkInformationVector *outputVector,
00094                            vtkImageData ***inData, vtkImageData **outData, 
00095                            int ext[6], int id);
00096 
00097   void InternalRequestUpdateExtent(int *inExt, int *outExt);
00098 
00099 private:
00100   vtkImageShrink3D(const vtkImageShrink3D&);  
00101   void operator=(const vtkImageShrink3D&);  
00102 };
00103 
00104 #endif
00105 
00106 
00107