00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00063 #ifndef __vtkArrayCalculator_h
00064 #define __vtkArrayCalculator_h
00065
00066 #include "vtkDataSetAlgorithm.h"
00067
00068 class vtkFunctionParser;
00069
00070 #define VTK_ATTRIBUTE_MODE_DEFAULT 0
00071 #define VTK_ATTRIBUTE_MODE_USE_POINT_DATA 1
00072 #define VTK_ATTRIBUTE_MODE_USE_CELL_DATA 2
00073 #define VTK_ATTRIBUTE_MODE_USE_VERTEX_DATA 3
00074 #define VTK_ATTRIBUTE_MODE_USE_EDGE_DATA 4
00075
00076 class VTK_GRAPHICS_EXPORT vtkArrayCalculator : public vtkDataSetAlgorithm
00077 {
00078 public:
00079 vtkTypeRevisionMacro(vtkArrayCalculator,vtkDataSetAlgorithm);
00080 void PrintSelf(ostream& os, vtkIndent indent);
00081
00082 static vtkArrayCalculator *New();
00083
00085
00086 virtual void SetFunction(const char* function);
00087 vtkGetStringMacro(Function);
00089
00091
00096 void AddScalarArrayName(const char* arrayName, int component = 0);
00097 void AddVectorArrayName(const char* arrayName, int component0 = 0,
00098 int component1 = 1, int component2 = 2);
00100
00102
00104 void AddScalarVariable(const char* variableName, const char* arrayName,
00105 int component = 0);
00106 void AddVectorVariable(const char* variableName, const char* arrayName,
00107 int component0 = 0, int component1 = 1,
00108 int component2 = 2);
00110
00112
00114 void AddCoordinateScalarVariable(const char* variableName,
00115 int component = 0);
00116 void AddCoordinateVectorVariable(const char* variableName,
00117 int component0 = 0, int component1 = 1,
00118 int component2 = 2);
00120
00122
00126 void SetResultArrayName(const char* name);
00127 vtkGetStringMacro(ResultArrayName);
00129
00131
00133 vtkGetMacro(ResultArrayType,int);
00134 vtkSetMacro(ResultArrayType,int);
00136
00138
00142 vtkGetMacro(CoordinateResults, int);
00143 vtkSetMacro(CoordinateResults, int);
00144 vtkBooleanMacro(CoordinateResults, int);
00146
00148
00155 vtkSetMacro(AttributeMode,int);
00156 vtkGetMacro(AttributeMode,int);
00157 void SetAttributeModeToDefault()
00158 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_DEFAULT);};
00159 void SetAttributeModeToUsePointData()
00160 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_POINT_DATA);};
00161 void SetAttributeModeToUseCellData()
00162 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_CELL_DATA);};
00163 void SetAttributeModeToUseVertexData()
00164 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_VERTEX_DATA);};
00165 void SetAttributeModeToUseEdgeData()
00166 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_EDGE_DATA);};
00167 const char *GetAttributeModeAsString();
00169
00171 void RemoveAllVariables();
00172
00175 virtual void RemoveScalarVariables();
00176
00179 virtual void RemoveVectorVariables();
00180
00182 virtual void RemoveCoordinateScalarVariables();
00183
00185 virtual void RemoveCoordinateVectorVariables();
00186
00188
00189 char** GetScalarArrayNames() { return this->ScalarArrayNames; }
00190 char* GetScalarArrayName(int i);
00191 char** GetVectorArrayNames() { return this->VectorArrayNames; }
00192 char* GetVectorArrayName(int i);
00193 char** GetScalarVariableNames() { return this->ScalarVariableNames; }
00194 char* GetScalarVariableName(int i);
00195 char** GetVectorVariableNames() { return this->VectorVariableNames; }
00196 char* GetVectorVariableName(int i);
00197 int* GetSelectedScalarComponents() { return this->SelectedScalarComponents; }
00198 int GetSelectedScalarComponent(int i);
00199 int** GetSelectedVectorComponents() { return this->SelectedVectorComponents;}
00200 int* GetSelectedVectorComponents(int i);
00201 vtkGetMacro(NumberOfScalarArrays, int);
00202 vtkGetMacro(NumberOfVectorArrays, int);
00204
00206
00210 vtkSetMacro(ReplaceInvalidValues,int);
00211 vtkGetMacro(ReplaceInvalidValues,int);
00212 vtkBooleanMacro(ReplaceInvalidValues,int);
00213 vtkSetMacro(ReplacementValue,double);
00214 vtkGetMacro(ReplacementValue,double);
00216
00217 protected:
00218 vtkArrayCalculator();
00219 ~vtkArrayCalculator();
00220
00221 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00222
00223 char* Function;
00224 char* ResultArrayName;
00225 char** ScalarArrayNames;
00226 char** VectorArrayNames;
00227 char** ScalarVariableNames;
00228 char** VectorVariableNames;
00229 int NumberOfScalarArrays;
00230 int NumberOfVectorArrays;
00231 int AttributeMode;
00232 int* SelectedScalarComponents;
00233 int** SelectedVectorComponents;
00234 vtkFunctionParser* FunctionParser;
00235
00236 int ReplaceInvalidValues;
00237 double ReplacementValue;
00238
00239 int CoordinateResults;
00240 char** CoordinateScalarVariableNames;
00241 char** CoordinateVectorVariableNames;
00242 int* SelectedCoordinateScalarComponents;
00243 int** SelectedCoordinateVectorComponents;
00244 int NumberOfCoordinateScalarArrays;
00245 int NumberOfCoordinateVectorArrays;
00246
00247 int ResultArrayType;
00248
00249 private:
00250 vtkArrayCalculator(const vtkArrayCalculator&);
00251 void operator=(const vtkArrayCalculator&);
00252 };
00253
00254 #endif