00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00025
#ifndef __vtkGenericEnSightReader_h
00026
#define __vtkGenericEnSightReader_h
00027
00028
#include "vtkDataSetSource.h"
00029
00030
class vtkCallbackCommand;
00031
class vtkDataArrayCollection;
00032
class vtkDataArraySelection;
00033
class vtkIdListCollection;
00034
00035 class VTK_IO_EXPORT vtkGenericEnSightReader :
public vtkDataSetSource
00036 {
00037
public:
00038
static vtkGenericEnSightReader *
New();
00039 vtkTypeRevisionMacro(vtkGenericEnSightReader,
vtkDataSetSource);
00040
void PrintSelf(ostream& os,
vtkIndent indent);
00041
00043
00044
void SetCaseFileName(
const char* fileName);
00045 vtkGetStringMacro(CaseFileName);
00047
00049
00050 vtkSetStringMacro(FilePath);
00051 vtkGetStringMacro(FilePath);
00053
00054
virtual void Update();
00055
virtual void ExecuteInformation();
00056
00058
00059 int GetNumberOfVariables() {
return this->NumberOfVariables; }
00060 int GetNumberOfComplexVariables() {
return this->NumberOfComplexVariables; }
00062
00064
00065
int GetNumberOfVariables(
int type);
00066 vtkGetMacro(NumberOfScalarsPerNode,
int);
00067 vtkGetMacro(NumberOfVectorsPerNode,
int);
00068 vtkGetMacro(NumberOfTensorsSymmPerNode,
int);
00069 vtkGetMacro(NumberOfScalarsPerElement,
int);
00070 vtkGetMacro(NumberOfVectorsPerElement,
int);
00071 vtkGetMacro(NumberOfTensorsSymmPerElement,
int);
00072 vtkGetMacro(NumberOfScalarsPerMeasuredNode,
int);
00073 vtkGetMacro(NumberOfVectorsPerMeasuredNode,
int);
00074 vtkGetMacro(NumberOfComplexScalarsPerNode,
int);
00075 vtkGetMacro(NumberOfComplexVectorsPerNode,
int);
00076 vtkGetMacro(NumberOfComplexScalarsPerElement,
int);
00077 vtkGetMacro(NumberOfComplexVectorsPerElement,
int);
00079
00081
char* GetDescription(
int n);
00082
00084
char* GetComplexDescription(
int n);
00085
00094
char* GetDescription(
int n,
int type);
00095
00097
00098
int GetVariableType(
int n);
00099
int GetComplexVariableType(
int n);
00101
00103
00104
virtual void SetTimeValue(
float value);
00105 vtkGetMacro(TimeValue,
float);
00107
00109
00110 vtkGetMacro(MinimumTimeValue,
float);
00111 vtkGetMacro(MaximumTimeValue,
float);
00113
00115
00116 vtkGetObjectMacro(TimeSets,
vtkDataArrayCollection);
00118
00123
int DetermineEnSightVersion();
00124
00126
00127 vtkBooleanMacro(ReadAllVariables,
int);
00128 vtkSetMacro(ReadAllVariables,
int);
00129 vtkGetMacro(ReadAllVariables,
int);
00131
00133
00135 vtkGetObjectMacro(PointDataArraySelection,
vtkDataArraySelection);
00136 vtkGetObjectMacro(CellDataArraySelection,
vtkDataArraySelection);
00138
00140
00141
int GetNumberOfPointArrays();
00142
int GetNumberOfCellArrays();
00144
00146
00148
const char* GetPointArrayName(
int index);
00149
const char* GetCellArrayName(
int index);
00151
00153
00155
int GetPointArrayStatus(
const char* name);
00156
int GetCellArrayStatus(
const char* name);
00157
void SetPointArrayStatus(
const char* name,
int status);
00158
void SetCellArrayStatus(
const char* name,
int status);
00160
00161
00162 enum FileTypes
00163 {
00164 ENSIGHT_6 = 0,
00165 ENSIGHT_6_BINARY = 1,
00166 ENSIGHT_GOLD = 2,
00167 ENSIGHT_GOLD_BINARY = 3,
00168 ENSIGHT_MASTER_SERVER = 4
00169 };
00170
00171
00173
00176
void SetByteOrderToBigEndian();
00177
void SetByteOrderToLittleEndian();
00178 vtkSetMacro(ByteOrder,
int);
00179 vtkGetMacro(ByteOrder,
int);
00180
const char *GetByteOrderAsString();
00182
00183
00184
enum
00185 {
00186 FILE_BIG_ENDIAN=0,
00187 FILE_LITTLE_ENDIAN=1
00188 };
00189
00190
00191
protected:
00192 vtkGenericEnSightReader();
00193 ~vtkGenericEnSightReader();
00194
00195
void Execute();
00196
00199
int ReadLine(
char result[256]);
00200
00203
int ReadBinaryLine(
char result[80]);
00204
00205
00206
00207
00208
int ReadNextDataLine(
char result[256]);
00209
00211
00212 vtkSetStringMacro(GeometryFileName);
00213 vtkGetStringMacro(GeometryFileName);
00215
00217
00218
void AddVariableDescription(
char* description);
00219
void AddComplexVariableDescription(
char* description);
00221
00223
00224
void AddVariableType(
int variableType);
00225
void AddComplexVariableType(
int variableType);
00227
00229
00231
void ReplaceWildcards(
char* fileName,
int timeSet,
int fileSet);
00232
void ReplaceWildcardsHelper(
char* fileName,
int num);
00234
00235
00236
static void SelectionModifiedCallback(
vtkObject* caller,
unsigned long eid,
00237
void* clientdata,
void* calldata);
00238
void SelectionModified();
00239
00240
00241
char** CreateStringArray(
int numStrings);
00242
void DestroyStringArray(
int numStrings,
char** strings);
00243
00244
00245
00246
void SetDataArraySelectionSetsFromVariables();
00247
00248
00249
00250
void SetDataArraySelectionSetsFromReader();
00251
00252
00253
00254
void SetReaderDataArraySelectionSetsFromSelf();
00255
00256 istream* IS;
00257 FILE *IFile;
00258 vtkGenericEnSightReader *Reader;
00259
00260 char* CaseFileName;
00261 char* GeometryFileName;
00262 char* FilePath;
00263
00264
00265 int* VariableTypes;
00266 int* ComplexVariableTypes;
00267
00268
00269 char** VariableDescriptions;
00270 char** ComplexVariableDescriptions;
00271
00272 int NumberOfVariables;
00273 int NumberOfComplexVariables;
00274
00275
00276 int NumberOfScalarsPerNode;
00277 int NumberOfVectorsPerNode;
00278 int NumberOfTensorsSymmPerNode;
00279 int NumberOfScalarsPerElement;
00280 int NumberOfVectorsPerElement;
00281 int NumberOfTensorsSymmPerElement;
00282 int NumberOfScalarsPerMeasuredNode;
00283 int NumberOfVectorsPerMeasuredNode;
00284 int NumberOfComplexScalarsPerNode;
00285 int NumberOfComplexVectorsPerNode;
00286 int NumberOfComplexScalarsPerElement;
00287 int NumberOfComplexVectorsPerElement;
00288
00289 float TimeValue;
00290 float MinimumTimeValue;
00291 float MaximumTimeValue;
00292
00293
00294 int TimeValueInitialized;
00295
00296 vtkDataArrayCollection *TimeSets;
00297
virtual void SetTimeSets(
vtkDataArrayCollection*);
00298
00299 int ReadAllVariables;
00300
00301 int ByteOrder;
00302
00303
00304
00305 int EnSightVersion;
00306
00307
00308
00309 vtkDataArraySelection* PointDataArraySelection;
00310 vtkDataArraySelection* CellDataArraySelection;
00311
00312
00313
00314 vtkCallbackCommand* SelectionObserver;
00315
00316
00317
00318 int SelectionModifiedDoNotCallModified;
00319
00320
private:
00321 vtkGenericEnSightReader(
const vtkGenericEnSightReader&);
00322
void operator=(
const vtkGenericEnSightReader&);
00323 };
00324
00325
#endif