VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
gdbTerrainV203Reader.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1999 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: gdbTerrainV203Reader.h,v $ $Revision: 1.18 $ $State: Exp $
7 *********************************************************************/
8 
9 #ifndef gdbTerrainV203Reader_H_
10 #define gdbTerrainV203Reader_H_
11 
12 #include "gdb/gdbDefines.h"
13 #include <stdio.h>
14 #include "terrainCS/coordSystem.h"
16 #include "gdb/gdbTerrainReader.h"
17 
18 #include "gdb/terrainDatabase.h"
20 
21 //forward declarations
22 class DtExtent;
23 class DtChord;
24 class DtChordBundle;
27 class DtColor;
28 class DtMemoryManager;
29 class DtAllTypesPolygon;
32 class DtNetworkNode;
34 class DtNetworkEdge;
36 class DtFeature;
37 class DtGroup;
38 class DtSurface;
40 class DtListMap;
41 
42 // Declare a namespace to make sure there are no conflicts with the node types
43 // declared in the DtGdbNode class and that you can use in a forward declaration.
44 namespace DT_GDB_V203
45 {
46  typedef enum
47  {
48  NULL_NODE = -1,
49  GRIDPOST_LIST = 0, // = 0
50  VERTEX_LIST, // = 1
51  SURFACE_LIST, // = 2
52  GROUP, // = 3
56  GRID, // = 7
59  TERRAIN_FEATURE, // = 10
61  BUILDING, // = 12
62  TREE, // = 13
65  FILE_NODE, // = 16
66  REF_GROUP, // = 17
68  VECTOR_NETWORK, // = 19
71 }
72 
73 
74 typedef DtGdbNode* (*DtGdbTerrainV203ReaderNodeFcn)(DT_GDB_V203::DtGdbV203NodeType, FILE *, DtGdbTerrainV203Reader *, DtGroup *);
75 
76 // class DtGdbTerrainV203Reader:
77 //
78 // DtGdbTerrainV203Reader represents an entire database in GDB
79 // format. It is assumed to be a group node (is this appropriate?? -- RVK).
80 // The database can be written out to, and read from, a file.
81 // NOTE: This class used to be the DtGdbTerrainReader until that was
82 // changed to be a general gdb file loader that used the specific loaders
83 // for each version and the functionality for loading gdb files with
84 // versions between OLD and 203 was moved into this class.
85 
86 
88 {
89 public:
90 
91  // default constructor
93 
94  // destructor
95  virtual ~DtGdbTerrainV203Reader();
96 
97 private:
98  // copy constructor and assignment operator not implemented
101 
102 public:
103 
104  static DtTerrainReader* create();
105 
106  // Returns the type of file this database was loaded from.
107  // This class returns "gdb". Override this function in derived
108  // terrain db classes.
109  virtual const DtString dataType() const;
110 
111  virtual bool readFromFile(const DtFilename& basename, DtTerrainDatabase* terrain);
112 
113 protected:
114 
115  // I/O calls.
116 
117  virtual bool readFrom(FILE* fp, DtTerrainDatabase *terrain);
118 
119  virtual bool validityCheckVersionNumber(unsigned int versionNumberFromFile);
120  virtual bool readTerrainData(FILE* fp);
121  virtual bool readOptionalData(FILE* fp);
122  virtual bool adjustNewIndirectNodes(DtTerrainDatabase* terrainDb);
123 
124  virtual DtGdbNode* readNode(FILE *fp, DtGroup *parent);
125 
126  virtual bool setReadFcn(DT_GDB_V203::DtGdbV203NodeType type, DtGdbTerrainV203ReaderNodeFcn fun);
128 
129  static DtGdbNode* readGridPostList(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
130  static DtGdbNode* readVertexList(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
131  static DtGdbNode* readGroup(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
132  static DtGdbNode* readPolyImm(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
133  static DtGdbNode* readPolyInd(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
134  static DtGdbNode* readLOD(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
135  static DtGdbNode* readGrid(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
136  static DtGdbNode* readDynamicCoordSys(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
137  static DtGdbNode* readStaticCoordSys(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
138  static DtGdbNode* readTerrainFeature(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
139  static DtGdbNode* readCulturalFeature(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
140  static DtGdbNode* readBuilding(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
141  static DtGdbNode* readTree(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
142  static DtGdbNode* readTriangleImm(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
143  static DtGdbNode* readTriangleInd(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
144  static DtGdbNode* readFileNode(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
145  static DtGdbNode* readVectorNetwork(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
146  static DtGdbNode* readSurfaceList(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
147  static DtGdbNode* readSpecificationList(DT_GDB_V203::DtGdbV203NodeType type, FILE *fp, DtGdbTerrainV203Reader *me, DtGroup *parent);
148 
149  virtual bool readSurface(FILE* fp, DtSurface& surface);
150  // functions to read vector networks
151  virtual bool readNetworkNode(FILE* fp, DtNetworkNode* node, unsigned int topology, int numEdges);
152 
153  virtual bool readNetworkSpecElement(FILE* fp, DtNetworkSpecificationElement* elem);
154 
155  virtual bool readNetworkSegment(FILE* fp, DtNetworkSegmentHelper* seg, unsigned int topology);
156 
157  virtual bool readNetworkEdge(FILE* fp,
158  DtNetworkEdge* edge,
159  unsigned int topology,
160  unsigned int& numSegments,
161  std::vector<unsigned int>& segmentIndices,
162  unsigned int& startNodeIndex,
163  unsigned int& endNodeIndex);
164 
165  virtual bool readCoordSys(FILE* fp, DtBaseCoordinateSystem* coordSys);
166 
167  virtual bool readFeature(FILE* fp, DtFeature* feature);
168 
169  // While reading a GDB file, reports whether this database will contain
170  // optional data
171  bool fileHasOptionalData(DtTerrainFileOptionalData optData);
172 
173 protected:
174 
175  // For debugging purposes - prints out the numbers of the different nodes
176  // and other file data (number of specifications, vertices, etc.) read in
177  virtual void printReadNodeCount();
178 
182 
184 
185  // These are used to read in immediate polygons and triangles and to convert
186  // them to indirect without corrupting the indices already stored for existing
187  // indirect polys/tris' vertices and surfaces. Both should be added to the
188  // end of the main VertexManager and SurfaceManager and all IDs updated before
189  // returning from loading.
192 
193  // Array of pointers to all indirect triangle and polygon nodes that were
194  // created from immediate nodes on disk. Use this to go back and adjust
195  // the appropriate IDs (surface...) after all others are loaded.
198 
200 };
201 
202 // While reading a GDB file, reports whether this database will contain
203 // optional data
206 {
207  if (myOptionalDataFlagFromFile & optData)
208  {
209  return true;
210  }
211  else
212  {
213  return false;
214  }
215 }
216 
217 #endif
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
Definition: chordIntersectionRecord.h:23
Definition: gdbTerrainV203Reader.h:55
Definition: gdbTerrainV203Reader.h:48
Definition: memoryManager.h:33
Definition: group.h:28
const DtGdbTerrainReader & operator=(const DtGdbTerrainReader &original)
Definition: networkSpecificationElement.h:32
Definition: chordIntersectRecordList.h:29
Contains the DtGdbTerrainReader class declaration.
Definition: gdbTerrainV203Reader.h:62
Definition: gdbNode.h:44
Definition: gdbTerrainV203Reader.h:63
Definition: gdbTerrainV203Reader.h:68
DtTerrainFileOptionalData
Definition: terrainDatabase.h:83
virtual const DtString dataType() const
Returns the type of file this database was loaded from.
Definition: networkSegmentHelper.h:25
DtSurfaceManager myImmPolySurfaceManager
Definition: gdbTerrainV203Reader.h:191
DtGdbV203NodeType
Definition: gdbTerrainV203Reader.h:46
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
Definition: allTypesPolygon.h:22
Definition: surface.h:179
#define DT_DLL_gdb
Definition: gdbDefines.h:25
Definition: gdbTerrainV203Reader.h:52
Definition: color.h:25
Definition: vertexManager.h:26
DtList myImmPolyNodeList
Definition: gdbTerrainV203Reader.h:196
Definition: networkNode.h:38
Definition: gdbTerrainV203Reader.h:51
DtListMap * mySurfaceListMap
Definition: gdbTerrainV203Reader.h:180
Definition: feature.h:26
The DtGdbTerrainReader class is responsible for loading a GDB terrain database from file...
Definition: gdbTerrainReader.h:29
Definition: gdbTerrainV203Reader.h:50
Definition: gdbTerrainV203Reader.h:49
Definition: gdbTerrainV203Reader.h:66
Definition: gdbTerrainV203Reader.h:57
DtListMap * mySpecificationListMap
Definition: gdbTerrainV203Reader.h:181
Definition: gdbTerrainV203Reader.h:64
Definition: gdbTerrainV203Reader.h:61
Definition: gdbTerrainV203Reader.h:54
Definition: gdbTerrainV203Reader.h:60
DtGdbTerrainV203ReaderNodeFcn * myReaderFunctionTable
Definition: gdbTerrainV203Reader.h:199
Definition: chordBundle.h:29
Definition: gdbTerrainV203Reader.h:59
Definition: surfaceManager.h:30
DtList myImmTriNodeList
Definition: gdbTerrainV203Reader.h:197
Definition: terrainReader.h:41
DtGdbNode *(* DtGdbTerrainV203ReaderNodeFcn)(DT_GDB_V203::DtGdbV203NodeType, FILE *, DtGdbTerrainV203Reader *, DtGroup *)
Definition: gdbTerrainV203Reader.h:74
Definition: networkEdge.h:28
DtVertexManager myImmPolyVertexManager
Definition: gdbTerrainV203Reader.h:190
DtListMap * myVertexListMap
Definition: gdbTerrainV203Reader.h:179
Definition: gdbTerrainV203Reader.h:87
Definition: gdbTerrainV203Reader.h:58
Definition: terrainInitializer.h:16
bool fileHasOptionalData(DtTerrainFileOptionalData optData)
Definition: gdbTerrainV203Reader.h:204
Definition: baseCoordinateSystem.h:27
static DtTerrainReader * create()
Definition: terrainDatabase.h:148
Definition: listMap.h:21
Definition: gdbTerrainV203Reader.h:56
Definition: gdbTerrainV203Reader.h:69
Definition: gdbTerrainV203Reader.h:67
Definition: gdbTerrainV203Reader.h:53
Definition: gdbTerrainV203Reader.h:65
unsigned int myOptionalDataFlagFromFile
Definition: gdbTerrainV203Reader.h:183
virtual bool readFromFile(const DtFilename &basename, DtTerrainDatabase *terrain)

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)