00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00029
#ifndef __vtkGenericEnSightReader_h
00030
#define __vtkGenericEnSightReader_h
00031
00032
#include "vtkDataSetSource.h"
00033
00034
class vtkDataArrayCollection;
00035
class vtkIdListCollection;
00036
00037
00038 class VTK_IO_EXPORT vtkGenericEnSightReader :
public vtkDataSetSource
00039 {
00040
public:
00041
static vtkGenericEnSightReader *
New();
00042 vtkTypeRevisionMacro(vtkGenericEnSightReader,
vtkDataSetSource);
00043
void PrintSelf(ostream& os,
vtkIndent indent);
00044
00046
00047
void SetCaseFileName(
const char* fileName);
00048 vtkGetStringMacro(CaseFileName);
00050
00052
00053 vtkSetStringMacro(FilePath);
00054 vtkGetStringMacro(FilePath);
00056
00057
virtual void Update();
00058
virtual void ExecuteInformation();
00059
00061
00062 int GetNumberOfVariables() {
return this->NumberOfVariables; }
00063 int GetNumberOfComplexVariables() {
return this->NumberOfComplexVariables; }
00065
00067
00068
int GetNumberOfVariables(
int type);
00069 vtkGetMacro(NumberOfScalarsPerNode,
int);
00070 vtkGetMacro(NumberOfVectorsPerNode,
int);
00071 vtkGetMacro(NumberOfTensorsSymmPerNode,
int);
00072 vtkGetMacro(NumberOfScalarsPerElement,
int);
00073 vtkGetMacro(NumberOfVectorsPerElement,
int);
00074 vtkGetMacro(NumberOfTensorsSymmPerElement,
int);
00075 vtkGetMacro(NumberOfScalarsPerMeasuredNode,
int);
00076 vtkGetMacro(NumberOfVectorsPerMeasuredNode,
int);
00077 vtkGetMacro(NumberOfComplexScalarsPerNode,
int);
00078 vtkGetMacro(NumberOfComplexVectorsPerNode,
int);
00079 vtkGetMacro(NumberOfComplexScalarsPerElement,
int);
00080 vtkGetMacro(NumberOfComplexVectorsPerElement,
int);
00082
00084
char* GetDescription(
int n);
00085
00087
char* GetComplexDescription(
int n);
00088
00097
char* GetDescription(
int n,
int type);
00098
00100
00101
int GetVariableType(
int n);
00102
int GetComplexVariableType(
int n);
00104
00106
00107 vtkSetMacro(TimeValue,
float);
00108 vtkGetMacro(TimeValue,
float);
00110
00112
00113 vtkGetMacro(MinimumTimeValue,
float);
00114 vtkGetMacro(MaximumTimeValue,
float);
00116
00118
00119 vtkGetObjectMacro(TimeSets,
vtkDataArrayCollection);
00121
00126
int DetermineEnSightVersion();
00127
00129
00130 vtkBooleanMacro(ReadAllVariables,
int);
00131 vtkSetMacro(ReadAllVariables,
int);
00132 vtkGetMacro(ReadAllVariables,
int);
00134
00136
00138
void AddVariableName(
char* variableName,
int attributeType);
00139
void AddPointVariableName(
char* variableName);
00140
void AddCellVariableName(
char* variableName);
00142
00144
void RemoveAllVariableNames();
00145
00147
00148
void RemoveAllPointVariableNames();
00149
void RemoveAllCellVariableNames();
00151
00154
int IsRequestedVariable(
char *variableName,
int attributeType);
00155
00157
00158
int GetNumberOfPointArrays();
00159
int GetNumberOfCellArrays();
00161
00162
00163 enum FileTypes
00164 {
00165 ENSIGHT_6 = 0,
00166 ENSIGHT_6_BINARY = 1,
00167 ENSIGHT_GOLD = 2,
00168 ENSIGHT_GOLD_BINARY = 3,
00169 ENSIGHT_MASTER_SERVER = 4
00170 };
00171
00172
00174
00177
void SetByteOrderToBigEndian();
00178
void SetByteOrderToLittleEndian();
00179 vtkSetMacro(ByteOrder,
int);
00180 vtkGetMacro(ByteOrder,
int);
00181
const char *GetByteOrderAsString();
00183
00184
00185
enum
00186 {
00187 FILE_BIG_ENDIAN=0,
00188 FILE_LITTLE_ENDIAN=1
00189 };
00190
00191
00192
protected:
00193 vtkGenericEnSightReader();
00194 ~vtkGenericEnSightReader();
00195
00196
void Execute();
00197
00200
int ReadLine(
char result[256]);
00201
00204
int ReadBinaryLine(
char result[80]);
00205
00206
00207
00208
00209
int ReadNextDataLine(
char result[256]);
00210
00212
00213 vtkSetStringMacro(GeometryFileName);
00214 vtkGetStringMacro(GeometryFileName);
00216
00218
00219
void AddVariableDescription(
char* description);
00220
void AddComplexVariableDescription(
char* description);
00222
00224
00225
void AddVariableType(
int variableType);
00226
void AddComplexVariableType(
int variableType);
00228
00230
00232
void ReplaceWildcards(
char* fileName,
int timeSet,
int fileSet);
00233
void ReplaceWildcardsHelper(
char* fileName,
int num);
00235
00236 istream* IS;
00237 FILE *IFile;
00238 vtkGenericEnSightReader *Reader;
00239
00240 char* CaseFileName;
00241 char* GeometryFileName;
00242 char* FilePath;
00243
00244
00245 int* VariableTypes;
00246 int* ComplexVariableTypes;
00247
00248
00249 char** VariableDescriptions;
00250 char** ComplexVariableDescriptions;
00251
00252 int NumberOfVariables;
00253 int NumberOfComplexVariables;
00254
00255
00256 int NumberOfScalarsPerNode;
00257 int NumberOfVectorsPerNode;
00258 int NumberOfTensorsSymmPerNode;
00259 int NumberOfScalarsPerElement;
00260 int NumberOfVectorsPerElement;
00261 int NumberOfTensorsSymmPerElement;
00262 int NumberOfScalarsPerMeasuredNode;
00263 int NumberOfVectorsPerMeasuredNode;
00264 int NumberOfComplexScalarsPerNode;
00265 int NumberOfComplexVectorsPerNode;
00266 int NumberOfComplexScalarsPerElement;
00267 int NumberOfComplexVectorsPerElement;
00268
00269 float TimeValue;
00270 float MinimumTimeValue;
00271 float MaximumTimeValue;
00272
00273 vtkDataArrayCollection *TimeSets;
00274
virtual void SetTimeSets(
vtkDataArrayCollection*);
00275
00276 int ReadAllVariables;
00277 int NumberOfRequestedPointVariables;
00278 int NumberOfRequestedCellVariables;
00279 char** RequestedPointVariables;
00280 char** RequestedCellVariables;
00281
00282 int ByteOrder;
00283
00284
private:
00285 vtkGenericEnSightReader(
const vtkGenericEnSightReader&);
00286
void operator=(
const vtkGenericEnSightReader&);
00287 };
00288
00289
#endif