00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00028
#ifndef __vtkDataReader_h
00029
#define __vtkDataReader_h
00030
00031
#include "vtkSource.h"
00032
00033 #define VTK_ASCII 1
00034 #define VTK_BINARY 2
00035
00036
class vtkCharArray;
00037
class vtkDataArray;
00038
class vtkDataSet;
00039
class vtkDataSetAttributes;
00040
class vtkFieldData;
00041
class vtkPointSet;
00042
class vtkRectilinearGrid;
00043
00044 class VTK_IO_EXPORT vtkDataReader :
public vtkSource
00045 {
00046
public:
00047
static vtkDataReader *
New();
00048 vtkTypeRevisionMacro(vtkDataReader,
vtkSource);
00049
void PrintSelf(ostream& os,
vtkIndent indent);
00050
00052
00053 vtkSetStringMacro(FileName);
00054 vtkGetStringMacro(FileName);
00056
00058
00060
int IsFileValid(
const char *dstype);
00061 int IsFileStructuredPoints() {
00062
return this->IsFileValid(
"structured_points");};
00063 int IsFilePolyData() {
00064
return this->IsFileValid(
"polydata");};
00065 int IsFileStructuredGrid() {
00066
return this->IsFileValid(
"structured_grid");};
00067 int IsFileUnstructuredGrid() {
00068
return this->IsFileValid(
"unstructured_grid");};
00069 int IsFileRectilinearGrid() {
00070
return this->IsFileValid(
"rectilinear_grid");};
00072
00074
00078
void SetInputString(
const char *in);
00079 vtkGetStringMacro(InputString);
00080
void SetInputString(
const char *in,
int len);
00081 vtkGetMacro(InputStringLength,
int);
00082
void SetBinaryInputString(
const char *,
int len);
00084
00086
00092
virtual void SetInputArray(
vtkCharArray*);
00093 vtkGetObjectMacro(InputArray,
vtkCharArray);
00095
00097
00098 vtkGetStringMacro(Header);
00100
00102
00104 vtkSetMacro(ReadFromInputString,
int);
00105 vtkGetMacro(ReadFromInputString,
int);
00106 vtkBooleanMacro(ReadFromInputString,
int);
00108
00110
00112 vtkGetMacro(FileType,
int);
00114
00116
00120 int GetNumberOfScalarsInFile()
00121 {this->CharacterizeFile();
return this->NumberOfScalarsInFile;}
00122 int GetNumberOfVectorsInFile()
00123 {this->CharacterizeFile();
return this->NumberOfVectorsInFile;}
00124 int GetNumberOfTensorsInFile()
00125 {this->CharacterizeFile();
return this->NumberOfTensorsInFile;}
00126 int GetNumberOfNormalsInFile()
00127 {this->CharacterizeFile();
return this->NumberOfNormalsInFile;}
00128 int GetNumberOfTCoordsInFile()
00129 {this->CharacterizeFile();
return this->NumberOfTCoordsInFile;}
00130 int GetNumberOfFieldDataInFile()
00131 {this->CharacterizeFile();
return this->NumberOfFieldDataInFile;}
00133
00135
00138
const char *GetScalarsNameInFile(
int i);
00139
const char *GetVectorsNameInFile(
int i);
00140
const char *GetTensorsNameInFile(
int i);
00141
const char *GetNormalsNameInFile(
int i);
00142
const char *GetTCoordsNameInFile(
int i);
00143
const char *GetFieldDataNameInFile(
int i);
00145
00147
00149 vtkSetStringMacro(ScalarsName);
00150 vtkGetStringMacro(ScalarsName);
00152
00154
00156 vtkSetStringMacro(VectorsName);
00157 vtkGetStringMacro(VectorsName);
00159
00161
00163 vtkSetStringMacro(TensorsName);
00164 vtkGetStringMacro(TensorsName);
00166
00168
00170 vtkSetStringMacro(NormalsName);
00171 vtkGetStringMacro(NormalsName);
00173
00175
00177 vtkSetStringMacro(TCoordsName);
00178 vtkGetStringMacro(TCoordsName);
00180
00182
00185 vtkSetStringMacro(LookupTableName);
00186 vtkGetStringMacro(LookupTableName);
00188
00190
00192 vtkSetStringMacro(FieldDataName);
00193 vtkGetStringMacro(FieldDataName);
00195
00197
int OpenVTKFile();
00198
00200
int ReadHeader();
00201
00205
int ReadCellData(
vtkDataSet *ds,
int numCells);
00206
00210
int ReadPointData(
vtkDataSet *ds,
int numPts);
00211
00213
int ReadPoints(
vtkPointSet *ps,
int numPts);
00214
00216
int ReadCells(
int size,
int *data);
00217
00219
int ReadCells(
int size,
int *data,
int skip1,
int read2,
int skip3);
00220
00223
int ReadCoordinates(
vtkRectilinearGrid *rg,
int axes,
int numCoords);
00224
00226
00227
vtkDataArray *ReadArray(
const char *dataType,
int numTuples,
int numComp);
00228
vtkFieldData *ReadFieldData();
00230
00232
00234
int Read(
char *);
00235
int Read(
unsigned char *);
00236
int Read(
short *);
00237
int Read(
unsigned short *);
00238
int Read(
int *);
00239
int Read(
unsigned int *);
00240
int Read(
long *);
00241
int Read(
unsigned long *);
00242
int Read(
float *);
00243
int Read(
double *);
00245
00247
void CloseVTKFile();
00248
00249
00252
int ReadLine(
char result[256]);
00253
00256
int ReadString(
char result[256]);
00257
00259
char *LowerCase(
char *str,
const size_t len=256);
00260
00262 istream *GetIStream() {
return this->IS;};
00263
00264
00265
protected:
00266 vtkDataReader();
00267 ~vtkDataReader();
00268
00269 char *FileName;
00270 int FileType;
00271 istream *IS;
00272
00273 char *ScalarsName;
00274 char *VectorsName;
00275 char *TensorsName;
00276 char *TCoordsName;
00277 char *NormalsName;
00278 char *LookupTableName;
00279 char *FieldDataName;
00280 char *ScalarLut;
00281
00282 int ReadFromInputString;
00283 char *InputString;
00284 int InputStringLength;
00285 int InputStringPos;
00286
00287 vtkSetStringMacro(ScalarLut);
00288 vtkGetStringMacro(ScalarLut);
00289
00290 char *Header;
00291
00292
int ReadScalarData(
vtkDataSetAttributes *a,
int num);
00293
int ReadVectorData(
vtkDataSetAttributes *a,
int num);
00294
int ReadNormalData(
vtkDataSetAttributes *a,
int num);
00295
int ReadTensorData(
vtkDataSetAttributes *a,
int num);
00296
int ReadCoScalarData(
vtkDataSetAttributes *a,
int num);
00297
int ReadLutData(
vtkDataSetAttributes *a);
00298
int ReadTCoordsData(
vtkDataSetAttributes *a,
int num);
00299
00300
int ReadDataSetData(
vtkDataSet *ds);
00301
00302
00303 int NumberOfScalarsInFile;
00304 char **ScalarsNameInFile;
00305 int ScalarsNameAllocSize;
00306 int NumberOfVectorsInFile;
00307 char **VectorsNameInFile;
00308 int VectorsNameAllocSize;
00309 int NumberOfTensorsInFile;
00310 char **TensorsNameInFile;
00311 int TensorsNameAllocSize;
00312 int NumberOfTCoordsInFile;
00313 char **TCoordsNameInFile;
00314 int TCoordsNameAllocSize;
00315 int NumberOfNormalsInFile;
00316 char **NormalsNameInFile;
00317 int NormalsNameAllocSize;
00318 int NumberOfFieldDataInFile;
00319 char **FieldDataNameInFile;
00320 int FieldDataNameAllocSize;
00321 vtkTimeStamp CharacteristicsTime;
00322
00323
void InitializeCharacteristics();
00324
int CharacterizeFile();
00325
void CheckFor(
const char* name,
char *line,
int &num,
char** &array,
00326
int& allocSize);
00327
00328 vtkCharArray* InputArray;
00329
00332
void DecodeArrayName(
char *resname,
const char* name);
00333
00334
private:
00335 vtkDataReader(
const vtkDataReader&);
00336
void operator=(
const vtkDataReader&);
00337 };
00338
00339
#endif
00340
00341