![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 1999 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: gdbTerrainReader.h,v $ $Revision: 1.16 $ $State: Exp $ 00007 *********************************************************************/ 00008 #ifndef gdbTerrainReader_H_ 00009 #define gdbTerrainReader_H_ 00010 00013 00014 #include "gdb/gdbDefines.h" 00015 #include <stdio.h> 00016 #include "terrainCS/coordSystem.h" 00017 #include "gdb/terModCbInfo.h" 00018 #include "gdb/terrainReader.h" 00019 00020 class DtTerrainDatabase; 00021 class DtExtentInitializer; 00022 class DtGdbReaderInitializer; 00023 class DtFilename; 00024 class DtSpatialSubdivisionTerrainIntersectorDescriptor; 00025 00029 class DT_DLL_gdb DtGdbTerrainReader : public DtTerrainReader 00030 { 00031 public: 00032 00034 DtGdbTerrainReader(); 00035 00037 virtual ~DtGdbTerrainReader(); 00038 00039 private: 00040 00043 DtGdbTerrainReader(const DtGdbTerrainReader& original); 00044 const DtGdbTerrainReader& operator=(const DtGdbTerrainReader& original); 00045 00046 public: 00047 00051 virtual bool loadTerrain(const DtFilename& filename, DtTerrainDatabase* terrain); 00052 00057 virtual bool loadTerrain(const DtFilename& filename, DtTerrainDatabase* terrain, 00058 const DtTerrainInitializer* initializer); 00059 00060 static DtTerrainReader * create(); 00061 00065 virtual const DtString dataType() const; 00066 00068 virtual bool readFromFile(const DtFilename& basename, DtTerrainDatabase* terrain); 00069 00070 // Returns only the coordinate system that would define this database. Should not load 00071 // any polygonal or vector information 00072 virtual Coordinate_System* coordinateSystem(const DtFilename& filename); 00073 00074 // Returns only the optional file flags. Should not load any polygonal or vector information 00075 virtual int optionalFileFlags(const DtFilename& filename); 00076 00077 protected: 00078 00080 bool testInvariant() const; 00081 00083 bool createTerrain(const DtFilename& filename, 00084 DtTerrainDatabase& terrainDb, const DtGdbReaderInitializer& gdbInitializer); 00085 00087 bool loadTerrainFromFile(const DtFilename& filename, 00088 DtTerrainDatabase& terrainDb, const DtGdbReaderInitializer& gdbInitializer); 00089 00090 00091 // I/O calls. 00092 virtual bool readCoordinateSystem(FILE* fp); 00093 00095 // closes the file pointer before returning. 00096 // Returns false if unable to read version number for any reason. 00097 virtual bool readVersionNumber(const DtFilename& basename, DtTerrainFileVersionNumber& versionNumber); 00098 00099 00101 virtual bool readVersionNumberFromFile(FILE* fp); 00102 00104 virtual bool loadTerrainUsingGdbReader(const DtFilename& basename, 00105 const DtTerrainFileVersionNumber versionNumber, 00106 DtTerrainDatabase* terrain); 00107 00109 virtual DtTerrainFileVersionNumber versionNumberFromFile() const; 00110 00112 virtual void setVersionNumberFromFile(DtTerrainFileVersionNumber versionNumber); 00113 00116 virtual bool verifyFileType(DtString filename, const DtString& type = "gdb"); 00117 00120 virtual bool loadSpatialSubdivision(FILE* fp, 00121 DtSpatialSubdivisionTerrainIntersectorDescriptor& descriptor) const; 00122 00123 private: 00124 00125 DtTerrainFileVersionNumber myVersionNumberFromFile; 00126 00127 }; 00128 00129 #endif