00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00053 #ifndef __vtkImageToImageFilter_h
00054 #define __vtkImageToImageFilter_h
00055
00056
00057 #include "vtkImageSource.h"
00058 #include "vtkMultiThreader.h"
00059
00060 class VTK_EXPORT vtkImageToImageFilter : public vtkImageSource
00061 {
00062 public:
00063 static vtkImageToImageFilter *New();
00064 vtkTypeMacro(vtkImageToImageFilter,vtkImageSource);
00065 void PrintSelf(ostream& os, vtkIndent indent);
00066
00068 virtual void SetInput(vtkImageData *input);
00069 vtkImageData *GetInput();
00070
00072 void SetBypass( int ) {};
00073 void BypassOn() {};
00074 void BypassOff() {};
00075 vtkGetMacro(Bypass,int);
00076
00081 virtual void ThreadedExecute(vtkImageData *inData,
00082 vtkImageData *outData,
00083 int extent[6], int threadId);
00084
00086 vtkSetClampMacro( NumberOfThreads, int, 1, VTK_MAX_THREADS );
00087 vtkGetMacro( NumberOfThreads, int );
00088
00089 void SetInputMemoryLimit(int)
00090 {vtkErrorMacro( << "SetInputMemoryLimit is obsolete: Use a vtkImageDataStreamer instead!" );};
00091 long GetInputMemoryLimit()
00092 {vtkErrorMacro( << "GetInputMemoryLimit is obsolete: Use a vtkImageDataStreamer instead!" ); return 0;};
00093
00095 virtual int SplitExtent(int splitExt[6], int startExt[6],
00096 int num, int total);
00097
00098
00099 #ifndef VTK_REMOVE_LEGACY_CODE
00100
00101
00104 virtual void UpdateImageInformation()
00105 {VTK_LEGACY_METHOD(UpdateInformation,"3.2"); this->UpdateInformation();}
00106
00111 virtual void ExecuteImageInformation()
00112 {VTK_LEGACY_METHOD(LegacyHack,"3.2"); this->LegacyHack = 0;}
00113 int LegacyHack;
00114 #endif
00115
00116 protected:
00117 vtkImageToImageFilter();
00118 ~vtkImageToImageFilter();
00119 vtkImageToImageFilter(const vtkImageToImageFilter&) {};
00120 void operator=(const vtkImageToImageFilter&) {};
00121
00122 vtkMultiThreader *Threader;
00123 int Bypass;
00124 int BypassWasOn;
00125 int NumberOfThreads;
00126
00127
00128 void ExecuteInformation();
00129
00130 virtual void ExecuteInformation(vtkImageData *inData, vtkImageData *outData);
00131
00132
00133 void Execute();
00134
00135
00136 void Execute(vtkImageData *outData) { this->vtkImageSource::Execute(outData); };
00137
00138
00139 virtual void Execute(vtkImageData *inData, vtkImageData *outData);
00140
00141 void ComputeInputUpdateExtents( vtkDataObject *output );
00142 virtual void ComputeInputUpdateExtent(int inExt[6], int outExt[6]);
00143 };
00144
00145 #endif
00146
00147
00148
00149
00150
00151
00152