IO/vtkXMLReader.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00023 #ifndef __vtkXMLReader_h
00024 #define __vtkXMLReader_h
00025
00026 #include "vtkSource.h"
00027
00028 class vtkCallbackCommand;
00029 class vtkDataArray;
00030 class vtkDataArraySelection;
00031 class vtkDataSet;
00032 class vtkDataSetAttributes;
00033 class vtkXMLDataElement;
00034 class vtkXMLDataParser;
00035
00036 class VTK_IO_EXPORT vtkXMLReader : public vtkSource
00037 {
00038 public:
00039 vtkTypeRevisionMacro(vtkXMLReader,vtkSource);
00040 void PrintSelf(ostream& os, vtkIndent indent);
00041
00043
00044 vtkSetStringMacro(FileName);
00045 vtkGetStringMacro(FileName);
00047
00049 virtual int CanReadFile(const char* name);
00050
00052
00053 vtkDataSet* GetOutputAsDataSet();
00054 vtkDataSet* GetOutputAsDataSet(int index);
00056
00058
00060 vtkGetObjectMacro(PointDataArraySelection, vtkDataArraySelection);
00061 vtkGetObjectMacro(CellDataArraySelection, vtkDataArraySelection);
00063
00065
00066 int GetNumberOfPointArrays();
00067 int GetNumberOfCellArrays();
00069
00071
00073 const char* GetPointArrayName(int index);
00074 const char* GetCellArrayName(int index);
00076
00078
00080 int GetPointArrayStatus(const char* name);
00081 int GetCellArrayStatus(const char* name);
00082 void SetPointArrayStatus(const char* name, int status);
00083 void SetCellArrayStatus(const char* name, int status);
00085
00086 protected:
00087 vtkXMLReader();
00088 ~vtkXMLReader();
00089
00090
00091 void ExecuteInformation();
00092 void ExecuteData(vtkDataObject* output);
00093
00094
00095
00096
00097 virtual void ReadXMLInformation();
00098 virtual void ReadXMLData();
00099
00100
00101 virtual const char* GetDataSetName()=0;
00102
00103
00104 virtual int CanReadFileVersion(int major, int minor);
00105
00106
00107 virtual void SetupEmptyOutput()=0;
00108
00109
00110 virtual void SetupOutputInformation();
00111
00112
00113 virtual void SetupOutputData();
00114
00115
00116
00117 virtual int ReadPrimaryElement(vtkXMLDataElement* ePrimary);
00118
00119
00120
00121 int ReadVTKFile(vtkXMLDataElement* eVTKFile);
00122
00123
00124
00125 vtkDataArray* CreateDataArray(vtkXMLDataElement* da);
00126
00127
00128 int OpenVTKFile();
00129 void CloseVTKFile();
00130 virtual void CreateXMLParser();
00131 virtual void DestroyXMLParser();
00132 void SetupCompressor(const char* type);
00133 int CanReadFileVersionString(const char* version);
00134
00135
00136 int IntersectExtents(int* extent1, int* extent2, int* result);
00137 int Min(int a, int b);
00138 int Max(int a, int b);
00139 void ComputeDimensions(int* extent, int* dimensions, int isPoint);
00140 void ComputeIncrements(int* extent, int* increments, int isPoint);
00141 unsigned int GetStartTuple(int* extent, int* increments,
00142 int i, int j, int k);
00143 void ReadAttributeIndices(vtkXMLDataElement* eDSA,
00144 vtkDataSetAttributes* dsa);
00145 char** CreateStringArray(int numStrings);
00146 void DestroyStringArray(int numStrings, char** strings);
00147
00148
00149 void SetDataArraySelections(vtkXMLDataElement* eDSA,
00150 vtkDataArraySelection* sel);
00151
00152
00153 int PointDataArrayIsEnabled(vtkXMLDataElement* ePDA);
00154 int CellDataArrayIsEnabled(vtkXMLDataElement* eCDA);
00155
00156
00157 static void SelectionModifiedCallback(vtkObject* caller, unsigned long eid,
00158 void* clientdata, void* calldata);
00159
00160
00161 vtkXMLDataParser* XMLParser;
00162
00163
00164 char* FileName;
00165
00166
00167 istream* Stream;
00168
00169
00170 vtkDataArraySelection* PointDataArraySelection;
00171 vtkDataArraySelection* CellDataArraySelection;
00172
00173
00174
00175 vtkCallbackCommand* SelectionObserver;
00176
00177
00178 int InformationError;
00179
00180
00181 int DataError;
00182
00183
00184
00185 int CurrentOutput;
00186
00187
00188
00189 virtual void GetProgressRange(float* range);
00190 virtual void SetProgressRange(float* range, int curStep, int numSteps);
00191 virtual void SetProgressRange(float* range, int curStep, float* fractions);
00192 virtual void UpdateProgressDiscrete(float progress);
00193 float ProgressRange[2];
00194
00195 private:
00196
00197 ifstream* FileStream;
00198
00199 private:
00200 vtkXMLReader(const vtkXMLReader&);
00201 void operator=(const vtkXMLReader&);
00202 };
00203
00204 #endif