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