VR-Forces 4.0.4 Class Documentation
include/gdb/gdbTerrainV205Reader.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2004 MaK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: gdbTerrainV205Reader.h,v $ $Revision: 1.19 $ $State: Exp $
00007 *********************************************************************/
00008 
00009 #ifndef gdbTerrainV205Reader_H_
00010 #define gdbTerrainV205Reader_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 #include <vlutil/vlConfig.h>
00021 #include <map>
00022 
00023 //forward declarations
00024 class DtExtent;
00025 class DtChord;
00026 class DtChordBundle;
00027 class DtChordIntersectionRecord;
00028 class DtChordIntersectRecordList;
00029 class DtColor;
00030 class DtMemoryManager;
00031 class DtAllTypesPolygon;
00032 class DtTerrainInitializer;
00033 class DtBaseCoordinateSystem;
00034 class DtNetworkNode;
00035 class DtNetworkSegment;
00036 class DtNetworkEdge;
00037 class DtNetworkSpecElement;
00038 class DtFeature;
00039 class DtGroup;
00040 class DtSurface;
00041 class DtGdbTerrainV205Reader;
00042 class DtGdbReaderInitializer;
00043 class DtExtentInitializer;
00044 
00045 typedef DtGdbNode* (*DtGdbTerrainV205ReaderNodeFcn)(DtGdbNode::DtGdbNodeType, FILE* , DtGdbTerrainV205Reader* , DtGroup* );
00046 
00047 // class DtGdbTerrainV205Reader:
00048 //
00049 // DtGdbTerrainV205Reader is responsible for loading the version 205 
00050 // .gdb files into the system.  It is used by the DtGdbTerrainReader.
00051 //
00052 
00053 class DT_DLL_gdb DtGdbTerrainV205Reader : public DtGdbTerrainReader
00054 {
00055 public:
00056   
00057    // default constructor
00058    DtGdbTerrainV205Reader();
00059 
00060    // destructor
00061    virtual ~DtGdbTerrainV205Reader();
00062 
00063 private:
00064    // copy constructor and assignment operator not implemented
00065    DtGdbTerrainV205Reader(const DtGdbTerrainV205Reader& orig);
00066    DtGdbTerrainV205Reader& operator=(const DtGdbTerrainV205Reader& orig);
00067 
00068 public:
00069 
00070    static DtTerrainReader* create();
00071 
00072    // Returns the type of file this database was loaded from.
00073    // This class returns "gdb".  Override this function in derived
00074    // terrain db classes.
00075    virtual const DtString dataType() const;
00076 
00077    virtual bool readFromFile(const DtFilename& basename, DtTerrainDatabase* terrain);
00078 protected:
00079 
00080    // I/O calls.
00081 
00082    virtual void resetStatistics();
00083 
00084    virtual bool readFrom(FILE* fp, DtTerrainDatabase* terrain);
00085 
00086    virtual bool readCoordinateSystem(FILE* fp);
00087 
00088    virtual bool validityCheckVersionNumber(unsigned int versionNumberFromFile);
00089 
00090    virtual DtGdbNode* readNode(FILE* fp, DtGroup* parent);
00091 
00092    virtual bool setReadFcn(DtGdbNode::DtGdbNodeType type, DtGdbTerrainV205ReaderNodeFcn fun);
00093    virtual DtGdbTerrainV205ReaderNodeFcn readFcn(DtGdbNode::DtGdbNodeType type);
00094 
00095    static DtGdbNode* readGroup(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV205Reader* me, DtGroup* parent);
00096    static DtGdbNode* readPolyInd(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV205Reader* me, DtGroup* parent);
00097    static DtGdbNode* readLOD(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV205Reader* me, DtGroup* parent);
00098    static DtGdbNode* readDynamicCoordSys(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV205Reader* me, DtGroup* parent);
00099    static DtGdbNode* readStaticCoordSys(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV205Reader* me, DtGroup* parent);
00100    static DtGdbNode* readTerrainFeature(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV205Reader* me, DtGroup* parent);
00101    static DtGdbNode* readCulturalFeature(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV205Reader* me, DtGroup* parent);
00102    static DtGdbNode* readBuilding(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV205Reader* me, DtGroup* parent);
00103    static DtGdbNode* readTree(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV205Reader* me, DtGroup* parent);
00104    static DtGdbNode* readTriangleInd(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV205Reader* me, DtGroup* parent);
00105    static DtGdbNode* readFileNode(DtGdbNode::DtGdbNodeType type, FILE* fp, DtGdbTerrainV205Reader* me, DtGroup* parent);
00106 
00107    virtual bool readSurface(FILE* fp, DtSurface &surface);
00108    // functions to read vector networks
00109    virtual bool readNetworkNode(FILE* fp, DtNetworkNode* node, std::map<unsigned, unsigned>& oldAddressToNewAddressMap);
00110    virtual bool readNetworkSpecElement(FILE* fp, DtNetworkSpecElement* elem);
00111    virtual bool readNetworkEdge(FILE* fp, DtNetworkEdge* edge, unsigned int& startNodeIndex, unsigned int& endNodeIndex);
00112 
00113    virtual bool readTerrainData(FILE* fp);
00114    virtual bool readFeatureData(FILE* fp);
00115 
00116    virtual bool readSurfaceManager(FILE* fp);
00117    virtual bool readSpecificationManager(FILE* fp);
00118    virtual bool readVertexManager(FILE* fp);
00119    virtual bool readVectorNetwork(FILE* fp);
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 
00137    DtGdbTerrainV205ReaderNodeFcn* myReaderFunctionTable;
00138 };
00139 
00140 // While reading a GDB file, reports whether this database will contain
00141 // optional data
00142 inline bool DtGdbTerrainV205Reader::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)