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 "vtkIOGeometryModule.h" // For export macro 00039 #include "vtkUnstructuredGridAlgorithm.h" 00040 00041 class VTKIOGEOMETRY_EXPORT vtkChacoReader : public vtkUnstructuredGridAlgorithm 00042 { 00043 public: 00044 static vtkChacoReader *New(); 00045 vtkTypeMacro(vtkChacoReader,vtkUnstructuredGridAlgorithm); 00046 void PrintSelf(ostream& os, vtkIndent indent); 00047 00051 vtkSetStringMacro(BaseName); 00052 vtkGetStringMacro(BaseName); 00053 00059 vtkSetMacro(GenerateGlobalElementIdArray, int); 00060 vtkGetMacro(GenerateGlobalElementIdArray, int); 00061 vtkBooleanMacro(GenerateGlobalElementIdArray, int); 00062 00063 static const char *GetGlobalElementIdArrayName() { return "GlobalElementId"; } 00064 00071 vtkSetMacro(GenerateGlobalNodeIdArray, int); 00072 vtkGetMacro(GenerateGlobalNodeIdArray, int); 00073 vtkBooleanMacro(GenerateGlobalNodeIdArray, int); 00074 00075 static const char *GetGlobalNodeIdArrayName() { return "GlobalNodeId"; } 00076 00080 vtkSetMacro(GenerateVertexWeightArrays, int); 00081 vtkGetMacro(GenerateVertexWeightArrays, int); 00082 vtkBooleanMacro(GenerateVertexWeightArrays, int); 00083 00087 vtkGetMacro(NumberOfVertexWeights, int); 00088 00095 const char *GetVertexWeightArrayName(int weight); 00096 00103 vtkSetMacro(GenerateEdgeWeightArrays, int); 00104 vtkGetMacro(GenerateEdgeWeightArrays, int); 00105 vtkBooleanMacro(GenerateEdgeWeightArrays, int); 00106 00110 vtkGetMacro(NumberOfEdgeWeights, int); 00111 00118 const char *GetEdgeWeightArrayName(int weight); 00119 00121 00122 vtkGetMacro(Dimensionality, int); 00123 vtkGetMacro(NumberOfEdges, vtkIdType); 00124 vtkGetMacro(NumberOfVertices, vtkIdType); 00126 00131 vtkGetMacro(NumberOfCellWeightArrays, int); 00132 00137 vtkGetMacro(NumberOfPointWeightArrays, int); 00138 00139 protected: 00140 vtkChacoReader(); 00141 ~vtkChacoReader(); 00142 00143 int BuildOutputGrid(vtkUnstructuredGrid *gr); 00144 00145 // methods for parsing Chaco files 00146 00147 void CloseCurrentFile(); 00148 int OpenCurrentFile(); 00149 00150 int InputGeom(vtkIdType nvtxs, int igeom, double *x, double *y, double *z); 00151 int InputGraph1(); 00152 int InputGraph2( vtkIdType **start, vtkIdType **adjacency, double **vweights, 00153 double **eweights); 00154 int GetCoordsMetadata(); 00155 void GetGraphMetadata(); 00156 00157 // methods for creating vtkUnstructuredGrid from Chaco file data 00158 00159 int ReadFile(vtkUnstructuredGrid* output); 00160 void AddElementIds(vtkUnstructuredGrid* output); 00161 void AddNodeIds(vtkUnstructuredGrid* output); 00162 00163 void MakeWeightArrayNames(int nv, int ne); 00164 00165 // Parameters for controlling what is read in. 00166 char *BaseName; 00167 int GenerateGlobalElementIdArray; 00168 int GenerateGlobalNodeIdArray; 00169 00170 int GenerateVertexWeightArrays; 00171 int GenerateEdgeWeightArrays; 00172 00173 FILE *CurrentGeometryFP; 00174 FILE *CurrentGraphFP; 00175 char *CurrentBaseName; 00176 vtkSetStringMacro(CurrentBaseName); 00177 00178 char **VarrayName; 00179 char **EarrayName; 00180 00181 //---------------------------------------------------------------------- 00182 // The following metadata is read during RequestInformation. If you 00183 // add new metadata, you must modify vtkPChacoReader::RequestInformation 00184 // to include it when process 0 broadcasts the metadata. 00185 00186 int Dimensionality; 00187 vtkIdType NumberOfVertices; 00188 vtkIdType NumberOfEdges; 00189 int NumberOfVertexWeights; // in file 00190 int NumberOfEdgeWeights; // in file 00191 int GraphFileHasVertexNumbers; 00192 00193 //---------------------------------------------------------------------- 00194 00195 int NumberOfPointWeightArrays; // in output unstuctured grid 00196 int NumberOfCellWeightArrays; // in output unstuctured grid 00197 00198 // Keep the points and cells 00199 // around so they don't need to be re-read when the 00200 // options change. 00201 vtkUnstructuredGrid *DataCache; 00202 00203 // Should I re-read in the geometry and topology of the dataset 00204 int RemakeDataCacheFlag; 00205 00206 int RequestInformation( 00207 vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00208 int RequestData( 00209 vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00210 00211 private: 00212 vtkChacoReader(const vtkChacoReader&); // Not implemented 00213 void operator=(const vtkChacoReader&); // Not implemented 00214 00215 double ReadVal(FILE *infile, int *end_flag); 00216 vtkIdType ReadInt(FILE *infile, int *end_flag); 00217 void FlushLine( FILE *infile); 00218 void ResetInputBuffers(); 00219 00220 char *Line; 00221 int Line_length; 00222 int Offset; 00223 int Break_pnt; 00224 int Save_pnt; 00225 00226 void ClearWeightArrayNames(); 00227 }; 00228 00229 #endif