00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00032
#ifndef __vtkDataReader_h
00033
#define __vtkDataReader_h
00034
00035
#include "vtkSource.h"
00036
00037 #define VTK_ASCII 1
00038 #define VTK_BINARY 2
00039
00040
class vtkCharArray;
00041
class vtkDataArray;
00042
class vtkDataSet;
00043
class vtkDataSetAttributes;
00044
class vtkFieldData;
00045
class vtkPointSet;
00046
class vtkRectilinearGrid;
00047
00048 class VTK_IO_EXPORT vtkDataReader :
public vtkSource
00049 {
00050
public:
00051
static vtkDataReader *
New();
00052 vtkTypeRevisionMacro(vtkDataReader,
vtkSource);
00053
void PrintSelf(ostream& os,
vtkIndent indent);
00054
00056
00057 vtkSetStringMacro(FileName);
00058 vtkGetStringMacro(FileName);
00060
00062
00064
int IsFileValid(
const char *dstype);
00065 int IsFileStructuredPoints() {
00066
return this->IsFileValid(
"structured_points");};
00067 int IsFilePolyData() {
00068
return this->IsFileValid(
"polydata");};
00069 int IsFileStructuredGrid() {
00070
return this->IsFileValid(
"structured_grid");};
00071 int IsFileUnstructuredGrid() {
00072
return this->IsFileValid(
"unstructured_grid");};
00073 int IsFileRectilinearGrid() {
00074
return this->IsFileValid(
"rectilinear_grid");};
00076
00078
00082
void SetInputString(
const char *in);
00083 vtkGetStringMacro(InputString);
00084
void SetInputString(
const char *in,
int len);
00085 vtkGetMacro(InputStringLength,
int);
00086
void SetBinaryInputString(
const char *,
int len);
00088
00090
00096
virtual void SetInputArray(
vtkCharArray*);
00097 vtkGetObjectMacro(InputArray,
vtkCharArray);
00099
00101
00102 vtkGetStringMacro(Header);
00104
00106
00108 vtkSetMacro(ReadFromInputString,
int);
00109 vtkGetMacro(ReadFromInputString,
int);
00110 vtkBooleanMacro(ReadFromInputString,
int);
00112
00114
00116 vtkGetMacro(FileType,
int);
00118
00120
00124 int GetNumberOfScalarsInFile()
00125 {this->CharacterizeFile();
return this->NumberOfScalarsInFile;}
00126 int GetNumberOfVectorsInFile()
00127 {this->CharacterizeFile();
return this->NumberOfVectorsInFile;}
00128 int GetNumberOfTensorsInFile()
00129 {this->CharacterizeFile();
return this->NumberOfTensorsInFile;}
00130 int GetNumberOfNormalsInFile()
00131 {this->CharacterizeFile();
return this->NumberOfNormalsInFile;}
00132 int GetNumberOfTCoordsInFile()
00133 {this->CharacterizeFile();
return this->NumberOfTCoordsInFile;}
00134 int GetNumberOfFieldDataInFile()
00135 {this->CharacterizeFile();
return this->NumberOfFieldDataInFile;}
00137
00139
00142
const char *GetScalarsNameInFile(
int i);
00143
const char *GetVectorsNameInFile(
int i);
00144
const char *GetTensorsNameInFile(
int i);
00145
const char *GetNormalsNameInFile(
int i);
00146
const char *GetTCoordsNameInFile(
int i);
00147
const char *GetFieldDataNameInFile(
int i);
00149
00151
00153 vtkSetStringMacro(ScalarsName);
00154 vtkGetStringMacro(ScalarsName);
00156
00158
00160 vtkSetStringMacro(VectorsName);
00161 vtkGetStringMacro(VectorsName);
00163
00165
00167 vtkSetStringMacro(TensorsName);
00168 vtkGetStringMacro(TensorsName);
00170
00172
00174 vtkSetStringMacro(NormalsName);
00175 vtkGetStringMacro(NormalsName);
00177
00179
00181 vtkSetStringMacro(TCoordsName);
00182 vtkGetStringMacro(TCoordsName);
00184
00186
00189 vtkSetStringMacro(LookupTableName);
00190 vtkGetStringMacro(LookupTableName);
00192
00194
00196 vtkSetStringMacro(FieldDataName);
00197 vtkGetStringMacro(FieldDataName);
00199
00201
int OpenVTKFile();
00202
00204
int ReadHeader();
00205
00209
int ReadCellData(
vtkDataSet *ds,
int numCells);
00210
00214
int ReadPointData(
vtkDataSet *ds,
int numPts);
00215
00217
int ReadPoints(
vtkPointSet *ps,
int numPts);
00218
00220
int ReadCells(
int size,
int *data);
00221
00223
int ReadCells(
int size,
int *data,
int skip1,
int read2,
int skip3);
00224
00227
int ReadCoordinates(
vtkRectilinearGrid *rg,
int axes,
int numCoords);
00228
00230
00231
vtkDataArray *ReadArray(
const char *dataType,
int numTuples,
int numComp);
00232
vtkFieldData *ReadFieldData();
00234
00236
00238
int Read(
char *);
00239
int Read(
unsigned char *);
00240
int Read(
short *);
00241
int Read(
unsigned short *);
00242
int Read(
int *);
00243
int Read(
unsigned int *);
00244
int Read(
long *);
00245
int Read(
unsigned long *);
00246
int Read(
float *);
00247
int Read(
double *);
00249
00251
void CloseVTKFile();
00252
00253
00256
int ReadLine(
char result[256]);
00257
00260
int ReadString(
char result[256]);
00261
00263
char *LowerCase(
char *str,
const size_t len=256);
00264
00266 istream *GetIStream() {
return this->IS;};
00267
00268
00269
protected:
00270 vtkDataReader();
00271 ~vtkDataReader();
00272
00273 char *FileName;
00274 int FileType;
00275 istream *IS;
00276
00277 char *ScalarsName;
00278 char *VectorsName;
00279 char *TensorsName;
00280 char *TCoordsName;
00281 char *NormalsName;
00282 char *LookupTableName;
00283 char *FieldDataName;
00284 char *ScalarLut;
00285
00286 int ReadFromInputString;
00287 char *InputString;
00288 int InputStringLength;
00289 int InputStringPos;
00290
00291 vtkSetStringMacro(ScalarLut);
00292 vtkGetStringMacro(ScalarLut);
00293
00294 char *Header;
00295
00296
int ReadScalarData(
vtkDataSetAttributes *a,
int num);
00297
int ReadVectorData(
vtkDataSetAttributes *a,
int num);
00298
int ReadNormalData(
vtkDataSetAttributes *a,
int num);
00299
int ReadTensorData(
vtkDataSetAttributes *a,
int num);
00300
int ReadCoScalarData(
vtkDataSetAttributes *a,
int num);
00301
int ReadLutData(
vtkDataSetAttributes *a);
00302
int ReadTCoordsData(
vtkDataSetAttributes *a,
int num);
00303
00304
int ReadDataSetData(
vtkDataSet *ds);
00305
00306
00307 int NumberOfScalarsInFile;
00308 char **ScalarsNameInFile;
00309 int ScalarsNameAllocSize;
00310 int NumberOfVectorsInFile;
00311 char **VectorsNameInFile;
00312 int VectorsNameAllocSize;
00313 int NumberOfTensorsInFile;
00314 char **TensorsNameInFile;
00315 int TensorsNameAllocSize;
00316 int NumberOfTCoordsInFile;
00317 char **TCoordsNameInFile;
00318 int TCoordsNameAllocSize;
00319 int NumberOfNormalsInFile;
00320 char **NormalsNameInFile;
00321 int NormalsNameAllocSize;
00322 int NumberOfFieldDataInFile;
00323 char **FieldDataNameInFile;
00324 int FieldDataNameAllocSize;
00325 vtkTimeStamp CharacteristicsTime;
00326
00327
void InitializeCharacteristics();
00328
int CharacterizeFile();
00329
void CheckFor(
const char* name,
char *line,
int &num,
char** &array,
00330
int& allocSize);
00331
00332 vtkCharArray* InputArray;
00333
00336
void DecodeArrayName(
char *resname,
const char* name);
00337
00338
private:
00339 vtkDataReader(
const vtkDataReader&);
00340
void operator=(
const vtkDataReader&);
00341 };
00342
00343
#endif
00344
00345