![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: c7b.h,v $ $Revision: 1.23 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef c7b_H_ 00009 #define c7b_H_ 00010 00011 #include "ctdb/ctdbDefines.h" 00012 #ifdef WIN32 00013 #include <float.h> 00014 #define isAValidFloat(x) (!_isnan(x)) 00015 #else 00016 #include <math.h> 00017 #define isAValidFloat(x) (!isnan(x)) 00018 #endif 00019 00020 #include "gdb/terrainReader.h" 00021 #include <vlutil/vlFilename.h> 00022 #include "geometry/point.h" 00023 #include "ctdb/c7NetTypes.h" 00024 #include <vlutil/vlList.h> 00025 #include "gdb/specMgr.h" 00026 00027 class DtC7bHeader; 00028 class DtC7bAuxHeader; 00029 class DtC7bGeoid; 00030 class DtC7bPatchGroupHeader; 00031 class DtC7bNode; 00032 class DtC7bEdge; 00033 class DtC7bAbstractFeature; 00034 class DtC7bLinearModel; 00035 class DtC7bVolumeModel; 00036 class DtC7bAggModel; 00037 class DtC7bMesTemplate; 00038 class DtC7bMesVolume; 00039 class DtC7bPatTable; 00040 class DtC7bWaterChars; 00041 class DtC7bElevation; 00042 class DtC7bGroup; 00043 00044 class DtSurfaceManager; 00045 class DtGridPostList; 00046 class DtGroup; 00047 00048 class DtVectorNetwork; 00049 class DtNetworkNode; 00050 00051 00052 class DT_DLL_ctdb DtC7bReader : public DtTerrainReader 00053 { 00054 public: 00055 00056 DtC7bReader(); 00057 ~DtC7bReader(); 00058 00059 // Loads terrain database file named filename, returning the data in 00060 // terrain. The terrain pointer passed in must be initialized before calling 00061 // loadTerrain. 00062 virtual bool loadTerrain(const DtFilename& filename, 00063 DtTerrainDatabase* terrain); 00064 00065 // Loads terrain database file named filename, returning the data in 00066 // terrain. The initializer object is used to pass in additional information 00067 // about the terrain to be loaded. The terrain pointer passed in must be 00068 // initialized before calling loadTerrain. 00069 virtual bool loadTerrain(const DtFilename& filename, 00070 DtTerrainDatabase* terrain, 00071 const DtTerrainInitializer* initializer); 00072 00073 // Returns "c7b" 00074 virtual const DtString dataType() const; 00075 00076 virtual DtVectorNetwork* localNetwork() {return myLocalNetwork;} 00077 virtual DtNetworkNode* betterNode(DtPoint &point, unsigned specID); 00078 00079 static DtTerrainReader* create(); 00080 00081 // Returns only the coordinate system that would define this database. Should not load 00082 // any polygonal or vector information 00083 virtual Coordinate_System* coordinateSystem(const DtFilename& filename); 00084 00085 protected: 00086 00087 virtual bool setupAndReadHeader(const DtFilename&, DtNetworkByteOrderType&); 00088 virtual void cleanUpC7b(); 00089 virtual bool read(const DtFilename &filename); 00090 virtual bool readPatchGroupHeaders(); 00091 virtual bool readTopology(); 00092 virtual bool readQuadTree(); 00093 virtual bool readLinearModels(); 00094 virtual bool readVolumeModels(); 00095 virtual bool readAggregateModels(); 00096 virtual bool readMes(); 00097 virtual bool readMesTemplates(); 00098 virtual bool readMesVolumes(); 00099 virtual bool readSoilTables(); 00100 virtual bool readWaterChars(); 00101 virtual bool readTidalZones(); 00102 virtual bool readElevations(); 00103 virtual bool readAllPatchData(); 00104 00105 virtual bool import(); 00106 virtual bool buildSurfaceManager(); 00107 virtual bool createFromGrid(); 00108 virtual bool createFromTin(); 00109 virtual bool createGridElevationData(DtGroup* group); 00110 virtual bool createGroupGrid(DtGroup* group); 00111 virtual bool importFeatures(); 00112 virtual bool importFeatureData(); 00113 virtual bool triangulateGridData(); 00114 virtual bool importAbstractData(); 00115 00116 virtual void calculateMaxMinHigh(); 00117 00118 virtual int optionalFileFlags(const DtFilename& filename) 00119 { 00120 return 0; 00121 } 00122 00123 public: 00124 00125 DtC7bHeader* myC7bHeader; 00126 DtC7bAuxHeader* myC7bAuxHeader; 00127 DtC7bGeoid* myC7bGeoid; 00128 DtC7bPatchGroupHeader* myC7bPatchGroupHeaders; 00129 DtC7bNode *myC7bNodes; 00130 DtC7bEdge *myC7bEdges; 00131 DtC7bAbstractFeature **myC7bAbstractFeatures; 00132 DtC7bLinearModel *myC7bLinearModels; 00133 DtC7bVolumeModel *myC7bVolumeModels; 00134 DtC7bVolumeModel *myC7bMesVolumeModels; 00135 DtC7bAggModel *myC7bAggModels; 00136 DtC7bMesTemplate *myC7bMesTemplates; 00137 DtC7bMesVolume *myC7bMesVolumes; 00138 DtC7NetU32 *myC7bSoilTableIndex; 00139 DtNetU8 *myC7bSoilTables; 00140 DtC7bPatTable *myC7bPatTable; 00141 DtC7bWaterChars *myC7bWaterChars; 00142 DtC7NetFloat32 *myC7bTidalZones; 00143 DtC7bElevation *myC7bElevations; 00144 DtC7NetInt32 *myC7bSoils; 00145 DtC7bGroup *myC7bGroups; 00146 00147 int myPatchesWide; 00148 int myPatchesHigh; 00149 int myNumPatchGroups; 00150 int myNumNodes; 00151 int myNumEdges; 00152 int myNumAbstractFeatures; 00153 int myNumLinearModels; 00154 int myNumVolumeModels; 00155 int myNumMesVolumeModels; 00156 int myNumAggModels; 00157 int myNumMesTemplates; 00158 int myNumMesVolumes; 00159 int myNumSoilTables; 00160 int mySizeSoilTables; 00161 int myNumWaterChars; 00162 int myNumTidalZones; 00163 int myNumElevations; 00164 int myNumSoils; 00165 00166 double myMaxHigh; 00167 double myMinHigh; 00168 double myLenHigh; 00169 double myPatchSize; 00170 00171 long myBaseX; 00172 long myBaseY; 00173 long myStepX; 00174 long myStepY; 00175 00176 FILE* myFile; 00177 00178 DtSurfaceManager* mySurfaceManager; 00179 DtGridPostList* myGridPostList; 00180 DtVectorNetwork* myLocalNetwork; 00181 00182 DtList myNodeLists[10][10]; 00183 bool mySourceIsLittleEndian; 00184 00185 static const unsigned int theNumColorGradations; 00186 static DtSpecificationID theRiverSpec; 00187 static DtSpecificationID theRoadSpec; 00188 static DtSpecificationID theRailroadSpec; 00189 static DtSpecificationID theTreeSpec; 00190 static DtSpecificationID theTreesSpec; 00191 static DtSpecificationID theFencesSpec; 00192 static DtSpecificationID theMicrowaterSpec; 00193 static DtSpecificationID thePipelineSpec; 00194 static DtSpecificationID thePowerlineSpec; 00195 static DtSpecificationID theBoundarySpec; 00196 }; 00197 00198 #endif 00199