VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkChacoReader.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00015 /*---------------------------------------------------------------------------- 00016 Copyright (c) Sandia Corporation 00017 See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details. 00018 ----------------------------------------------------------------------------*/ 00019 00035 #ifndef __vtkChacoReader_h 00036 #define __vtkChacoReader_h 00037 00038 #include "vtkUnstructuredGridAlgorithm.h" 00039 00040 class VTK_IO_EXPORT vtkChacoReader : public vtkUnstructuredGridAlgorithm 00041 { 00042 public: 00043 static vtkChacoReader *New(); 00044 vtkTypeMacro(vtkChacoReader,vtkUnstructuredGridAlgorithm); 00045 void PrintSelf(ostream& os, vtkIndent indent); 00046 00050 vtkSetStringMacro(BaseName); 00051 vtkGetStringMacro(BaseName); 00052 00058 vtkSetMacro(GenerateGlobalElementIdArray, int); 00059 vtkGetMacro(GenerateGlobalElementIdArray, int); 00060 vtkBooleanMacro(GenerateGlobalElementIdArray, int); 00061 00062 static const char *GetGlobalElementIdArrayName() { return "GlobalElementId"; } 00063 00070 vtkSetMacro(GenerateGlobalNodeIdArray, int); 00071 vtkGetMacro(GenerateGlobalNodeIdArray, int); 00072 vtkBooleanMacro(GenerateGlobalNodeIdArray, int); 00073 00074 static const char *GetGlobalNodeIdArrayName() { return "GlobalNodeId"; } 00075 00079 vtkSetMacro(GenerateVertexWeightArrays, int); 00080 vtkGetMacro(GenerateVertexWeightArrays, int); 00081 vtkBooleanMacro(GenerateVertexWeightArrays, int); 00082 00086 vtkGetMacro(NumberOfVertexWeights, int); 00087 00094 const char *GetVertexWeightArrayName(int weight); 00095 00102 vtkSetMacro(GenerateEdgeWeightArrays, int); 00103 vtkGetMacro(GenerateEdgeWeightArrays, int); 00104 vtkBooleanMacro(GenerateEdgeWeightArrays, int); 00105 00109 vtkGetMacro(NumberOfEdgeWeights, int); 00110 00117 const char *GetEdgeWeightArrayName(int weight); 00118 00120 00121 vtkGetMacro(Dimensionality, int); 00122 vtkGetMacro(NumberOfEdges, vtkIdType); 00123 vtkGetMacro(NumberOfVertices, vtkIdType); 00125 00130 vtkGetMacro(NumberOfCellWeightArrays, int); 00131 00136 vtkGetMacro(NumberOfPointWeightArrays, int); 00137 00138 protected: 00139 vtkChacoReader(); 00140 ~vtkChacoReader(); 00141 00142 int BuildOutputGrid(vtkUnstructuredGrid *gr); 00143 00144 // methods for parsing Chaco files 00145 00146 void CloseCurrentFile(); 00147 int OpenCurrentFile(); 00148 00149 int InputGeom(vtkIdType nvtxs, int igeom, double *x, double *y, double *z); 00150 int InputGraph1(); 00151 int InputGraph2( vtkIdType **start, vtkIdType **adjacency, double **vweights, 00152 double **eweights); 00153 int GetCoordsMetadata(); 00154 void GetGraphMetadata(); 00155 00156 // methods for creating vtkUnstructuredGrid from Chaco file data 00157 00158 int ReadFile(vtkUnstructuredGrid* output); 00159 void AddElementIds(vtkUnstructuredGrid* output); 00160 void AddNodeIds(vtkUnstructuredGrid* output); 00161 00162 void MakeWeightArrayNames(int nv, int ne); 00163 00164 // Parameters for controlling what is read in. 00165 char *BaseName; 00166 int GenerateGlobalElementIdArray; 00167 int GenerateGlobalNodeIdArray; 00168 00169 int GenerateVertexWeightArrays; 00170 int GenerateEdgeWeightArrays; 00171 00172 FILE *CurrentGeometryFP; 00173 FILE *CurrentGraphFP; 00174 char *CurrentBaseName; 00175 vtkSetStringMacro(CurrentBaseName); 00176 00177 char **VarrayName; 00178 char **EarrayName; 00179 00180 //---------------------------------------------------------------------- 00181 // The following metadata is read during RequestInformation. If you 00182 // add new metadata, you must modify vtkPChacoReader::RequestInformation 00183 // to include it when process 0 broadcasts the metadata. 00184 00185 int Dimensionality; 00186 vtkIdType NumberOfVertices; 00187 vtkIdType NumberOfEdges; 00188 int NumberOfVertexWeights; // in file 00189 int NumberOfEdgeWeights; // in file 00190 int GraphFileHasVertexNumbers; 00191 00192 //---------------------------------------------------------------------- 00193 00194 int NumberOfPointWeightArrays; // in output unstuctured grid 00195 int NumberOfCellWeightArrays; // in output unstuctured grid 00196 00197 // Keep the points and cells 00198 // around so they don't need to be re-read when the 00199 // options change. 00200 vtkUnstructuredGrid *DataCache; 00201 00202 // Should I re-read in the geometry and topology of the dataset 00203 int RemakeDataCacheFlag; 00204 00205 int RequestInformation( 00206 vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00207 int RequestData( 00208 vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00209 00210 private: 00211 vtkChacoReader(const vtkChacoReader&); // Not implemented 00212 void operator=(const vtkChacoReader&); // Not implemented 00213 00214 double ReadVal(FILE *infile, int *end_flag); 00215 vtkIdType ReadInt(FILE *infile, int *end_flag); 00216 void FlushLine( FILE *infile); 00217 void ResetInputBuffers(); 00218 00219 char *Line; 00220 int Line_length; 00221 int Offset; 00222 int Break_pnt; 00223 int Save_pnt; 00224 00225 void ClearWeightArrayNames(); 00226 }; 00227 00228 #endif