
00001 //***************************************************************************** 00002 // File : gzNodeConstants.h 00003 // Module : 00004 // Description : Constant and structures for node attributes and definitions 00005 // Author : Anders Modén 00006 // Product : Gizmo3D 2.1.1 00007 // 00008 // Copyright © 2003- Saab Training Systems AB, Sweden 00009 // 00010 // NOTE: Gizmo3D is a high performance 3D Scene Graph and effect visualisation 00011 // C++ toolkit for Linux, Mac OS X, Windows (Win32) and IRIX® for 00012 // usage in Game or VisSim development. 00013 // 00014 // 00015 // Revision History... 00016 // 00017 // Who Date Description 00018 // 00019 // AMO 010505 Created file 00020 // 00021 //****************************************************************************** 00022 #ifndef __GZ_NODE_CONSTANTS_H__ 00023 #define __GZ_NODE_CONSTANTS_H__ 00024 00030 #include "gzNode.h" 00031 00032 GZ_GRAPH_EXPORT gzVoid gzSetNodeDbInfo(gzNode *node,const gzString &attribute,const gzDynamicType &data); 00033 00034 GZ_GRAPH_EXPORT gzDynamicType gzGetNodeDbInfo(gzNode *node,const gzString &attribute); 00035 00036 GZ_GRAPH_EXPORT gzBool gzHasNodeDbInfo(gzNode *node,const gzString &attribute); 00037 00038 GZ_GRAPH_EXPORT gzBool gzHasNodeDbInfo(gzNode *node); 00039 00040 00041 00042 // Constants for named UserData used by nodes 00043 00044 const gzString GZ_USERDATA_DB_INFO ="UserDataDbInfo"; 00045 00046 00047 // Constants for Attributes provided by the GZ_USERDATA_DB_INFO 00048 00049 const gzString GZ_DB_INFO_TYPE ="DbI-Type"; 00050 const gzString GZ_DB_INFO_FLAGS ="DbI-Flags"; 00051 const gzString GZ_DB_INFO_VERSION ="DbI-Version"; 00052 const gzString GZ_DB_INFO_METER_SCALE ="DbI-MeterScale"; 00053 const gzString GZ_DB_INFO_PROJECTION ="DbI-Projection"; 00054 const gzString GZ_DB_INFO_ELLIPSOID ="DbI-Ellipsoid"; 00055 00056 const gzString GZ_DB_INFO_DB_ORIGIN_POS ="DbI-Database Origin"; 00057 const gzString GZ_DB_INFO_DB_SW_POS ="DbI-Database SWpos"; 00058 const gzString GZ_DB_INFO_DB_NE_POS ="DbI-Database NEpos"; 00059 00060 const gzString GZ_DB_INFO_TEXT_COMMENT ="Text Comment"; 00061 const gzString GZ_DB_INFO_SHADOW_GENERATOR ="GenShad"; 00062 00063 00064 // DFAD data 00065 00066 const gzString GZ_DB_INFO_DFAD_SURFACE_MATERIAL ="DbI-DFAD-SMC"; 00067 const gzString GZ_DB_INFO_DFAD_FEATURE_ID ="DbI-DFAD-FID"; 00068 00069 // License Feature 00070 00071 const gzString GZ_DB_INFO_LICENSE ="DbI-LIC"; 00072 00073 // Database size 00074 00075 const gzString GZ_DB_INFO_DB_SIZE ="DbI-SZ"; 00076 00077 00078 // Max Lod distance from loaded db 00079 00080 const gzString GZ_DB_INFO_DB_MAX_LOD_RANGE ="DbI-LR"; 00081 00082 // --------- Attribute constant values -------------------------------- 00083 00084 // Constants for GZ_DB_INFO_PROJECTION 00085 00086 const gzString GZ_DB_INFO_PROJECTION_FLAT ="Flat Earth"; 00087 const gzString GZ_DB_INFO_PROJECTION_SPHERE ="Sphere"; 00088 const gzString GZ_DB_INFO_PROJECTION_TRAPEZODIAL ="Trapezoidal"; 00089 const gzString GZ_DB_INFO_PROJECTION_LAMBERT ="Lambert"; 00090 const gzString GZ_DB_INFO_PROJECTION_UTM ="UTM"; 00091 const gzString GZ_DB_INFO_PROJECTION_RT90 ="RT90"; 00092 const gzString GZ_DB_INFO_PROJECTION_PROJECTED ="Projected"; 00093 00094 // Constants for GZ_DB_INFO_ELLIPSOID 00095 00096 const gzString GZ_DB_INFO_ELLIPSOID_WGS84 ="WGS 1984"; // default 00097 const gzString GZ_DB_INFO_ELLIPSOID_WGS72 ="WGS 1972"; 00098 00099 const gzString GZ_DB_INFO_ELLIPSOID_BESSEL ="Bessel"; // RT90 Sweden 00100 00101 const gzString GZ_DB_INFO_ELLIPSOID_CLARKE_1866 ="Clarke 1866"; 00102 const gzString GZ_DB_INFO_ELLIPSOID_NAD_1927 ="NAD 1927"; 00103 00104 00105 // Structures 00106 00107 // ---------------------------------- latpos -------------------------------- 00108 00109 const gzString GZ_DYNAMIC_TYPE_LATPOS = "LatPos"; 00110 00111 class gzAttribute_LatPos : public gzSerializeData 00112 { 00113 public: 00114 00115 // Attribute data 00116 00117 gzSerializeBinary<gzDouble> latitude; // In degrees 00118 00119 gzSerializeBinary<gzDouble> longitude; // In degrees 00120 00121 gzSerializeBinary<gzDouble> altitude; // In meters 00122 00123 // Serializing methods 00124 00125 virtual gzVoid write(gzSerializeAdapter *adapter) 00126 { 00127 latitude.write(adapter); 00128 longitude.write(adapter); 00129 altitude.write(adapter); 00130 } 00131 00132 virtual gzVoid read(gzSerializeAdapter *adapter) 00133 { 00134 latitude.read(adapter); 00135 longitude.read(adapter); 00136 altitude.read(adapter); 00137 } 00138 00139 virtual gzVoid pushBack(gzSerializeAdapter *adapter) 00140 { 00141 altitude.pushBack(adapter); // Reverse order 00142 longitude.pushBack(adapter); 00143 latitude.pushBack(adapter); 00144 } 00145 00146 virtual gzULong getDataSize(gzSerializeAdapter *adapter=NULL) const 00147 { 00148 return latitude.getDataSize(adapter)+longitude.getDataSize(adapter)+altitude.getDataSize(); 00149 } 00150 00151 static const gzString getDataTag() { return GZ_DYNAMIC_TYPE_LATPOS; } 00152 }; 00153 00154 // ------------------------------------- CartPos -------------------------------------- 00155 00156 const gzString GZ_DYNAMIC_TYPE_CARTPOS = "CartPos"; 00157 00158 class gzAttribute_CartPos : public gzSerializeData 00159 { 00160 public: 00161 00162 // Attribute data 00163 00164 gzSerializeBinary<gzDouble> x; // In db units 00165 00166 gzSerializeBinary<gzDouble> y; // In db units 00167 00168 gzSerializeBinary<gzDouble> z; // In db units 00169 00170 // Serializing methods 00171 00172 virtual gzVoid write(gzSerializeAdapter *adapter) 00173 { 00174 x.write(adapter); 00175 y.write(adapter); 00176 z.write(adapter); 00177 } 00178 00179 virtual gzVoid read(gzSerializeAdapter *adapter) 00180 { 00181 x.read(adapter); 00182 y.read(adapter); 00183 z.read(adapter); 00184 } 00185 00186 virtual gzVoid pushBack(gzSerializeAdapter *adapter) 00187 { 00188 z.pushBack(adapter); // Reverse order 00189 y.pushBack(adapter); 00190 x.pushBack(adapter); 00191 } 00192 00193 virtual gzULong getDataSize(gzSerializeAdapter *adapter=NULL) const 00194 { 00195 return x.getDataSize(adapter)+y.getDataSize(adapter)+z.getDataSize(); 00196 } 00197 00198 static const gzString getDataTag() { return GZ_DYNAMIC_TYPE_CARTPOS; } 00199 }; 00200 00201 //------------------- Database size ---------------------------------------- 00202 00203 const gzString GZ_DYNAMIC_TYPE_DBSIZE = "DBSize"; 00204 00205 class gzAttribute_DBSize : public gzSerializeData 00206 { 00207 public: 00208 00209 // Attribute data 00210 00211 gzSerializeBinary<gzDouble> minX; 00212 00213 gzSerializeBinary<gzDouble> minY; 00214 00215 gzSerializeBinary<gzDouble> minZ; 00216 00217 gzSerializeBinary<gzDouble> maxX; 00218 00219 gzSerializeBinary<gzDouble> maxY; 00220 00221 gzSerializeBinary<gzDouble> maxZ; 00222 00223 // Serializing methods 00224 00225 virtual gzVoid write(gzSerializeAdapter *adapter) 00226 { 00227 minX.write(adapter); 00228 minY.write(adapter); 00229 minZ.write(adapter); 00230 maxX.write(adapter); 00231 maxY.write(adapter); 00232 maxZ.write(adapter); 00233 } 00234 00235 virtual gzVoid read(gzSerializeAdapter *adapter) 00236 { 00237 minX.read(adapter); 00238 minY.read(adapter); 00239 minZ.read(adapter); 00240 maxX.read(adapter); 00241 maxY.read(adapter); 00242 maxZ.read(adapter); 00243 } 00244 00245 virtual gzVoid pushBack(gzSerializeAdapter *adapter) 00246 { 00247 maxZ.pushBack(adapter); 00248 maxY.pushBack(adapter); 00249 maxX.pushBack(adapter); 00250 minZ.pushBack(adapter); 00251 minY.pushBack(adapter); 00252 minX.pushBack(adapter); 00253 } 00254 00255 virtual gzULong getDataSize(gzSerializeAdapter *adapter=NULL) const 00256 { 00257 return 6*sizeof(gzDouble); 00258 } 00259 00260 static const gzString getDataTag() { return GZ_DYNAMIC_TYPE_DBSIZE; } 00261 }; 00262 00263 // -------------------------------------------------------------------------------------- 00264 00265 #endif // __GZ_NODE_CONSTANTS_H__