00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00043 #ifndef __vtkRCalculatorFilter_h
00044 #define __vtkRCalculatorFilter_h
00045
00046 #include "vtkDataObjectAlgorithm.h"
00047
00048 class vtkRInterface;
00049 class vtkRCalculatorFilterInternals;
00050 class vtkDataSet;
00051 class vtkDoubleArray;
00052
00053 class VTK_GRAPHICS_EXPORT vtkRCalculatorFilter : public vtkDataObjectAlgorithm
00054 {
00055
00056 public:
00057
00058 static vtkRCalculatorFilter *New();
00059
00060 vtkTypeMacro(vtkRCalculatorFilter, vtkDataObjectAlgorithm );
00061 void PrintSelf(ostream& os, vtkIndent indent);
00062
00067 void PutArray(const char* NameOfVTKArray, const char* NameOfRvar);
00068
00073 void GetArray(const char* NameOfVTKArray, const char* NameOfRvar);
00074
00076 void RemoveAllPutVariables();
00077
00079 void RemoveAllGetVariables();
00080
00082
00085 void PutTable(const char* NameOfRvar);
00086 void GetTable(const char* NameOfRvar);
00088
00090
00091 vtkSetStringMacro(Rscript);
00092 vtkGetStringMacro(Rscript);
00094
00096
00097 vtkSetStringMacro(ScriptFname);
00098 vtkGetStringMacro(ScriptFname);
00100
00102
00103 vtkSetMacro(Routput,int);
00104 vtkGetMacro(Routput,int);
00106
00108
00114 vtkSetMacro(TimeOutput,int);
00115 vtkGetMacro(TimeOutput,int);
00117
00119
00121 vtkSetMacro(BlockInfoOutput,int);
00122 vtkGetMacro(BlockInfoOutput,int);
00124
00126
00127 virtual int ProcessRequest(vtkInformation* request,
00128 vtkInformationVector** inputVector,
00129 vtkInformationVector* outputVector);
00131
00132 protected:
00133
00134 int SetRscriptFromFile(const char* fname);
00135
00136 virtual int RequestData(vtkInformation *vtkNotUsed(request),
00137 vtkInformationVector **inputVector,
00138 vtkInformationVector *outputVector);
00139
00141
00142 virtual int RequestDataObject(vtkInformation* request,
00143 vtkInformationVector** inputVector,
00144 vtkInformationVector* outputVector);
00146
00147 vtkRCalculatorFilter();
00148 ~vtkRCalculatorFilter();
00149
00150 private:
00151
00152 vtkRCalculatorFilter(const vtkRCalculatorFilter&);
00153 void operator=(const vtkRCalculatorFilter&);
00154
00155
00156 vtkRCalculatorFilterInternals* rcfi;
00157 int ProcessDataSet(vtkDataSet* dsinp, vtkDataSet* dsout);
00158
00159 vtkRInterface* ri;
00160 char* Rscript;
00161 char* RfileScript;
00162 char* ScriptFname;
00163 int Routput;
00164 int TimeOutput;
00165 int BlockInfoOutput;
00166 char* OutputBuffer;
00167 vtkDoubleArray* CurrentTime;
00168 vtkDoubleArray* TimeRange;
00169 vtkDoubleArray* TimeSteps;
00170 vtkDoubleArray* BlockId;
00171 vtkDoubleArray* NumBlocks;
00172
00173 };
00174
00175 #endif
00176