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 TranslationTableType;
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 vtkGetMacro(NumberOfVariables, int);
00063 vtkGetMacro(NumberOfComplexVariables, int);
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 const char* GetDescription(int n);
00085
00087 const char* GetComplexDescription(int n);
00088
00097 const char* GetDescription(int n, int type);
00098
00100
00101 int GetVariableType(int n);
00102 int GetComplexVariableType(int n);
00104
00106
00107 virtual void SetTimeValue(float value);
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 vtkGetObjectMacro(PointDataArraySelection, vtkDataArraySelection);
00139 vtkGetObjectMacro(CellDataArraySelection, vtkDataArraySelection);
00141
00143
00144 int GetNumberOfPointArrays();
00145 int GetNumberOfCellArrays();
00147
00149
00151 const char* GetPointArrayName(int index);
00152 const char* GetCellArrayName(int index);
00154
00156
00158 int GetPointArrayStatus(const char* name);
00159 int GetCellArrayStatus(const char* name);
00160 void SetPointArrayStatus(const char* name, int status);
00161 void SetCellArrayStatus(const char* name, int status);
00163
00164
00165 enum FileTypes
00166 {
00167 ENSIGHT_6 = 0,
00168 ENSIGHT_6_BINARY = 1,
00169 ENSIGHT_GOLD = 2,
00170 ENSIGHT_GOLD_BINARY = 3,
00171 ENSIGHT_MASTER_SERVER = 4
00172 };
00173
00174
00176
00179 void SetByteOrderToBigEndian();
00180 void SetByteOrderToLittleEndian();
00181 vtkSetMacro(ByteOrder, int);
00182 vtkGetMacro(ByteOrder, int);
00183 const char *GetByteOrderAsString();
00185
00186
00187 enum
00188 {
00189 FILE_BIG_ENDIAN=0,
00190 FILE_LITTLE_ENDIAN=1,
00191 FILE_UNKNOWN_ENDIAN=2
00192 };
00193
00194
00195 protected:
00196 vtkGenericEnSightReader();
00197 ~vtkGenericEnSightReader();
00198
00199 void Execute();
00200
00203 int ReadLine(char result[256]);
00204
00207 int ReadBinaryLine(char result[80]);
00208
00209
00210
00211
00212 int ReadNextDataLine(char result[256]);
00213
00215
00216 vtkSetStringMacro(GeometryFileName);
00217 vtkGetStringMacro(GeometryFileName);
00219
00221
00222 void AddVariableDescription(const char* description);
00223 void AddComplexVariableDescription(const char* description);
00225
00227
00228 void AddVariableType(int variableType);
00229 void AddComplexVariableType(int variableType);
00231
00233
00235 void ReplaceWildcards(char* fileName, int timeSet, int fileSet);
00236 void ReplaceWildcardsHelper(char* fileName, int num);
00238
00239
00240 static void SelectionModifiedCallback(vtkObject* caller, unsigned long eid,
00241 void* clientdata, void* calldata);
00242 void SelectionModified();
00243
00244
00245 char** CreateStringArray(int numStrings);
00246 void DestroyStringArray(int numStrings, char** strings);
00247
00248
00249
00250 void SetDataArraySelectionSetsFromVariables();
00251
00252
00253
00254 void SetDataArraySelectionSetsFromReader();
00255
00256
00257
00258 void SetReaderDataArraySelectionSetsFromSelf();
00259
00260 istream* IS;
00261 FILE *IFile;
00262 vtkGenericEnSightReader *Reader;
00263
00264 char* CaseFileName;
00265 char* GeometryFileName;
00266 char* FilePath;
00267
00268
00269 int* VariableTypes;
00270 int* ComplexVariableTypes;
00271
00272
00273 char** VariableDescriptions;
00274 char** ComplexVariableDescriptions;
00275
00276 int NumberOfVariables;
00277 int NumberOfComplexVariables;
00278
00279
00280 int NumberOfScalarsPerNode;
00281 int NumberOfVectorsPerNode;
00282 int NumberOfTensorsSymmPerNode;
00283 int NumberOfScalarsPerElement;
00284 int NumberOfVectorsPerElement;
00285 int NumberOfTensorsSymmPerElement;
00286 int NumberOfScalarsPerMeasuredNode;
00287 int NumberOfVectorsPerMeasuredNode;
00288 int NumberOfComplexScalarsPerNode;
00289 int NumberOfComplexVectorsPerNode;
00290 int NumberOfComplexScalarsPerElement;
00291 int NumberOfComplexVectorsPerElement;
00292
00293 float TimeValue;
00294 float MinimumTimeValue;
00295 float MaximumTimeValue;
00296
00297
00298 int TimeValueInitialized;
00299
00300 vtkDataArrayCollection *TimeSets;
00301 virtual void SetTimeSets(vtkDataArrayCollection*);
00302
00303 int ReadAllVariables;
00304
00305 int ByteOrder;
00306
00307
00308
00309 int EnSightVersion;
00310
00311
00312
00313 vtkDataArraySelection* PointDataArraySelection;
00314 vtkDataArraySelection* CellDataArraySelection;
00315
00316
00317
00318 vtkCallbackCommand* SelectionObserver;
00319
00320
00321
00322 int SelectionModifiedDoNotCallModified;
00323
00324
00325 int InsertNewPartId(int partId);
00326
00327
00328
00329 TranslationTableType *TranslationTable;
00330
00331
00332 private:
00333 vtkGenericEnSightReader(const vtkGenericEnSightReader&);
00334 void operator=(const vtkGenericEnSightReader&);
00335 };
00336
00337 #endif