VR-Forces 4.0.4 Class Documentation
include/drawerNative/coordUtils.h
Go to the documentation of this file.
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

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)