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
00054 #ifndef __vtkImageMultipleInputFilter_h
00055 #define __vtkImageMultipleInputFilter_h
00056
00057
00058 #include "vtkImageSource.h"
00059 #include "vtkMultiThreader.h"
00060
00061
00062 class VTK_EXPORT vtkImageMultipleInputFilter : public vtkImageSource
00063 {
00064 public:
00065 static vtkImageMultipleInputFilter *New();
00066 vtkTypeMacro(vtkImageMultipleInputFilter,vtkImageSource);
00067 void PrintSelf(ostream& os, vtkIndent indent);
00068
00070 virtual void SetInput(int num, vtkImageData *input);
00071
00074 virtual void AddInput(vtkImageData *input);
00075 virtual void RemoveInput(vtkImageData *input);
00076
00078 vtkImageData *GetInput(int num);
00079 vtkImageData *GetInput();
00080
00084 vtkSetMacro(Bypass,int);
00085 vtkGetMacro(Bypass,int);
00086 vtkBooleanMacro(Bypass,int);
00087
00089 vtkSetClampMacro( NumberOfThreads, int, 1, VTK_MAX_THREADS );
00090 vtkGetMacro( NumberOfThreads, int );
00091
00093 virtual int SplitExtent(int splitExt[6], int startExt[6],
00094 int num, int total);
00095
00099 virtual void ThreadedExecute(vtkImageData **inDatas,
00100 vtkImageData *outData,
00101 int extent[6], int threadId);
00102
00103
00104
00105 protected:
00106 vtkImageMultipleInputFilter();
00107 ~vtkImageMultipleInputFilter();
00108 vtkImageMultipleInputFilter(const vtkImageMultipleInputFilter&) {};
00109 void operator=(const vtkImageMultipleInputFilter&) {};
00110
00111 vtkMultiThreader *Threader;
00112 int Bypass;
00113 int NumberOfThreads;
00114
00115 void ComputeInputUpdateExtents( vtkDataObject *output );
00116
00117 virtual void ComputeInputUpdateExtent( int inExt[6],
00118 int outExt[6],
00119 int whichInput );
00120
00121
00122 void Execute();
00123 void Execute(vtkImageData *outData) {this->vtkImageSource::Execute(outData);};
00124 virtual void Execute(vtkImageData **inDatas, vtkImageData *outData);
00125
00126
00127 void ExecuteInformation();
00128
00129 virtual void ExecuteInformation(vtkImageData **, vtkImageData *) {};
00130
00131 #ifndef VTK_REMOVE_LEGACY_CODE
00132
00133 virtual void ExecuteImageInformation()
00134 {VTK_LEGACY_METHOD(LegacyHack,"3.2"); this->LegacyHack = 0;}
00135 int LegacyHack;
00136 #endif
00137
00138 private:
00139
00140 void AddInput(vtkDataObject *)
00141 { vtkErrorMacro( << "AddInput() must be called with a vtkImageData not a vtkDataObject."); };
00142 void RemoveInput(vtkDataObject *)
00143 { vtkErrorMacro( << "RemoveInput() must be called with a vtkImageData not a vtkDataObject."); };
00144 };
00145
00146 #endif
00147
00148
00149
00150
00151
00152
00153