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