![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: $ $Revision: $ $State: $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 #include <vrvTerrain/vrvTerrain.h> 00015 #include <vrvTerrain/DtMetaFlightTypes.h> 00016 #include <map> 00017 #include <string> 00018 #include <boost/shared_ptr.hpp> 00019 00020 class DtDegMinSec; 00021 00022 namespace makVrv 00023 { 00024 class DtMetaFlightParser; 00025 00028 class DT_DLL_VRVTERRAIN DtMetaFlightDescription 00029 { 00030 public: 00031 00033 DtMetaFlightDescription(); 00034 00036 ~DtMetaFlightDescription(); 00037 00039 void getPaths(std::vector<std::string>& paths); 00040 00042 void parse(DtMetaFlightParser& parser); 00043 00045 unsigned int numberOfGeometryDatasets() const; 00046 00049 const std::string& geometryDatasetName(int index) const; 00050 00052 const DtMetaFlightTypes::Position2D& geometryDatasetOrigin( 00053 const std::string& dsName) const; 00054 00056 const DtMetaFlightTypes::Position2D& geometryDatasetExtent( 00057 const std::string& dsName) const; 00058 00061 const double geometryDatasetRadius(const std::string& dsName) const; 00062 00066 const std::string& geometryDatasetName(const std::string& dsName) const; 00067 00070 const std::string& geometryDatasetTitle(const std::string& dsName) const; 00071 00074 const std::string& geometryDatasetFileFormat(const std::string& dsName) const; 00075 00077 DtMetaFlightTypes::CoordSysTypeSP geometryDatasetDataCoordinateSystem( 00078 const std::string& dsName) const; 00079 00082 const std::string& geometryDatasetFileNamePattern(const std::string& dsName) const; 00083 00085 DtMetaFlightTypes::CoordSysTypeSP geometryDatasetGridCoordinateSystem( 00086 const std::string& dsName) const; 00087 00089 const DtMetaFlightTypes::HierarchyType& geometryDatasetGridHierarchyType( 00090 const std::string& dsName) const; 00091 00094 unsigned int numberOfGeometryGridLevels(const std::string& dsName) const; 00095 00098 const std::string& geometryGridLevelName(const std::string& dsName, 00099 int index) const; 00100 00103 DtMetaFlightTypes::TileType geometryGridLevelTileType( 00104 const std::string& dsName, int index) const; 00105 00107 unsigned int geometryGridLevelColumns(const std::string& dsName, 00108 int index) const; 00109 00112 unsigned int geometryGridLevelColDivisions( const std::string& dsName, 00113 int index ) const; 00114 00116 unsigned int geometryGridLevelRows(const std::string& dsName, 00117 int index) const; 00118 00121 unsigned int geometryGridLevelRowDivisions( const std::string& dsName, 00122 int index ) const; 00123 00126 double geometryGridLevelSwitchIn(const std::string& dsName,int index) const; 00127 00130 double geometryGridLevelSwitchOut(const std::string& dsName,int index) const; 00131 00135 void geometryGridTileCenter(const std::string& dsName, unsigned int level, 00136 unsigned int row, unsigned int column, 00137 double& centerX, double& centerY, double& centerZ) const; 00138 00141 static void convertPosition( 00142 DtMetaFlightTypes::CoordSysTypeSP sourceCoordSystem, 00143 DtMetaFlightTypes::CoordSysTypeSP destCoordSystem, 00144 double& centerX, double& centerY, double& centerZ ); 00145 00149 void geometryGridTileOffset(const std::string& dsName, unsigned int level, 00150 unsigned int row, unsigned int column, 00151 double& offsetX, double& offsetY, double& offsetZ) const; 00152 00156 std::string generateGeometryGridTileFilename(const std::string& dsName, 00157 int index, unsigned int row, unsigned int column); 00158 00160 unsigned int numberOfVirtualTextureDatasets() const; 00161 00164 const std::string& virtualTextureDatasetName(int index) const; 00165 00167 DtMetaFlightTypes::CoordSysTypeSP virtualTextureCoordinateSystem( 00168 const std::string& dsName) const; 00169 00172 DtMetaFlightTypes::Position2D virtualTextureDatasetOrigin( 00173 const std::string& dsName) const; 00174 00177 DtMetaFlightTypes::Position2D virtualTextureDatasetOrigin( 00178 const std::string& dsName, 00179 const DtMetaFlightTypes::CoordSysTypeSP& system) const; 00180 00183 DtMetaFlightTypes::Position2D virtualTextureDatasetExtent( 00184 const std::string& dsName) const; 00185 00188 DtMetaFlightTypes::Position2D virtualTextureDatasetExtent( 00189 const std::string& dsName, 00190 const DtMetaFlightTypes::CoordSysTypeSP& system) const; 00191 00194 const std::string& virtualTextureDatasetTitle(const std::string& dsName) const; 00195 00198 const std::string& virtualTextureDatasetFileFormat(const std::string& dsName) const; 00199 00202 const std::string& virtualTextureDatasetFileNamePattern(const std::string& dsName) const; 00203 00206 unsigned int virtualTextureDatasetTileTexels(const std::string& dsName) const; 00207 00210 const std::string& virtualTextureDatasetSubstitutionTextureName( 00211 const std::string& dsName) const; 00212 00215 unsigned int numberOfVirtualTextureGridLevels(const std::string& dsName) const; 00216 00219 const std::string& virtualTextureGridLevelName(const std::string& dsName, 00220 int index) const; 00221 00223 unsigned int virtualTextureGridLevelColumns(const std::string& dsName, 00224 int index) const; 00225 00228 unsigned int virtualTextureGridLevelColDivisions(const std::string& dsName, 00229 int index) const; 00230 00232 unsigned int virtualTextureGridLevelRows(const std::string& dsName, 00233 int index) const; 00234 00237 unsigned int virtualTextureGridLevelRowDivisions(const std::string& dsName, 00238 int index) const; 00239 00243 std::string generateVirtualTextureFileName(const std::string& dsName, 00244 int index, unsigned int row, unsigned int column) const; 00245 00247 const std::string& virtualTexturePath() const; 00248 00250 inline const DtMetaFlightTypes::Database* database() const 00251 { 00252 return myDatabase; 00253 } 00254 00255 struct StringOrInt 00256 { 00257 bool isString; 00258 std::string s_data; 00259 int i_data; 00260 00261 void operator=(const std::string& str) 00262 { 00263 isString = true; 00264 s_data = str; 00265 } 00266 00267 void operator=(int i) 00268 { 00269 isString = false; 00270 i_data = i; 00271 } 00272 }; 00273 typedef std::map<std::string,StringOrInt> PatternMap; 00274 00275 static std::string generateFileName(const std::string& filenamePattern, 00276 const PatternMap& patternMap); 00277 00278 protected: 00279 00280 static void setLonDtDegMinSecFromDegrees(DtDegMinSec& dmslon, double deg); 00281 static void setDtDegMinSecFromDegrees(DtDegMinSec& dms, double deg); 00282 static void setLatDtDegMinSecFromDegrees(DtDegMinSec& dmslat, double deg); 00283 00284 protected: 00285 00286 std::string myFilePath; 00287 std::string myVtFilePath; 00288 00289 DtMetaFlightTypes::Database* myDatabase; 00290 }; 00291 }