Filtering/vtkImageMultipleInputFilter.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00026 #ifndef __vtkImageMultipleInputFilter_h
00027 #define __vtkImageMultipleInputFilter_h
00028
00029 #include "vtkImageSource.h"
00030
00031 class vtkMultiThreader;
00032
00033 class VTK_FILTERING_EXPORT vtkImageMultipleInputFilter : public vtkImageSource
00034 {
00035 public:
00036 vtkTypeRevisionMacro(vtkImageMultipleInputFilter,vtkImageSource);
00037 void PrintSelf(ostream& os, vtkIndent indent);
00038
00040 virtual void SetInput(int num, vtkImageData *input);
00041
00043
00045 virtual void AddInput(vtkImageData *input);
00046 virtual void RemoveInput(vtkImageData *input);
00048
00050
00051 vtkImageData *GetInput(int num);
00052 vtkImageData *GetInput();
00054
00056
00059 vtkSetMacro(Bypass,int);
00060 vtkGetMacro(Bypass,int);
00061 vtkBooleanMacro(Bypass,int);
00063
00065
00066 vtkSetClampMacro( NumberOfThreads, int, 1, VTK_MAX_THREADS );
00067 vtkGetMacro( NumberOfThreads, int );
00069
00071
00072 virtual int SplitExtent(int splitExt[6], int startExt[6],
00073 int num, int total);
00075
00077
00080 virtual void ThreadedExecute(vtkImageData **inDatas,
00081 vtkImageData *outData,
00082 int extent[6], int threadId);
00084
00085
00086
00087 protected:
00088 vtkImageMultipleInputFilter();
00089 ~vtkImageMultipleInputFilter();
00090
00091 vtkMultiThreader *Threader;
00092 int Bypass;
00093 int NumberOfThreads;
00094
00095 void ComputeInputUpdateExtents( vtkDataObject *output );
00096
00097 virtual void ComputeInputUpdateExtent( int inExt[6],
00098 int outExt[6],
00099 int whichInput );
00100
00101
00102 void ExecuteData(vtkDataObject *output);
00103 void MultiThread(vtkImageData **indatas, vtkImageData *outdata);
00104
00105
00106 void ExecuteInformation();
00107
00108 virtual void ExecuteInformation(vtkImageData **, vtkImageData *) {};
00109
00110 private:
00111
00112 void AddInput(vtkDataObject *)
00113 { vtkErrorMacro( << "AddInput() must be called with a vtkImageData not a vtkDataObject."); };
00114 void RemoveInput(vtkDataObject *)
00115 { vtkErrorMacro( << "RemoveInput() must be called with a vtkImageData not a vtkDataObject."); };
00116 private:
00117 vtkImageMultipleInputFilter(const vtkImageMultipleInputFilter&);
00118 void operator=(const vtkImageMultipleInputFilter&);
00119 };
00120
00121 #endif
00122
00123
00124
00125
00126
00127
00128