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
00039
00079 #ifndef __vtkProcessObject_h
00080 #define __vtkProcessObject_h
00081
00082 #include "vtkDataObject.h"
00083
00084 class VTK_COMMON_EXPORT vtkProcessObject : public vtkObject
00085 {
00086 public:
00088 static vtkProcessObject *New();
00089
00090 vtkTypeMacro(vtkProcessObject,vtkObject);
00091 void PrintSelf(ostream& os, vtkIndent indent);
00092
00094 void SetStartMethod(void (*f)(void *), void *arg);
00095
00097 void SetProgressMethod(void (*f)(void *), void *arg);
00098
00100 void SetEndMethod(void (*f)(void *), void *arg);
00101
00103 void SetStartMethodArgDelete(void (*f)(void *));
00104
00106 void SetProgressMethodArgDelete(void (*f)(void *));
00107
00109 void SetEndMethodArgDelete(void (*f)(void *));
00110
00112
00114 vtkSetMacro(AbortExecute,int);
00115 vtkGetMacro(AbortExecute,int);
00116 vtkBooleanMacro(AbortExecute,int);
00118
00120
00121 vtkSetClampMacro(Progress,float,0.0,1.0);
00122 vtkGetMacro(Progress,float);
00124
00128 void UpdateProgress(float amount);
00129
00131
00133 vtkSetStringMacro(ProgressText);
00134 vtkGetStringMacro(ProgressText);
00136
00137
00138 int AbortExecute;
00139
00141
00143 vtkDataObject **GetInputs() {return this->Inputs;}
00144 vtkGetMacro(NumberOfInputs,int);
00146
00149 void SqueezeInputArray();
00150
00152 void RemoveAllInputs();
00153
00154 protected:
00155 vtkProcessObject();
00156 ~vtkProcessObject();
00157
00158
00159 unsigned long StartTag;
00160 unsigned long ProgressTag;
00161 unsigned long EndTag;
00162 float Progress;
00163 char *ProgressText;
00164
00165 int NumberOfInputs;
00166 int NumberOfRequiredInputs;
00167 vtkDataObject **Inputs;
00168
00169
00170 vtkDataObject **SortedInputs;
00171
00172
00173 vtkDataObject **SortedInputs2;
00174 void SortInputsByLocality();
00175
00176 void SortMerge(vtkDataObject **a1, int l1,
00177 vtkDataObject **a2, int l2,
00178 vtkDataObject **results);
00179
00180
00181 void SetNumberOfInputs(int num);
00182
00183
00184 virtual void SetNthInput(int num, vtkDataObject *input);
00185 virtual void AddInput(vtkDataObject *input);
00186 virtual void RemoveInput(vtkDataObject *input);
00187
00188 private:
00189 vtkProcessObject(const vtkProcessObject&);
00190 void operator=(const vtkProcessObject&);
00191 };
00192
00193 #endif
00194