![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 * Copyright (c) 2011 MaK Technologies, Inc. 00003 * All rights reserved. 00004 ********************************************************************/ 00005 /********************************************************************* 00006 * $RCSfile: DtCoordinateDisplay.h,v $ $Revision: 1.8 $ $State: Exp $ 00007 ********************************************************************/ 00008 00012 00013 #pragma once 00014 #include <vrvUtil/vrvUtil.h> 00015 #include <vrvUtil/DtUnicode.h> 00016 #include <makArchives/DtDisplayUnitsSettingsRecord.h> 00017 00018 class DtVector; 00019 class DtTaitBryan; 00020 00021 namespace makVrv 00022 { 00023 class DtCoordinateSystem; 00024 00027 class DT_DLL_VRVUTIL DtCoordinateDisplay 00028 { 00029 public: 00030 00031 typedef makArchives::DtDisplayUnitsSettingsRecord::CoordSys CoordSys; 00032 typedef makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits DistanceUnits; 00033 typedef makArchives::DtDisplayUnitsSettingsRecord::VelocityUnits VelocityUnits; 00034 typedef makArchives::DtDisplayUnitsSettingsRecord::AccelerationUnits AccelerationUnits; 00035 typedef makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits OrientationUnits; 00036 typedef makArchives::DtDisplayUnitsSettingsRecord::RotVelocityUnits RotVelocityUnits; 00037 typedef std::list<DistanceUnits> SupportedPositionDistanceUnits; 00038 typedef std::list<OrientationUnits> SupportedPositionAngularUnits; 00039 typedef std::list<std::string> SupportedCSForGridLines; 00040 00041 00047 DtCoordinateDisplay( const DtCoordinateSystem& coordSys ); 00048 00050 virtual ~DtCoordinateDisplay(); 00051 00053 virtual DtCoordinateDisplay* clone() const = 0; 00054 00055 virtual DtUnicode name() = 0; 00056 00061 virtual DtUnicode gridBoxLabel(const DtVector& lowerLeftGeocPos, 00062 const DtVector& upperRightGeocPos ); 00063 00064 // Deriving systems need to override one or the other of these, 00065 // depending on which type of position units they use. GridSpacing 00066 // is provided for autoPrecision implementations 00067 00069 virtual DtUnicode northSouthGridLabel( DistanceUnits unit, 00070 const DtVector& geocPos, int decimals, double gridSpacing ); 00071 00073 virtual DtUnicode northSouthGridLabel( OrientationUnits unit, 00074 const DtVector& geocPos, int decimals, double gridSpacing ); 00075 00077 virtual DtUnicode eastWestGridLabel( DistanceUnits unit, 00078 const DtVector& geocPos, int decimals, double gridSpacing ); 00079 00081 virtual DtUnicode eastWestGridLabel( OrientationUnits unit, 00082 const DtVector& geocPos, int decimals, double gridSpacing ); 00083 00087 virtual bool clipXToGrid( double inStartX, double inEndX, double constantY, 00088 double& clippedStartX, double& clippedEndX ); 00089 00091 virtual bool clipYToGrid( double inStartY, double inEndY, double constantX, 00092 double& clippedStartY, double& clippedEndY ); 00093 00096 virtual void shiftGridLineAnchors( double xSpacing, double ySpacing, 00097 double& shiftX, double& shifY ); 00098 00100 virtual bool usesDecimalsOnGridLines() const; 00101 00103 virtual double maxGridSpacing() const; 00104 00106 virtual double minGridSpacing() const; 00107 00108 virtual DistanceUnits xUnitsFor( DistanceUnits unit ) = 0; 00109 00110 virtual DistanceUnits yUnitsFor( DistanceUnits unit ) = 0; 00111 00112 virtual DistanceUnits zUnitsFor( DistanceUnits unit ) = 0; 00113 00114 virtual DtUnicode xAxisLabel() = 0; 00115 virtual DtUnicode yAxisLabel() = 0; 00116 virtual DtUnicode zAxisLabel() = 0; 00117 00121 virtual std::vector<std::string> convertPositionToStringList( 00122 DistanceUnits unit, const DtVector& geocPos, int decimals ) = 0; 00123 00127 virtual void convertToGeocentric( const std::string& x, 00128 const std::string& y, const std::string& z, DistanceUnits distUnits, 00129 DistanceUnits altUnits, DtVector& vector ) = 0; 00130 00133 virtual DtVector convertFromGeocentric( const DtVector& vector ) const = 0; 00134 00136 virtual DtTaitBryan headingPitchRollFor( const DtVector& geocPos, 00137 const DtTaitBryan& geocOri ) const = 0; 00138 00140 virtual DtTaitBryan localOrientationFor( const DtVector& location, 00141 const DtTaitBryan& geocOri ) const = 0; 00142 00146 virtual void regularExpressionValidator( std::string& x, std::string& y, 00147 std::string& z ) = 0; 00148 00149 virtual DtTaitBryan topoOrientationFor( const DtVector& geocPos, 00150 const DtTaitBryan& geocOri ) const; 00151 00152 virtual DtVector geocToLocalVector(const DtVector& geocLoc, 00153 const DtVector& geocVec ) const; 00154 00160 const SupportedPositionDistanceUnits& supportedPositionDistanceUnits() const; 00161 00163 bool isSupportedPositionUnit( DistanceUnits unit) const; 00164 00166 void addSupportedPositionUnit( DistanceUnits unitToSupport ); 00167 00169 void removeSupportedPositionUnit( DistanceUnits unitToRemove ); 00170 00175 const SupportedPositionAngularUnits& supportedPositionAngularUnits() const; 00176 00178 bool isSupportedPositionUnit( OrientationUnits unit) const; 00179 00181 void addSupportedPositionUnit( OrientationUnits unitToSupport ); 00182 00184 void removeSupportedPositionUnit( OrientationUnits unitToRemove ); 00185 00188 const SupportedCSForGridLines& supportedCSForGridLines() const; 00189 00192 bool isSupportedCSForGridLines( const std::string& cs ) const; 00193 00195 void addSupportedCSForGridLines( const std::string& cs ); 00196 00198 void removeSupportedCSForGridLines( const std::string& cs ); 00199 00200 protected: 00201 00202 const DtCoordinateSystem& myCoordinateSystem; 00203 SupportedPositionDistanceUnits mySupportedPositionDistanceUnits; 00204 SupportedPositionAngularUnits mySupportedPositionAngularUnits; 00205 SupportedCSForGridLines mySupportedCSForGridLines; 00206 00207 }; 00208 00209 }