VTK
|
00001 00002 /*========================================================================= 00003 00004 Program: Visualization Toolkit 00005 Module: vtkRCalculatorFilter.h 00006 00007 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00016 /*------------------------------------------------------------------------- 00017 Copyright 2009 Sandia Corporation. 00018 Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, 00019 the U.S. Government retains certain rights in this software. 00020 -------------------------------------------------------------------------*/ 00021 00043 #ifndef vtkRCalculatorFilter_h 00044 #define vtkRCalculatorFilter_h 00045 00046 #include "vtkFiltersStatisticsGnuRModule.h" // For export macro 00047 #include "vtkDataObjectAlgorithm.h" 00048 00049 class vtkRInterface; 00050 class vtkRCalculatorFilterInternals; 00051 class vtkDataSet; 00052 class vtkDoubleArray; 00053 class vtkGraph; 00054 class vtkTree; 00055 class vtkTable; 00056 class vtkCompositeDataSet; 00057 class vtkArrayData; 00058 class vtkStringArray; 00059 00060 class VTKFILTERSSTATISTICSGNUR_EXPORT vtkRCalculatorFilter : public vtkDataObjectAlgorithm 00061 { 00062 00063 public: 00064 00065 static vtkRCalculatorFilter *New(); 00066 00067 vtkTypeMacro(vtkRCalculatorFilter, vtkDataObjectAlgorithm ); 00068 void PrintSelf(ostream& os, vtkIndent indent); 00069 00074 void PutArray(const char* NameOfVTKArray, const char* NameOfRvar); 00075 00080 void GetArray(const char* NameOfVTKArray, const char* NameOfRvar); 00081 00083 void RemoveAllPutVariables(); 00084 00086 void RemoveAllGetVariables(); 00087 00089 00092 void PutTable(const char* NameOfRvar); 00093 void GetTable(const char* NameOfRvar); 00095 00099 void PutTables(vtkStringArray* NamesOfRVars); 00100 00104 void GetTables(vtkStringArray* NamesOfRVars); 00105 00107 00110 void PutTree(const char* NameOfRvar); 00111 void GetTree(const char* NameOfRvar); 00113 00117 void PutTrees(vtkStringArray* NamesOfRvars); 00118 00123 void GetTrees(vtkStringArray* NamesOfRvars); 00124 00125 00127 00128 vtkSetStringMacro(Rscript); 00129 vtkGetStringMacro(Rscript); 00131 00133 00134 vtkSetStringMacro(ScriptFname); 00135 vtkGetStringMacro(ScriptFname); 00137 00139 00140 vtkSetMacro(Routput,int); 00141 vtkGetMacro(Routput,int); 00143 00145 00151 vtkSetMacro(TimeOutput,int); 00152 vtkGetMacro(TimeOutput,int); 00154 00156 00158 vtkSetMacro(BlockInfoOutput,int); 00159 vtkGetMacro(BlockInfoOutput,int); 00161 00163 00164 virtual int ProcessRequest(vtkInformation* request, 00165 vtkInformationVector** inputVector, 00166 vtkInformationVector* outputVector); 00168 00169 protected: 00170 00171 int SetRscriptFromFile(const char* fname); 00172 00173 virtual int RequestData(vtkInformation *vtkNotUsed(request), 00174 vtkInformationVector **inputVector, 00175 vtkInformationVector *outputVector); 00176 00178 00179 virtual int RequestDataObject(vtkInformation* request, 00180 vtkInformationVector** inputVector, 00181 vtkInformationVector* outputVector); 00183 00184 vtkRCalculatorFilter(); 00185 ~vtkRCalculatorFilter(); 00186 00187 private: 00188 00189 vtkRCalculatorFilter(const vtkRCalculatorFilter&); // Not implemented. 00190 void operator=(const vtkRCalculatorFilter&); // Not implemented. 00191 00192 // Implementation details 00193 vtkRCalculatorFilterInternals* rcfi; 00194 00195 int ProcessInputDataSet(vtkDataSet* dsIn); 00196 int ProcessOutputDataSet(vtkDataSet* dsOut); 00197 00198 int ProcessInputGraph(vtkGraph* gIn); 00199 int ProcessOutputGraph(vtkGraph* gOut); 00200 00201 int ProcessInputArrayData(vtkArrayData * adIn); 00202 int ProcessOutputArrayData(vtkArrayData * adOut); 00203 00204 int ProcessInputCompositeDataSet(vtkCompositeDataSet* cdsIn); 00205 int ProcessOutputCompositeDataSet(vtkCompositeDataSet * cdsOut); 00206 00207 int ProcessInputTable(vtkTable* tOut); 00208 int ProcessInputTable(std::string& name, vtkTable* tIn); 00209 00210 vtkTable* GetOutputTable(std::string& name); 00211 int ProcessOutputTable(vtkTable* tOut); 00212 00213 int ProcessInputTree(vtkTree* tIn); 00214 int ProcessInputTree(std::string& name, vtkTree* tIn); 00215 00216 vtkTree* GetOutputTree(std::string& name); 00217 int ProcessOutputTree(vtkTree* tOut); 00218 00219 int ProcessInputDataObject(vtkDataObject *input); 00220 int ProcessOutputDataObject(vtkDataObject *input); 00221 int HasMultipleGets(); 00222 int HasMultiplePuts(); 00223 00224 vtkRInterface* ri; 00225 char* Rscript; 00226 char* RfileScript; 00227 char* ScriptFname; 00228 int Routput; 00229 int TimeOutput; 00230 int BlockInfoOutput; 00231 char* OutputBuffer; 00232 vtkDoubleArray* CurrentTime; 00233 vtkDoubleArray* TimeRange; 00234 vtkDoubleArray* TimeSteps; 00235 vtkDoubleArray* BlockId; 00236 vtkDoubleArray* NumBlocks; 00237 00238 }; 00239 00240 #endif 00241