Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Common/vtkProcessObject.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkProcessObject.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00055 #ifndef __vtkProcessObject_h 00056 #define __vtkProcessObject_h 00057 00058 #include "vtkObject.h" 00059 00060 class vtkDataObject; 00061 00062 class VTK_COMMON_EXPORT vtkProcessObject : public vtkObject 00063 { 00064 public: 00065 vtkTypeRevisionMacro(vtkProcessObject,vtkObject); 00066 void PrintSelf(ostream& os, vtkIndent indent); 00067 00069 void SetStartMethod(void (*f)(void *), void *arg); 00070 00072 void SetProgressMethod(void (*f)(void *), void *arg); 00073 00075 void SetEndMethod(void (*f)(void *), void *arg); 00076 00078 void SetStartMethodArgDelete(void (*f)(void *)); 00079 00081 void SetProgressMethodArgDelete(void (*f)(void *)); 00082 00084 void SetEndMethodArgDelete(void (*f)(void *)); 00085 00087 00089 vtkSetMacro(AbortExecute,int); 00090 vtkGetMacro(AbortExecute,int); 00091 vtkBooleanMacro(AbortExecute,int); 00093 00095 00096 vtkSetClampMacro(Progress,float,0.0f,1.0f); 00097 vtkGetMacro(Progress,float); 00099 00103 void UpdateProgress(float amount); 00104 00106 00108 vtkSetStringMacro(ProgressText); 00109 vtkGetStringMacro(ProgressText); 00111 00112 // left public for performance since it is used in inner loops 00113 int AbortExecute; 00114 00116 00118 vtkDataObject **GetInputs() {return this->Inputs;} 00119 vtkGetMacro(NumberOfInputs,int); 00121 00124 void SqueezeInputArray(); 00125 00127 void RemoveAllInputs(); 00128 00129 protected: 00130 vtkProcessObject(); 00131 ~vtkProcessObject(); 00132 00133 // Progress/Update handling 00134 unsigned long StartTag; 00135 unsigned long ProgressTag; 00136 unsigned long EndTag; 00137 float Progress; 00138 char *ProgressText; 00139 00140 int NumberOfInputs; 00141 int NumberOfRequiredInputs; 00142 vtkDataObject **Inputs; //An array of the inputs to the filter 00143 // Temporary arrays used internally. 00144 // It is only valid after SortInputsByLocality is called. 00145 vtkDataObject **SortedInputs; // Inputs sorted by locality 00146 // We need a second array for an effficeint search. 00147 // This array is never valid. 00148 vtkDataObject **SortedInputs2; 00149 void SortInputsByLocality(); 00150 // A helper method for quicksort. 00151 void SortMerge(vtkDataObject **a1, int l1, 00152 vtkDataObject **a2, int l2, 00153 vtkDataObject **results); 00154 00155 // Called to allocate the input array. Copies old inputs. 00156 void SetNumberOfInputs(int num); 00157 00158 // protected methods for setting inputs. 00159 virtual void SetNthInput(int num, vtkDataObject *input); 00160 virtual void AddInput(vtkDataObject *input); 00161 virtual void RemoveInput(vtkDataObject *input); 00162 00163 private: 00164 vtkProcessObject(const vtkProcessObject&); // Not implemented. 00165 void operator=(const vtkProcessObject&); // Not implemented. 00166 }; 00167 00168 #endif 00169