VTK
dox/Imaging/Core/vtkImageIterateFilter.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkImageIterateFilter.h
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00026 #ifndef __vtkImageIterateFilter_h
00027 #define __vtkImageIterateFilter_h
00028 
00029 #include "vtkImagingCoreModule.h" // For export macro
00030 #include "vtkThreadedImageAlgorithm.h"
00031 
00032 class VTKIMAGINGCORE_EXPORT vtkImageIterateFilter : public vtkThreadedImageAlgorithm
00033 {
00034 public:
00035   vtkTypeMacro(vtkImageIterateFilter,vtkThreadedImageAlgorithm);
00036   void PrintSelf(ostream& os, vtkIndent indent);
00037 
00039 
00041   vtkGetMacro(Iteration,int);
00042   vtkGetMacro(NumberOfIterations,int);
00044 
00045 protected:
00046   vtkImageIterateFilter();
00047   ~vtkImageIterateFilter();
00048 
00049   // Implement standard requests by calling iterative versions the
00050   // specified number of times.
00051   virtual int RequestUpdateExtent(vtkInformation*,
00052                                   vtkInformationVector**,
00053                                   vtkInformationVector*);
00054   virtual int RequestInformation (vtkInformation*,
00055                                   vtkInformationVector**,
00056                                   vtkInformationVector*);
00057   virtual int RequestData(vtkInformation* request,
00058                           vtkInformationVector** inputVector,
00059                           vtkInformationVector* outputVector);
00060 
00061   // Iterative versions of standard requests.  These are given the
00062   // pipeline information object for the in/out pair at each
00063   // iteration.
00064   virtual int IterativeRequestInformation(vtkInformation* in,
00065                                           vtkInformation* out);
00066   virtual int IterativeRequestUpdateExtent(vtkInformation* in,
00067                                            vtkInformation* out);
00068   virtual int IterativeRequestData(vtkInformation*,
00069                                    vtkInformationVector**,
00070                                    vtkInformationVector*);
00071 
00072   virtual void SetNumberOfIterations(int num);
00073 
00074   // for filters that execute multiple times.
00075   int NumberOfIterations;
00076   int Iteration;
00077   // A list of intermediate caches that is created when
00078   // is called SetNumberOfIterations()
00079   vtkAlgorithm **IterationData;
00080 
00081   vtkInformationVector* InputVector;
00082   vtkInformationVector* OutputVector;
00083 private:
00084   vtkImageIterateFilter(const vtkImageIterateFilter&);  // Not implemented.
00085   void operator=(const vtkImageIterateFilter&);  // Not implemented.
00086 };
00087 
00088 #endif
00089 
00090 
00091 
00092 
00093 
00094 
00095