00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00066 #ifndef __vtkArrayCalculator_h
00067 #define __vtkArrayCalculator_h
00068
00069 #include "vtkDataSetAlgorithm.h"
00070
00071 class vtkFunctionParser;
00072
00073 #define VTK_ATTRIBUTE_MODE_DEFAULT 0
00074 #define VTK_ATTRIBUTE_MODE_USE_POINT_DATA 1
00075 #define VTK_ATTRIBUTE_MODE_USE_CELL_DATA 2
00076 #define VTK_ATTRIBUTE_MODE_USE_VERTEX_DATA 3
00077 #define VTK_ATTRIBUTE_MODE_USE_EDGE_DATA 4
00078
00079 class VTK_GRAPHICS_EXPORT vtkArrayCalculator : public vtkDataSetAlgorithm
00080 {
00081 public:
00082 vtkTypeRevisionMacro(vtkArrayCalculator,vtkDataSetAlgorithm);
00083 void PrintSelf(ostream& os, vtkIndent indent);
00084
00085 static vtkArrayCalculator *New();
00086
00088
00089 void SetFunction(const char* function);
00090 vtkGetStringMacro(Function);
00092
00094
00099 void AddScalarArrayName(const char* arrayName, int component = 0);
00100 void AddVectorArrayName(const char* arrayName, int component0 = 0,
00101 int component1 = 1, int component2 = 2);
00103
00105
00107 void AddScalarVariable(const char* variableName, const char* arrayName,
00108 int component = 0);
00109 void AddVectorVariable(const char* variableName, const char* arrayName,
00110 int component0 = 0, int component1 = 1,
00111 int component2 = 2);
00113
00115
00117 void AddCoordinateScalarVariable(const char* variableName,
00118 int component = 0);
00119 void AddCoordinateVectorVariable(const char* variableName,
00120 int component0 = 0, int component1 = 1,
00121 int component2 = 2);
00123
00125
00129 void SetResultArrayName(const char* name);
00130 vtkGetStringMacro(ResultArrayName);
00132
00134
00138 vtkGetMacro(CoordinateResults, int);
00139 vtkSetMacro(CoordinateResults, int);
00140 vtkBooleanMacro(CoordinateResults, int);
00142
00144
00151 vtkSetMacro(AttributeMode,int);
00152 vtkGetMacro(AttributeMode,int);
00153 void SetAttributeModeToDefault()
00154 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_DEFAULT);};
00155 void SetAttributeModeToUsePointData()
00156 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_POINT_DATA);};
00157 void SetAttributeModeToUseCellData()
00158 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_CELL_DATA);};
00159 void SetAttributeModeToUseVertexData()
00160 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_VERTEX_DATA);};
00161 void SetAttributeModeToUseEdgeData()
00162 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_EDGE_DATA);};
00163 const char *GetAttributeModeAsString();
00165
00167 void RemoveAllVariables();
00168
00171 void RemoveScalarVariables();
00172
00175 void RemoveVectorVariables();
00176
00178 void RemoveCoordinateScalarVariables();
00179
00181 void RemoveCoordinateVectorVariables();
00182
00184
00185 char** GetScalarArrayNames() { return this->ScalarArrayNames; }
00186 char* GetScalarArrayName(int i);
00187 char** GetVectorArrayNames() { return this->VectorArrayNames; }
00188 char* GetVectorArrayName(int i);
00189 char** GetScalarVariableNames() { return this->ScalarVariableNames; }
00190 char* GetScalarVariableName(int i);
00191 char** GetVectorVariableNames() { return this->VectorVariableNames; }
00192 char* GetVectorVariableName(int i);
00193 int* GetSelectedScalarComponents() { return this->SelectedScalarComponents; }
00194 int GetSelectedScalarComponent(int i);
00195 int** GetSelectedVectorComponents() { return this->SelectedVectorComponents;}
00196 int* GetSelectedVectorComponents(int i);
00197 vtkGetMacro(NumberOfScalarArrays, int);
00198 vtkGetMacro(NumberOfVectorArrays, int);
00200
00202
00206 vtkSetMacro(ReplaceInvalidValues,int);
00207 vtkGetMacro(ReplaceInvalidValues,int);
00208 vtkBooleanMacro(ReplaceInvalidValues,int);
00209 vtkSetMacro(ReplacementValue,double);
00210 vtkGetMacro(ReplacementValue,double);
00212
00213 protected:
00214 vtkArrayCalculator();
00215 ~vtkArrayCalculator();
00216
00217 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00218
00219 char* Function;
00220 char* ResultArrayName;
00221 char** ScalarArrayNames;
00222 char** VectorArrayNames;
00223 char** ScalarVariableNames;
00224 char** VectorVariableNames;
00225 int NumberOfScalarArrays;
00226 int NumberOfVectorArrays;
00227 int AttributeMode;
00228 int* SelectedScalarComponents;
00229 int** SelectedVectorComponents;
00230 vtkFunctionParser* FunctionParser;
00231
00232 int ReplaceInvalidValues;
00233 double ReplacementValue;
00234
00235 int CoordinateResults;
00236 char** CoordinateScalarVariableNames;
00237 char** CoordinateVectorVariableNames;
00238 int* SelectedCoordinateScalarComponents;
00239 int** SelectedCoordinateVectorComponents;
00240 int NumberOfCoordinateScalarArrays;
00241 int NumberOfCoordinateVectorArrays;
00242
00243 private:
00244 vtkArrayCalculator(const vtkArrayCalculator&);
00245 void operator=(const vtkArrayCalculator&);
00246 };
00247
00248 #endif