Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vtkChacoReader.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkChacoReader.h,v $
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   vtkTypeRevisionMacro(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   char *GetVertexWeightArrayName(int weight);
00095 
00102   vtkSetMacro(GenerateEdgeWeightArrays, int);
00103   vtkGetMacro(GenerateEdgeWeightArrays, int);
00104   vtkBooleanMacro(GenerateEdgeWeightArrays, int);
00105 
00109   vtkGetMacro(NumberOfEdgeWeights, int);
00110 
00117   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

Generated on Mon Jan 21 23:07:31 2008 for VTK by  doxygen 1.4.3-20050530