00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00040 #ifndef __vtkRCalculatorFilter_h
00041 #define __vtkRCalculatorFilter_h
00042
00043 #include "vtkDataObjectAlgorithm.h"
00044
00045 class vtkRInterface;
00046 class vtkRCalculatorFilterInternals;
00047 class vtkDataSet;
00048 class vtkDoubleArray;
00049
00050 class VTK_GRAPHICS_EXPORT vtkRCalculatorFilter : public vtkDataObjectAlgorithm
00051 {
00052
00053 public:
00054
00055 static vtkRCalculatorFilter *New();
00056
00057 vtkTypeRevisionMacro(vtkRCalculatorFilter, vtkDataObjectAlgorithm );
00058 void PrintSelf(ostream& os, vtkIndent indent);
00059
00064 void PutArray(const char* NameOfVTKArray, const char* NameOfRvar);
00065
00070 void GetArray(const char* NameOfVTKArray, const char* NameOfRvar);
00071
00073 void RemoveAllPutVariables();
00074
00076 void RemoveAllGetVariables();
00077
00079
00082 void PutTable(const char* NameOfRvar);
00083 void GetTable(const char* NameOfRvar);
00085
00087
00088 vtkSetStringMacro(Rscript);
00089 vtkGetStringMacro(Rscript);
00091
00093
00094 vtkSetStringMacro(ScriptFname);
00095 vtkGetStringMacro(ScriptFname);
00097
00099
00100 vtkSetMacro(Routput,int);
00101 vtkGetMacro(Routput,int);
00103
00105
00111 vtkSetMacro(TimeOutput,int);
00112 vtkGetMacro(TimeOutput,int);
00114
00116
00118 vtkSetMacro(BlockInfoOutput,int);
00119 vtkGetMacro(BlockInfoOutput,int);
00121
00123
00124 virtual int ProcessRequest(vtkInformation* request,
00125 vtkInformationVector** inputVector,
00126 vtkInformationVector* outputVector);
00128
00129 protected:
00130
00131 int SetRscriptFromFile(const char* fname);
00132
00133 virtual int RequestData(vtkInformation *vtkNotUsed(request),
00134 vtkInformationVector **inputVector,
00135 vtkInformationVector *outputVector);
00136
00138
00139 virtual int RequestDataObject(vtkInformation* request,
00140 vtkInformationVector** inputVector,
00141 vtkInformationVector* outputVector);
00143
00144 vtkRCalculatorFilter();
00145 ~vtkRCalculatorFilter();
00146
00147 private:
00148
00149 vtkRCalculatorFilter(const vtkRCalculatorFilter&);
00150 void operator=(const vtkRCalculatorFilter&);
00151
00152
00153 vtkRCalculatorFilterInternals* rcfi;
00154 int ProcessDataSet(vtkDataSet* dsinp, vtkDataSet* dsout);
00155
00156 vtkRInterface* ri;
00157 char* Rscript;
00158 char* RfileScript;
00159 char* ScriptFname;
00160 int Routput;
00161 int TimeOutput;
00162 int BlockInfoOutput;
00163 char* OutputBuffer;
00164 vtkDoubleArray* CurrentTime;
00165 vtkDoubleArray* TimeRange;
00166 vtkDoubleArray* TimeSteps;
00167 vtkDoubleArray* BlockId;
00168 vtkDoubleArray* NumBlocks;
00169
00170 };
00171
00172 #endif
00173