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 
00155   vtkGetMacro(ResultNormals, bool);
00156   vtkSetMacro(ResultNormals, bool);
00157   vtkBooleanMacro(ResultNormals, bool);
00159 
00161 
00164   vtkGetMacro(ResultTCoords, bool);
00165   vtkSetMacro(ResultTCoords, bool);
00166   vtkBooleanMacro(ResultTCoords, bool);
00168 
00170 
00177   vtkSetMacro(AttributeMode,int);
00178   vtkGetMacro(AttributeMode,int);
00179   void SetAttributeModeToDefault()
00180     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_DEFAULT);};
00181   void SetAttributeModeToUsePointData()
00182     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_POINT_DATA);};
00183   void SetAttributeModeToUseCellData()
00184     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_CELL_DATA);};
00185   void SetAttributeModeToUseVertexData()
00186     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_VERTEX_DATA);};
00187   void SetAttributeModeToUseEdgeData()
00188     {this->SetAttributeMode(VTK_ATTRIBUTE_MODE_USE_EDGE_DATA);};
00189   const char *GetAttributeModeAsString();
00191 
00193   void RemoveAllVariables();
00194 
00197   virtual void RemoveScalarVariables();
00198 
00201   virtual void RemoveVectorVariables();
00202 
00204   virtual void RemoveCoordinateScalarVariables();
00205 
00207   virtual void RemoveCoordinateVectorVariables();
00208 
00210 
00211   char** GetScalarArrayNames() { return this->ScalarArrayNames; }
00212   char* GetScalarArrayName(int i);
00213   char** GetVectorArrayNames() { return this->VectorArrayNames; }
00214   char* GetVectorArrayName(int i);
00215   char** GetScalarVariableNames() { return this->ScalarVariableNames; }
00216   char* GetScalarVariableName(int i);
00217   char** GetVectorVariableNames() { return this->VectorVariableNames; }
00218   char* GetVectorVariableName(int i);
00219   int* GetSelectedScalarComponents() { return this->SelectedScalarComponents; }
00220   int GetSelectedScalarComponent(int i);
00221   int** GetSelectedVectorComponents() { return this->SelectedVectorComponents;}
00222   int* GetSelectedVectorComponents(int i);
00223   vtkGetMacro(NumberOfScalarArrays, int);
00224   vtkGetMacro(NumberOfVectorArrays, int);
00226 
00228 
00232   vtkSetMacro(ReplaceInvalidValues,int);
00233   vtkGetMacro(ReplaceInvalidValues,int);
00234   vtkBooleanMacro(ReplaceInvalidValues,int);
00235   vtkSetMacro(ReplacementValue,double);
00236   vtkGetMacro(ReplacementValue,double);
00238 
00239 protected:
00240   vtkArrayCalculator();
00241   ~vtkArrayCalculator();
00242 
00243   virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00244 
00245   char  * Function;
00246   char  * ResultArrayName;
00247   char ** ScalarArrayNames;
00248   char ** VectorArrayNames;
00249   char ** ScalarVariableNames;
00250   char ** VectorVariableNames;
00251   int     NumberOfScalarArrays;
00252   int     NumberOfVectorArrays;
00253   int     AttributeMode;
00254   int   * SelectedScalarComponents;
00255   int  ** SelectedVectorComponents;
00256   vtkFunctionParser* FunctionParser;
00257 
00258   int     ReplaceInvalidValues;
00259   double  ReplacementValue;
00260 
00261   int     CoordinateResults;
00262   bool    ResultNormals;
00263   bool    ResultTCoords;
00264   char ** CoordinateScalarVariableNames;
00265   char ** CoordinateVectorVariableNames;
00266   int   * SelectedCoordinateScalarComponents;
00267   int  ** SelectedCoordinateVectorComponents;
00268   int     NumberOfCoordinateScalarArrays;
00269   int     NumberOfCoordinateVectorArrays;
00270 
00271   int     ResultArrayType;
00272 private:
00273   vtkArrayCalculator(const vtkArrayCalculator&);  // Not implemented.
00274   void operator=(const vtkArrayCalculator&);  // Not implemented.
00275 };
00276 
00277 #endif