IO/vtkXMLReader.h
Go to the documentation of this file.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