VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkArrayCalculator.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 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&); // Not implemented. 00251 void operator=(const vtkArrayCalculator&); // Not implemented. 00252 }; 00253 00254 #endif