VR-Forces 4.0.4 Class Documentation
include/gdb/gdbTerrainWriter.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2004 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: gdbTerrainWriter.h,v $ $Revision: 1.22 $ $State: Exp $
00007 *******************************************************************************/
00008 
00009 #ifndef gdbTerrainWriter_H_
00010 #define gdbTerrainWriter_H_
00011 
00012 #include "gdb/gdbDefines.h"
00013 #include <stdio.h>
00014 #include <vlutil/vlFilename.h>
00015 #include "terrainCS/coordSystem.h"
00016 #include "gdb/terModCbInfo.h"
00017 #include "gdb/terrainWriter.h"
00018 
00019 #include "gdb/terrainDb.h"
00020 #include "geometry/spatialSubdivision.h"
00021 
00022 
00023 //forward declarations
00024 class DtExtent;
00025 class DtChord;
00026 class DtChordBundle;
00027 class DtChordIntersectionRecord;
00028 class DtChordIntersectRecordList;
00029 class DtColor;
00030 class DtGdbNode;
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 DtSpatialSubdivisionTerrainIntersectorDescriptor;
00042 class DtGdbTerrainWriter;
00043 
00044 typedef bool (*DtGdbTerrainWriterNodeFcn)(DtGdbNode* node, FILE *, DtGdbTerrainWriter *);
00045 
00046 // class DtGdbTerrainWriter:
00047 //
00048 // DtGdbTerrainWriter represents an entire database in GDB
00049 // format.
00050 
00051 class DT_DLL_gdb DtGdbTerrainWriter : public DtTerrainWriter
00052 {
00053 public:
00054   
00055    // default constructor
00056    DtGdbTerrainWriter();
00057 
00058    // initialization function
00059    virtual bool writeTerrain(const DtFilename& filename, DtTerrainDatabase *terrain);
00060 
00061    // destructor
00062    virtual ~DtGdbTerrainWriter();
00063 
00064    static DtTerrainWriter* create();
00065 
00066    // Returns the type of file this database was loaded from.
00067    // This class returns "gdb".  Override this function in derived
00068    // terrain db classes.
00069    virtual const DtString dataType() const;
00070 
00071 protected:
00072 
00073    // I/O calls.
00074    virtual bool writeTo(FILE* fp, DtTerrainDatabase *terrain);
00075 
00076    // copy constructor
00077    DtGdbTerrainWriter(const DtGdbTerrainWriter& orig);
00078 
00079    // assignment operator
00080    DtGdbTerrainWriter& operator=(const DtGdbTerrainWriter& orig);
00081 
00082    virtual bool writeVersionNumber(FILE* fp);
00083    virtual bool writeTerrainIntersectionModelType(FILE* fp);
00084 
00085    virtual bool writeOptionalFlags(FILE* fp, int optionalFlags);
00086    virtual bool writeCoordinateSystem(FILE* fp);
00087 
00088    virtual bool writeNode(FILE *fp, DtGdbNode *node);
00089 
00090    virtual bool setWriteFcn(DtGdbNode::DtGdbNodeType type, DtGdbTerrainWriterNodeFcn fun);
00091 
00092    virtual DtGdbTerrainWriterNodeFcn writeFcn(DtGdbNode::DtGdbNodeType type);
00093    virtual bool writeSpheroidInformation(FILE* fp);
00094 
00095    static bool writeGroup(DtGdbNode *node, FILE *fp, DtGdbTerrainWriter *me);
00096    static bool writeLOD(DtGdbNode *node, FILE *fp, DtGdbTerrainWriter *me);
00097    static bool writeDynamicCoordSys(DtGdbNode *node, FILE *fp, DtGdbTerrainWriter *me);
00098    static bool writeStaticCoordSys(DtGdbNode *node, FILE *fp, DtGdbTerrainWriter *me);
00099    static bool writeTerrainFeature(DtGdbNode *node, FILE *fp, DtGdbTerrainWriter *me);
00100    static bool writeCulturalFeature(DtGdbNode *node, FILE *fp, DtGdbTerrainWriter *me);
00101    static bool writeBuilding(DtGdbNode *node, FILE *fp, DtGdbTerrainWriter *me);
00102    static bool writeTree(DtGdbNode *node, FILE *fp, DtGdbTerrainWriter *me);
00103    static bool writePolyInd(DtGdbNode *node, FILE *fp, DtGdbTerrainWriter *me);
00104    static bool writeTriangleInd(DtGdbNode *node, FILE *fp, DtGdbTerrainWriter *me);
00105    static bool writeFileNode(DtGdbNode *node, FILE *fp, DtGdbTerrainWriter *me);
00106 
00107    virtual bool writeVertexManager(FILE *fp);
00108    virtual bool writeSurfaceManager(FILE *fp);
00109    virtual bool writeSurface(FILE *fp, DtSurface &surface);
00110    virtual bool writeCoordSys(FILE *fp, DtBaseCoordinateSystem*coordSys);
00111 
00112    virtual bool writeSpecificationManager(FILE *fp);
00113    virtual bool writeVectorNetwork(FILE *fp);
00114 
00115    // functions to write vector networks
00116    virtual bool writeNetworkNode(FILE *fp, DtNetworkNode *node);
00117    virtual bool writeNetworkEdge(FILE *fp, DtNetworkEdge *edge);
00118    virtual bool writeNetworkSpecElement(FILE *fp, DtNetworkSpecElement *elem);
00119    
00120    virtual bool writeFeature(FILE *fp, DtFeature *feature);
00121 
00122    // While writeing a GDB file, reports whether this database will contain
00123    // optional data
00124    bool fileHasOptionalData(DtTerrainFileOptionalData optData);
00125 
00126    // Save the spatial subdivision info from the descriptor into the file.
00127    virtual bool writeSpatialSubdivision(FILE* fp, 
00128       const DtSpatialSubdivisionTerrainIntersectorDescriptor& descriptor);
00129 
00130 protected:
00131    // This is used to denote whether the specification manager is holding the old style specifications
00132    // or the new style (not yet implemented).  Can be anything, but treat it as a sub-version number,
00133    static unsigned int DtTempSpecificationMgrVersionNumber;
00134 
00135    DtGdbTerrainWriterNodeFcn* myWriterFunctionTable;
00136 };
00137 
00138 #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)