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