![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2003 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: coordUtils.h,v $ $Revision: 1.8 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef COOORDUTILS_H 00013 #define COOORDUTILS_H 00014 00015 #include "drawerNative/drawerNativeDefines.h" 00016 #include "drawerNative/convUtils.h" 00017 #include "drawerNative/unitDisplayManager.h" 00018 00019 #include <QtCore/QString> 00020 #include <QtCore/QObject> 00021 #include <QtCore/QStringList> 00022 #include <QtCore/QHash> 00023 00024 enum DtCoordSys 00025 { 00026 DtCoordSysGeocentric, 00027 DtCoordSysUtm, 00028 DtCoordSysGeodeticDMS, 00029 DtCoordSysGeodeticDDD, 00030 DtCoordSysMgrs, 00031 DtCoordSysDatabase, 00032 DtCoordSysBody, 00033 DtMAXCoordSys 00034 }; 00035 00036 class DtUnitDisplayManager; 00037 class DtGridLineDrawer; 00038 00039 class DT_DLL_drawerNative DtStringLocation 00040 { 00041 public: 00042 DtStringLocation() {}; 00043 DtStringLocation(const QString& x, const QString& y, const QString& z) : 00044 myX(x), myY(y), myZ(z) {}; 00045 DtStringLocation(const DtStringLocation& orig) : 00046 myX(orig.myX), myY(orig.myY), myZ(orig.myZ) {}; 00047 00048 DtStringLocation& operator=(const DtStringLocation& rhs) 00049 { myX = rhs.myX; myY = rhs.myY; myZ = rhs.myZ; return *this; }; 00050 00051 void setX(const QString& x) { myX = x; }; 00052 const QString& x() const { return myX; }; 00053 00054 void setY(const QString& y) { myY = y; }; 00055 const QString& y() const { return myY; }; 00056 00057 void setZ(const QString& z) { myZ = z; }; 00058 const QString& z() const { return myZ; }; 00059 00060 protected: 00061 QString myX, myY, myZ; 00062 }; 00063 00064 class DT_DLL_drawerNative DtCoordinateSystem : public QObject 00065 { 00066 public: 00067 DtCoordinateSystem(const DtUnitDisplayManager*); 00068 virtual ~DtCoordinateSystem(); 00069 00070 public: 00071 virtual QString name() = 0; 00072 virtual QString xLabelFor() const = 0; 00073 virtual QString yLabelFor() const = 0; 00074 virtual QString zLabelFor() const = 0; 00075 00079 virtual DtGridLineChoiceMap gridLineChoices(const QString& units) const = 0; 00080 00081 const DtUnitDisplayManager* unitDisplayManager() const; 00082 00083 void setPrecision(int); 00084 virtual int precision() const; 00085 00086 void setPrecisionLowerBound(int); 00087 virtual int precisionLowerBound() const; 00088 00089 void setPrecisionUpperBound(int); 00090 int precisionUpperBound() const; 00091 00092 void setApplyPrecision(bool b); 00093 bool applyPrecision() const; 00094 00095 QString formatToPrecision(double d) const; 00096 00097 public: 00100 virtual bool convertFrom(const DtCoordinateSystem* oldCS, const DtStringLocation& curLoc, 00101 DtStringLocation& newLoc) const = 0; 00102 00106 virtual QString formatSourceToDestination(double val, const QString& unitDisplay, const QString& source, 00107 const QString& destination) const = 0; 00108 00110 virtual QString formatSourceToDisplay(double val, const QString& unitDisplay, const QString& source) const; 00111 00113 virtual QString formatDestinationToSource(double val, const QString& unitDisplay, const QString& source, 00114 const QString& destination) const = 0; 00116 virtual QString formatDisplayToSource(double val, const QString& unitDisplay, const QString& source) const; 00117 00119 virtual QString formatSourceToDestination(const QString& val, const QString& unitDisplay, const QString& source, 00120 const QString& destination) const = 0; 00121 virtual QString formatSourceToDisplay(const QString& val, const QString& unitDisplay, const QString& source) const; 00122 00123 virtual QString formatDestinationToSource(const QString& val, const QString& unitDisplay, const QString& source, 00124 const QString& destination) const = 0; 00125 virtual QString formatDisplayToSource(const QString& val, const QString& unitDisplay, const QString& source) const; 00126 00128 virtual double convertSourceToDestination(double val, const QString& source, const QString& destination) const; 00129 virtual double convertSourceToDisplay(double val, const QString& unitDisplay, const QString& source) const; 00130 00132 virtual double convertDestinationToSource(double val, const QString& source, const QString& destination) const; 00133 virtual double convertDisplayToSource(double val, const QString& unitDisplay, const QString& source) const; 00134 00137 virtual DtGridLineDrawer* gridLineDrawer() const; 00138 00140 virtual void setGridLineDrawer(DtGridLineDrawer*); 00141 virtual DtGridLineDrawer* createDefaultGridLineDrawer() const; 00142 00143 protected: 00144 const DtUnitDisplayManager* myUnits; 00145 mutable DtGridLineDrawer* myGridLineDrawer; 00146 int myPrecision; 00147 int myUpperBound; 00148 int myLowerBound; 00149 bool myApplyPrecision; 00150 }; 00151 00152 inline const DtUnitDisplayManager* DtCoordinateSystem::unitDisplayManager() const 00153 { 00154 return myUnits; 00155 } 00156 00157 inline void DtCoordinateSystem::setPrecision(int d) 00158 { 00159 myPrecision = d; 00160 } 00161 00162 inline void DtCoordinateSystem::setPrecisionLowerBound(int i) 00163 { 00164 myLowerBound = i; 00165 } 00166 00167 inline void DtCoordinateSystem::setPrecisionUpperBound(int i) 00168 { 00169 myUpperBound = i; 00170 } 00171 00172 inline int DtCoordinateSystem::precisionUpperBound() const 00173 { 00174 return myUpperBound; 00175 } 00176 00177 inline void DtCoordinateSystem::setApplyPrecision(bool b) 00178 { 00179 myApplyPrecision = b; 00180 } 00181 00182 inline bool DtCoordinateSystem::applyPrecision() const 00183 { 00184 return myApplyPrecision; 00185 } 00186 00187 #endif