VR-Forces 4.0.4 Class Documentation
include/gdb/gdbTerrainV204Reader.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 1999 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: gdbTerrainV204Reader.h,v $ $Revision: 1.16 $ $State: Exp $
00007 *********************************************************************/
00008 
00009 #ifndef gdbTerrainV204Reader_H_
00010 #define gdbTerrainV204Reader_H_
00011 
00012 #include "gdb/gdbDefines.h"
00013 #include <stdio.h>
00014 #include "terrainCS/coordSystem.h"
00015 #include "gdb/terModCbInfo.h"
00016 #include "gdb/gdbTerrainReader.h"
00017 
00018 #include "gdb/terrainDb.h"
00019 #include "geometry/spatialSubdivision.h"
00020 
00021 
00022 //forward declarations
00023 class DtExtent;
00024 class DtChord;
00025 class DtChordBundle;
00026 class DtChordIntersectionRecord;
00027 class DtChordIntersectRecordList;
00028 class DtColor;
00029 class DtMemoryManager;
00030 class DtAllTypesPolygon;
00031 class DtTerrainInitializer;
00032 class DtBaseCoordinateSystem;
00033 class DtNetworkNode;
00034 class DtNetworkSegmentHelper;
00035 class DtNetworkEdge;
00036 class DtNetworkSpecElement;
00037 class DtFeature;
00038 class DtGroup;
00039 class DtSurface;
00040 class DtGdbTerrainV204Reader;
00041 
00042 typedef DtGdbNode* (*DtGdbTerrainV204ReaderNodeFcn)(DtGdbNode::DtGdbNodeType, FILE *, DtGdbTerrainV204Reader *, DtGroup *);
00043 
00044 // class DtGdbTerrainV204Reader:
00045 //
00046 // DtGdbTerrainV204Reader is responsible for loading the version 204 
00047 // .gdb files into the system.  It is used by the DtGdbTerrainReader.
00048 //
00049 
00050 class DT_DLL_gdb DtGdbTerrainV204Reader : public DtGdbTerrainReader
00051 {
00052 public:
00053   
00054    // default constructor
00055    DtGdbTerrainV204Reader();
00056 
00057    // destructor
00058    virtual ~DtGdbTerrainV204Reader();
00059 
00060 private:
00061    // copy constructor and assignment operator not implemented
00062    DtGdbTerrainV204Reader(const DtGdbTerrainV204Reader& orig);
00063    DtGdbTerrainV204Reader& operator=(const DtGdbTerrainV204Reader& orig);
00064 
00065 public:
00066 
00067    static DtTerrainReader* create();
00068 
00069    // Returns the type of file this database was loaded from.
00070    // This class returns "gdb".  Override this function in derived
00071    // terrain db classes.
00072    virtual const DtString dataType() const;
00073 
00074    virtual bool readFromFile(const DtFilename& basename, DtTerrainDatabase* terrain);
00075 
00076 protected:
00077 
00078    // I/O calls.
00079 
00080    virtual bool readFrom(FILE* fp, DtTerrainDatabase *terrain);
00081 
00082    virtual bool validityCheckVersionNumber(unsigned int versionNumberFromFile);
00083 
00084    virtual DtGdbNode *readNode(FILE *fp, DtGroup *parent);
00085 
00086    virtual bool setReadFcn(DtGdbNode::DtGdbNodeType type, DtGdbTerrainV204ReaderNodeFcn fun);
00087    virtual DtGdbTerrainV204ReaderNodeFcn readFcn(DtGdbNode::DtGdbNodeType type);
00088 
00089    static DtGdbNode *readGroup(DtGdbNode::DtGdbNodeType type, FILE *fp, DtGdbTerrainV204Reader *me, DtGroup *parent);
00090    static DtGdbNode *readPolyInd(DtGdbNode::DtGdbNodeType type, FILE *fp, DtGdbTerrainV204Reader *me, DtGroup *parent);
00091    static DtGdbNode *readLOD(DtGdbNode::DtGdbNodeType type, FILE *fp, DtGdbTerrainV204Reader *me, DtGroup *parent);
00092    static DtGdbNode *readDynamicCoordSys(DtGdbNode::DtGdbNodeType type, FILE *fp, DtGdbTerrainV204Reader *me, DtGroup *parent);
00093    static DtGdbNode *readStaticCoordSys(DtGdbNode::DtGdbNodeType type, FILE *fp, DtGdbTerrainV204Reader *me, DtGroup *parent);
00094    static DtGdbNode *readTerrainFeature(DtGdbNode::DtGdbNodeType type, FILE *fp, DtGdbTerrainV204Reader *me, DtGroup *parent);
00095    static DtGdbNode *readCulturalFeature(DtGdbNode::DtGdbNodeType type, FILE *fp, DtGdbTerrainV204Reader *me, DtGroup *parent);
00096    static DtGdbNode *readBuilding(DtGdbNode::DtGdbNodeType type, FILE *fp, DtGdbTerrainV204Reader *me, DtGroup *parent);
00097    static DtGdbNode *readTree(DtGdbNode::DtGdbNodeType type, FILE *fp, DtGdbTerrainV204Reader *me, DtGroup *parent);
00098    static DtGdbNode *readTriangleInd(DtGdbNode::DtGdbNodeType type, FILE *fp, DtGdbTerrainV204Reader *me, DtGroup *parent);
00099    static DtGdbNode *readFileNode(DtGdbNode::DtGdbNodeType type, FILE *fp, DtGdbTerrainV204Reader *me, DtGroup *parent);
00100 
00101    virtual bool readSurface(FILE *fp, DtSurface &surface);
00102    // functions to read vector networks
00103    virtual bool readNetworkNode(FILE *fp, DtNetworkNode *node, unsigned int topology, int numEdges);
00104    virtual bool readNetworkSpecElement(FILE *fp, DtNetworkSpecElement *elem);
00105    virtual bool readNetworkSegment(FILE *fp, DtNetworkSegmentHelper *seg, unsigned int topology);
00106    virtual bool readNetworkEdge(FILE* fp, 
00107                                 DtNetworkEdge* edge, 
00108                                 unsigned int topology,
00109                                 unsigned int& numSegments,
00110                                 std::vector<unsigned int>& segmentIndices,
00111                                 unsigned int& startNodeIndex,
00112                                 unsigned int& endNodeIndex);
00113 
00114    virtual bool readTerrainData(FILE* fp);
00115    virtual bool readFeatureData(FILE* fp);
00116 
00117    virtual bool readSurfaceManager(FILE *fp);
00118    virtual bool readSpecificationManager(FILE *fp);
00119    virtual bool readVertexManager(FILE *fp);
00120    virtual bool readVectorNetwork(FILE *fp);
00121    virtual bool readCoordSys(FILE *fp, DtBaseCoordinateSystem* coordSys);
00122 
00123    virtual bool readFeature(FILE *fp, DtFeature *feature);
00124 
00125    // While reading a GDB file, reports whether this database will contain
00126    // optional data
00127    bool fileHasOptionalData(DtTerrainFileOptionalData optData);
00128 
00129 protected:
00130 
00131    // For debugging purposes - prints out the numbers of the different nodes 
00132    // and other file data (number of specifications, vertices, etc.) read in
00133    virtual void printReadNodeCount();
00134 
00135    unsigned int   myOptionalDataFlagFromFile;
00136 
00137    DtGdbTerrainV204ReaderNodeFcn* myReaderFunctionTable;
00138 };
00139 
00140 // While reading a GDB file, reports whether this database will contain
00141 // optional data
00142 inline bool DtGdbTerrainV204Reader::fileHasOptionalData(
00143    DtTerrainFileOptionalData optData)
00144 {
00145    if (myOptionalDataFlagFromFile & optData)
00146    {
00147       return true;
00148    }
00149    else
00150    {
00151       return false;
00152    }
00153 }
00154 
00155 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)