IO/vtkAVSucdReader.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00035 #ifndef __vtkAVSucdReader_h
00036 #define __vtkAVSucdReader_h
00037
00038 #include "vtkUnstructuredGridSource.h"
00039
00040 class vtkCellArray;
00041 class vtkIntArray;
00042 class vtkFloatArray;
00043 class vtkIdTypeArray;
00044 class vtkDataArraySelection;
00045
00046 struct DataInfo {
00047 long foffset;
00048 int veclen;
00049 };
00050
00051 class VTK_IO_EXPORT vtkAVSucdReader : public vtkUnstructuredGridSource
00052 {
00053 public:
00054 static vtkAVSucdReader *New();
00055 vtkTypeRevisionMacro(vtkAVSucdReader,vtkUnstructuredGridSource);
00056 void PrintSelf(ostream& os, vtkIndent indent);
00057
00059
00060 vtkSetStringMacro(FileName);
00061 vtkGetStringMacro(FileName);
00063
00065
00067 vtkSetMacro(BinaryFile, int);
00068 vtkGetMacro(BinaryFile, int);
00069 vtkBooleanMacro(BinaryFile, int);
00071
00073
00074 vtkGetMacro(NumberOfCells,int);
00076
00078
00079 vtkGetMacro(NumberOfNodes,int);
00081
00083
00084 vtkGetMacro(NumberOfNodeFields,int);
00086
00088
00089 vtkGetMacro(NumberOfCellFields,int);
00091
00093
00095 vtkGetMacro(NumberOfFields,int);
00097
00099
00100 vtkGetMacro(NumberOfNodeComponents,int);
00101 vtkGetMacro(NumberOfCellComponents,int);
00103
00105
00106 void SetByteOrderToBigEndian();
00107 void SetByteOrderToLittleEndian();
00108 const char *GetByteOrderAsString();
00110
00111 vtkSetMacro(ByteOrder, int);
00112 vtkGetMacro(ByteOrder, int);
00113
00115
00118 int GetNumberOfPointArrays();
00119 int GetNumberOfCellArrays();
00120 const char* GetPointArrayName(int index);
00121 const char* GetCellArrayName(int index);
00122 int GetPointArrayStatus(const char* name);
00123 int GetCellArrayStatus(const char* name);
00124 void SetPointArrayStatus(const char* name, int status);
00125 void SetCellArrayStatus(const char* name, int status);
00127
00128 protected:
00129 vtkAVSucdReader();
00130 ~vtkAVSucdReader();
00131 void ExecuteInformation();
00132 void Execute();
00133
00134 char *FileName;
00135 int BinaryFile;
00136
00137 int NumberOfNodes;
00138 int NumberOfCells;
00139 int NumberOfNodeFields;
00140 int NumberOfNodeComponents;
00141 int NumberOfCellComponents;
00142 int NumberOfCellFields;
00143 int NumberOfFields;
00144 int nlist_nodes;
00145
00146 ifstream *fs;
00147
00148 vtkDataArraySelection* PointDataArraySelection;
00149 vtkDataArraySelection* CellDataArraySelection;
00150
00151 DataInfo *NodeDataInfo;
00152 DataInfo *CellDataInfo;
00153
00154 int DecrementNodeIds;
00155 int ByteOrder;
00156 int get_label(char *string, int number, char *label);
00157
00158 enum
00159 {
00160 FILE_BIG_ENDIAN=0,
00161 FILE_LITTLE_ENDIAN=1
00162 };
00163 enum UCDCell_type
00164 {
00165 PT = 0,
00166 LINE = 1,
00167 TRI = 2,
00168 QUAD = 3,
00169 TET = 4,
00170 PYR = 5,
00171 PRISM = 6,
00172 HEX = 7
00173 };
00174
00175
00176 private:
00177 void ReadFile();
00178 void ReadGeometry();
00179 void ReadNodeData();
00180 void ReadCellData();
00181
00182 int ReadFloatBlock(int n, float *block);
00183 int ReadIntBlock(int n, int *block);
00184 void ReadXYZCoords(vtkFloatArray *coords);
00185 void ReadBinaryCellTopology(vtkIntArray *material, int *types,
00186 vtkIdTypeArray *listcells);
00187 void ReadASCIICellTopology(vtkIntArray *material, vtkUnstructuredGrid *output);
00188
00189 vtkAVSucdReader(const vtkAVSucdReader&);
00190 void operator=(const vtkAVSucdReader&);
00191 };
00192
00193 #endif