![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 1999 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: terrainReader.h,v $ $Revision: 1.21 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef terrainReader_H_ 00009 #define terrainReader_H_ 00010 00011 // \file terrainReader.h 00012 // \brief Contains the DtTerrainReader class declaration. 00013 00014 #include "gdb/gdbDefines.h" 00015 #include <vlutil/vlFilename.h> 00016 00017 enum DtTerrainFileVersionNumber 00018 { 00019 OLD_TDB_FILE_FORMAT_VERSION = 100, 00020 TDB_FILE_FORMAT_VERSION = 200, 00021 TDB_FILENODE_VERSION = 201, 00022 TDB_DATA_FLAGS_VERSION = 202, 00023 TDB_VECTOR_DATA_VERSION = 203, 00024 TDB_204_VERSION = 204, 00025 TDB_205_VERSION = 205, 00026 TDB_206_VERSION = 206, 00027 TDB_207_VERSION = 207, 00028 TDB_208_VERSION = 208, 00029 TDB_209_VERSION = 209, 00030 TDB_210_VERSION = 210 00031 }; 00032 00033 00034 class DtTerrainDatabase; 00035 class DtTerrainInitializer; 00036 class DtTerrainFileInitializer; 00037 class Coordinate_System; 00038 00039 // 00040 // DtTerrainReader is an abstract class that represents a reader for any format 00041 class DT_DLL_gdb DtTerrainReader 00042 { 00043 public: 00044 00045 // default constructor 00046 DtTerrainReader(); 00047 00048 // Loads terrain database file named filename, returning the data in 00049 // terrain. The terrain pointer passed in must be initialized before calling 00050 // loadTerrain. 00051 virtual bool loadTerrain(const DtFilename& filename, 00052 DtTerrainDatabase* terrain) = 0; 00053 00054 // Loads terrain database file named filename, returning the data in 00055 // terrain. The initializer object is used to pass in additional information 00056 // about the terrain to be loaded. The terrain pointer passed in must be 00057 // initialized before calling loadTerrain. 00058 virtual bool loadTerrain(const DtFilename& filename, 00059 DtTerrainDatabase* terrain, 00060 const DtTerrainInitializer* initializer) = 0; 00061 00062 // destructor 00063 virtual ~DtTerrainReader(); 00064 00065 virtual DtTerrainDatabase *terrainDb(); 00066 00067 // Pre-processes the terrain if specified in any way in the initializer, such 00068 // as preallocating the expected number of vertices and surfaces to hold. 00069 virtual bool preprocessTerrain(const DtTerrainFileInitializer& terrainInitializer, 00070 DtTerrainDatabase& terrainDb) const; 00071 00072 virtual const DtString dataType() const = 0; 00073 00074 void setTerrainInitializer(const DtTerrainInitializer* initializer); 00075 const DtTerrainInitializer* terrainInitializer() const; 00076 00077 // Returns only the coordinate system that would define this database. Should not load 00078 // any polygonal or vector information 00079 virtual Coordinate_System* coordinateSystem(const DtFilename& filename) = 0; 00080 00081 // Returns only optional file flags. Should not load 00082 // any polygonal or vector information 00083 virtual int optionalFileFlags(const DtFilename& filename) = 0; 00084 00085 protected: 00086 00087 // initialize the reader when loading, is called inside of loadTerrain 00088 virtual void init(const DtFilename& filename, DtTerrainDatabase* terrain); 00089 00090 // copy constructor 00091 DtTerrainReader(const DtTerrainReader& orig); 00092 00093 // assignment operator 00094 DtTerrainReader& operator=(const DtTerrainReader& orig); 00095 00096 protected: 00097 00098 DtTerrainDatabase* myTerrainDatabase; 00099 DtFilename myFilename; 00100 00101 const DtTerrainInitializer* myTerrainInitializer; 00102 }; 00103 00104 inline DtTerrainDatabase* DtTerrainReader::terrainDb() 00105 { 00106 return myTerrainDatabase; 00107 } 00108 00109 inline void DtTerrainReader::setTerrainInitializer( 00110 const DtTerrainInitializer* initializer) 00111 { 00112 myTerrainInitializer = initializer; 00113 } 00114 00115 inline const DtTerrainInitializer* DtTerrainReader::terrainInitializer() const 00116 { 00117 return myTerrainInitializer; 00118 } 00119 00120 #endif