VTK
dox/Filters/Core/vtkArrayCalculator.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkArrayCalculator.h
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 =========================================================================*/
00066 #ifndef __vtkArrayCalculator_h
00067 #define __vtkArrayCalculator_h
00068 
00069 #include "vtkFiltersCoreModule.h" // For export macro
00070 #include "vtkDataSetAlgorithm.h"
00071 
00072 class vtkFunctionParser;
00073 
00074 #define VTK_ATTRIBUTE_MODE_DEFAULT 0
00075 #define VTK_ATTRIBUTE_MODE_USE_POINT_DATA 1
00076 #define VTK_ATTRIBUTE_MODE_USE_CELL_DATA 2
00077 #define VTK_ATTRIBUTE_MODE_USE_VERTEX_DATA 3
00078 #define VTK_ATTRIBUTE_MODE_USE_EDGE_DATA 4
00079 
00080 class VTKFILTERSCORE_EXPORT vtkArrayCalculator : public vtkDataSetAlgorithm
00081 {
00082 public:
00083   vtkTypeMacro(vtkArrayCalculator,vtkDataSetAlgorithm);
00084   void PrintSelf(ostream& os, vtkIndent indent);
00085 
00086   static vtkArrayCalculator *New();
00087 
00089 
00090   virtual void SetFunction(const char* function);
00091   vtkGetStringMacro(Function);
00093 
00095 
00100   void AddScalarArrayName(const char* arrayName, int component = 0);
00101   void AddVectorArrayName(const char* arrayName, int component0 = 0,
00102                           int component1 = 1, int component2 = 2);
00104 
00106 
00108   void AddScalarVariable(const char* variableName, const char* arrayName,
00109                          int component = 0);
00110   void AddVectorVariable(const char* variableName, const char* arrayName,
00111                          int component0 = 0, int component1 = 1,
00112                          int component2 = 2);
00114 
00116 
00118   void AddCoordinateScalarVariable(const char* variableName,
00119                                    int component = 0);
00120   void AddCoordinateVectorVariable(const char* variableName,
00121                                    int component0 = 0, int component1 = 1,
00122                                    int component2 = 2);
00124 
00126 
00130   void SetResultArrayName(const char* name);
00131   vtkGetStringMacro(ResultArrayName);
00133 
00135 
00137   vtkGetMacro(ResultArrayType,int);
00138   vtkSetMacro(ResultArrayType,int);
00140 
00142 
00146   vtkGetMacro(CoordinateResults, int);
00147   vtkSetMacro(CoordinateResults, int);
00148   vtkBooleanMacro(CoordinateResults, int);
00150 
00152 
00159   vtkSetMacro(AttributeMode,int);
00160   vtkGetMacro(AttributeMode,int);
00161   void SetAttributeModeToDefault()
00162     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_DEFAULT);};
00163   void SetAttributeModeToUsePointData()
00164     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_POINT_DATA);};
00165   void SetAttributeModeToUseCellData()
00166     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_CELL_DATA);};
00167   void SetAttributeModeToUseVertexData()
00168     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_VERTEX_DATA);};
00169   void SetAttributeModeToUseEdgeData()
00170     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_EDGE_DATA);};
00171   const char *GetAttributeModeAsString();
00173 
00175   void RemoveAllVariables();
00176 
00179   virtual void RemoveScalarVariables();
00180 
00183   virtual void RemoveVectorVariables();
00184 
00186   virtual void RemoveCoordinateScalarVariables();
00187 
00189   virtual void RemoveCoordinateVectorVariables();
00190 
00192 
00193   char** GetScalarArrayNames() { return this->ScalarArrayNames; }
00194   char* GetScalarArrayName(int i);
00195   char** GetVectorArrayNames() { return this->VectorArrayNames; }
00196   char* GetVectorArrayName(int i);
00197   char** GetScalarVariableNames() { return this->ScalarVariableNames; }
00198   char* GetScalarVariableName(int i);
00199   char** GetVectorVariableNames() { return this->VectorVariableNames; }
00200   char* GetVectorVariableName(int i);
00201   int* GetSelectedScalarComponents() { return this->SelectedScalarComponents; }
00202   int GetSelectedScalarComponent(int i);
00203   int** GetSelectedVectorComponents() { return this->SelectedVectorComponents;}
00204   int* GetSelectedVectorComponents(int i);
00205   vtkGetMacro(NumberOfScalarArrays, int);
00206   vtkGetMacro(NumberOfVectorArrays, int);
00208 
00210 
00214   vtkSetMacro(ReplaceInvalidValues,int);
00215   vtkGetMacro(ReplaceInvalidValues,int);
00216   vtkBooleanMacro(ReplaceInvalidValues,int);
00217   vtkSetMacro(ReplacementValue,double);
00218   vtkGetMacro(ReplacementValue,double);
00220 
00221 protected:
00222   vtkArrayCalculator();
00223   ~vtkArrayCalculator();
00224 
00225   virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00226 
00227   char  * Function;
00228   char  * ResultArrayName;
00229   char ** ScalarArrayNames;
00230   char ** VectorArrayNames;
00231   char ** ScalarVariableNames;
00232   char ** VectorVariableNames;
00233   int     NumberOfScalarArrays;
00234   int     NumberOfVectorArrays;
00235   int     AttributeMode;
00236   int   * SelectedScalarComponents;
00237   int  ** SelectedVectorComponents;
00238   vtkFunctionParser* FunctionParser;
00239 
00240   int     ReplaceInvalidValues;
00241   double  ReplacementValue;
00242 
00243   int     CoordinateResults;
00244   char ** CoordinateScalarVariableNames;
00245   char ** CoordinateVectorVariableNames;
00246   int   * SelectedCoordinateScalarComponents;
00247   int  ** SelectedCoordinateVectorComponents;
00248   int     NumberOfCoordinateScalarArrays;
00249   int     NumberOfCoordinateVectorArrays;
00250 
00251   int     ResultArrayType;
00252 private:
00253   vtkArrayCalculator(const vtkArrayCalculator&);  // Not implemented.
00254   void operator=(const vtkArrayCalculator&);  // Not implemented.
00255 };
00256 
00257 #endif