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
00077 class VTK_GRAPHICS_EXPORT vtkArrayCalculator : public vtkDataSetAlgorithm
00078 {
00079 public:
00080 vtkTypeRevisionMacro(vtkArrayCalculator,vtkDataSetAlgorithm);
00081 void PrintSelf(ostream& os, vtkIndent indent);
00082
00083 static vtkArrayCalculator *New();
00084
00086
00087 void SetFunction(const char* function);
00088 vtkGetStringMacro(Function);
00090
00092
00097 void AddScalarArrayName(const char* arrayName, int component = 0);
00098 void AddVectorArrayName(const char* arrayName, int component0 = 0,
00099 int component1 = 1, int component2 = 2);
00101
00103
00105 void AddScalarVariable(const char* variableName, const char* arrayName,
00106 int component = 0);
00107 void AddVectorVariable(const char* variableName, const char* arrayName,
00108 int component0 = 0, int component1 = 1,
00109 int component2 = 2);
00111
00113
00117 void SetResultArrayName(const char* name);
00118 vtkGetStringMacro(ResultArrayName);
00120
00122
00127 vtkSetMacro(AttributeMode,int);
00128 vtkGetMacro(AttributeMode,int);
00129 void SetAttributeModeToDefault()
00130 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_DEFAULT);};
00131 void SetAttributeModeToUsePointData()
00132 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_POINT_DATA);};
00133 void SetAttributeModeToUseCellData()
00134 {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_CELL_DATA);};
00135 const char *GetAttributeModeAsString();
00137
00139 void RemoveAllVariables();
00140
00142
00143 char** GetScalarArrayNames() { return this->ScalarArrayNames; }
00144 char* GetScalarArrayName(int i);
00145 char** GetVectorArrayNames() { return this->VectorArrayNames; }
00146 char* GetVectorArrayName(int i);
00147 char** GetScalarVariableNames() { return this->ScalarVariableNames; }
00148 char* GetScalarVariableName(int i);
00149 char** GetVectorVariableNames() { return this->VectorVariableNames; }
00150 char* GetVectorVariableName(int i);
00151 int* GetSelectedScalarComponents() { return this->SelectedScalarComponents; }
00152 int GetSelectedScalarComponent(int i);
00153 int** GetSelectedVectorComponents() { return this->SelectedVectorComponents;}
00154 int* GetSelectedVectorComponents(int i);
00155 vtkGetMacro(NumberOfScalarArrays, int);
00156 vtkGetMacro(NumberOfVectorArrays, int);
00158
00160
00164 vtkSetMacro(ReplaceInvalidValues,int);
00165 vtkGetMacro(ReplaceInvalidValues,int);
00166 vtkBooleanMacro(ReplaceInvalidValues,int);
00167 vtkSetMacro(ReplacementValue,double);
00168 vtkGetMacro(ReplacementValue,double);
00170
00171 protected:
00172 vtkArrayCalculator();
00173 ~vtkArrayCalculator();
00174
00175 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00176
00177 char* Function;
00178 char* ResultArrayName;
00179 char** ScalarArrayNames;
00180 char** VectorArrayNames;
00181 char** ScalarVariableNames;
00182 char** VectorVariableNames;
00183 int NumberOfScalarArrays;
00184 int NumberOfVectorArrays;
00185 int AttributeMode;
00186 int* SelectedScalarComponents;
00187 int** SelectedVectorComponents;
00188 vtkFunctionParser* FunctionParser;
00189
00190 int ReplaceInvalidValues;
00191 double ReplacementValue;
00192
00193 private:
00194 vtkArrayCalculator(const vtkArrayCalculator&);
00195 void operator=(const vtkArrayCalculator&);
00196 };
00197
00198 #endif