VR-Forces 4.0.4 Class Documentation
include/gdb/gdbTerrainV209Reader.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2004 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: gdbTerrainV209Reader.h,v $ $Revision: 1.4 $ $State: Exp $
00007 *********************************************************************/
00008 
00009 #ifndef gdbTerrainV209Reader_H_
00010 #define gdbTerrainV209Reader_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 <vlutil/vlConfig.h>
00020 #include <map>
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 DtNetworkSegment;
00035 class DtNetworkEdge;
00036 class DtNetworkSpecElement;
00037 class DtFeature;
00038 class DtGroup;
00039 class DtSurface;
00040 class DtGdbTerrainV209Reader;
00041 class DtGdbReaderInitializer;
00042 class DtExtentInitializer;
00043 
00044 typedef DtGdbNode* (*DtGdbTerrainV209ReaderNodeFcn)(DtGdbNode::DtGdbNodeType, FILE* , DtGdbTerrainV209Reader* , DtGroup* );
00045 
00046 // class DtGdbTerrainV209Reader:
00047 //
00048 // DtGdbTerrainV209Reader is responsible for loading the version 205 
00049 // .gdb files into the system.  It is used by the DtGdbTerrainReader.
00050 //
00051 
00052 class DT_DLL_gdb DtGdbTerrainV209Reader : public DtGdbTerrainReader
00053 {
00054 public:
00055 
00056    // default constructor
00057    DtGdbTerrainV209Reader();
00058 
00059    // destructor
00060    virtual ~DtGdbTerrainV209Reader();
00061 
00062 private:
00063    // copy constructor and assignment operator not implemented
00064    DtGdbTerrainV209Reader(const DtGdbTerrainV209Reader& orig);
00065    DtGdbTerrainV209Reader& operator=(const DtGdbTerrainV209Reader& orig);
00066 
00067 public:
00068 
00069    static DtTerrainReader* create();
00070 
00071    // Returns the type of file this database was loaded from.
00072    // This class returns "gdb".  Override this function in derived
00073    // terrain db classes.
00074    virtual const DtString dataType() const;
00075 
00076    virtual bool readFromFile(const DtFilename& basename, DtTerrainDatabase* terrain);
00077 protected:
00078 
00079    // I/O calls.
00080 
00081    virtual void resetStatistics();
00082 
00083    virtual bool readFrom(FILE* fp, DtTerrainDatabase* terrain);
00084 
00085    virtual bool readCoordinateSystem(FILE* fp);
00086 
00087    virtual bool validityCheckVersionNumber(unsigned int versionNumberFromFile);
00088 
00089    virtual DtGdbNode* readNode(FILE* fp, DtGroup* parent);
00090 
00091    virtual bool setReadFcn(DtGdbNode::DtGdbNodeType type, DtGdbTerrainV209ReaderNodeFcn fun);
00092    virtual DtGdbTerrainV209ReaderNodeFcn readFcn(DtGdbNode::DtGdbNodeType type);
00093 
00094    static DtGdbNode* readGroup(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV209Reader* me, DtGroup* parent);
00095    static DtGdbNode* readPolyInd(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV209Reader* me, DtGroup* parent);
00096    static DtGdbNode* readLOD(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV209Reader* me, DtGroup* parent);
00097    static DtGdbNode* readDynamicCoordSys(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV209Reader* me, DtGroup* parent);
00098    static DtGdbNode* readStaticCoordSys(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV209Reader* me, DtGroup* parent);
00099    static DtGdbNode* readTerrainFeature(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV209Reader* me, DtGroup* parent);
00100    static DtGdbNode* readCulturalFeature(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV209Reader* me, DtGroup* parent);
00101    static DtGdbNode* readBuilding(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV209Reader* me, DtGroup* parent);
00102    static DtGdbNode* readTree(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV209Reader* me, DtGroup* parent);
00103    static DtGdbNode* readTriangleInd(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV209Reader* me, DtGroup* parent);
00104    static DtGdbNode* readFileNode(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV209Reader* me, DtGroup* parent);
00105 
00106    virtual bool readSurface(FILE* fp, DtSurface &surface);
00107    // functions to read vector networks
00108    virtual bool readNetworkNode(FILE* fp, DtNetworkNode* node, std::map<unsigned, unsigned>& oldAddressToNewAddressMap);
00109    virtual bool readNetworkSpecElement(FILE* fp, DtNetworkSpecElement* elem);
00110    virtual bool readNetworkEdge(FILE* fp, DtNetworkEdge* edge, unsigned int& startNodeIndex, unsigned int& endNodeIndex);
00111 
00112    virtual bool readTerrainData(FILE* fp);
00113    virtual bool readFeatureData(FILE* fp);
00114 
00115    virtual bool readSurfaceManager(FILE* fp);
00116    virtual bool readSpecificationManager(FILE* fp);
00117    virtual bool readVertexManager(FILE* fp);
00118    virtual bool readVectorNetwork(FILE* fp);
00119 
00120    virtual bool readCoordSys(FILE* fp, DtBaseCoordinateSystem* coordSys);
00121 
00122    virtual bool readFeature(FILE* fp, DtFeature* feature);
00123 
00124    // While reading a GDB file, reports whether this database will contain
00125    // optional data
00126    bool fileHasOptionalData(DtTerrainFileOptionalData optData);
00127 
00128    virtual bool readSpheroidInformation(FILE* fp);
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    unsigned int   myTerrainIntersectionMethodType;
00137 
00138    DtGdbTerrainV209ReaderNodeFcn* myReaderFunctionTable;
00139 };
00140 
00141 // While reading a GDB file, reports whether this database will contain
00142 // optional data
00143 inline bool DtGdbTerrainV209Reader::fileHasOptionalData(
00144    DtTerrainFileOptionalData optData)
00145 {
00146    if (myOptionalDataFlagFromFile & optData)
00147    {
00148       return true;
00149    }
00150    else
00151    {
00152       return false;
00153    }
00154 }
00155 
00156 #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)