00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00027
#ifndef __vtkXMLReader_h
00028
#define __vtkXMLReader_h
00029
00030
#include "vtkSource.h"
00031
00032
class vtkCallbackCommand;
00033
class vtkDataArray;
00034
class vtkDataArraySelection;
00035
class vtkDataSet;
00036
class vtkDataSetAttributes;
00037
class vtkXMLDataElement;
00038
class vtkXMLDataParser;
00039
00040 class VTK_IO_EXPORT vtkXMLReader :
public vtkSource
00041 {
00042
public:
00043 vtkTypeRevisionMacro(vtkXMLReader,
vtkSource);
00044
void PrintSelf(ostream& os,
vtkIndent indent);
00045
00047
00048 vtkSetStringMacro(FileName);
00049 vtkGetStringMacro(FileName);
00051
00053
virtual int CanReadFile(
const char* name);
00054
00056
vtkDataSet* GetOutputAsDataSet();
00057
00059
00061 vtkGetObjectMacro(PointDataArraySelection,
vtkDataArraySelection);
00062 vtkGetObjectMacro(CellDataArraySelection,
vtkDataArraySelection);
00064
00066
00067
int GetNumberOfPointArrays();
00068
int GetNumberOfCellArrays();
00070
00072
00074
const char* GetPointArrayName(
int index);
00075
const char* GetCellArrayName(
int index);
00077
00079
00081
int GetPointArrayStatus(
const char* name);
00082
int GetCellArrayStatus(
const char* name);
00083
void SetPointArrayStatus(
const char* name,
int status);
00084
void SetCellArrayStatus(
const char* name,
int status);
00086
00087
protected:
00088 vtkXMLReader();
00089 ~vtkXMLReader();
00090
00091
00092
void ExecuteInformation();
00093
void ExecuteData(
vtkDataObject* output);
00094
00095
00096
00097
00098
virtual void ReadXMLInformation();
00099
virtual void ReadXMLData();
00100
00101
00102
virtual const char* GetDataSetName()=0;
00103
00104
00105
virtual int CanReadFileVersion(
int major,
int minor);
00106
00107
00108
virtual void SetupEmptyOutput()=0;
00109
00110
00111
virtual void SetupOutputInformation();
00112
00113
00114
virtual void SetupOutputData();
00115
00116
00117
00118
virtual int ReadPrimaryElement(
vtkXMLDataElement* ePrimary);
00119
00120
00121
00122
int ReadVTKFile(
vtkXMLDataElement* eVTKFile);
00123
00124
00125
00126
vtkDataArray* CreateDataArray(
vtkXMLDataElement* da);
00127
00128
00129
int OpenVTKFile();
00130
void CloseVTKFile();
00131
void CreateXMLParser();
00132
void DestroyXMLParser();
00133
void SetupCompressor(
const char* type);
00134
int CanReadFileVersionString(
const char* version);
00135
00136
00137
int IntersectExtents(
int* extent1,
int* extent2,
int* result);
00138
int Min(
int a,
int b);
00139
int Max(
int a,
int b);
00140
void ComputeDimensions(
int* extent,
int* dimensions,
int isPoint);
00141
void ComputeIncrements(
int* extent,
int* increments,
int isPoint);
00142
unsigned int GetStartTuple(
int* extent,
int* increments,
00143
int i,
int j,
int k);
00144
void ReadAttributeIndices(
vtkXMLDataElement* eDSA,
00145
vtkDataSetAttributes* dsa);
00146
char** CreateStringArray(
int numStrings);
00147
void DestroyStringArray(
int numStrings,
char** strings);
00148
00149
00150
void SetDataArraySelections(
vtkXMLDataElement* eDSA,
00151
vtkDataArraySelection* sel);
00152
00153
00154
int PointDataArrayIsEnabled(
vtkXMLDataElement* ePDA);
00155
int CellDataArrayIsEnabled(
vtkXMLDataElement* eCDA);
00156
00157
00158
static void SelectionModifiedCallback(
vtkObject* caller,
unsigned long eid,
00159
void* clientdata,
void* calldata);
00160
00161
00162 vtkXMLDataParser* XMLParser;
00163
00164
00165 char* FileName;
00166
00167
00168 ifstream* FileStream;
00169
00170
00171 vtkDataArraySelection* PointDataArraySelection;
00172 vtkDataArraySelection* CellDataArraySelection;
00173
00174
00175
00176 vtkCallbackCommand* SelectionObserver;
00177
00178
00179 int InformationError;
00180
00181
00182 int DataError;
00183
00184
private:
00185 vtkXMLReader(
const vtkXMLReader&);
00186
void operator=(
const vtkXMLReader&);
00187 };
00188
00189
#endif