VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtDisplayUnitsSettingsManager.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002  * Copyright (c) 2012 MAK Technologies, Inc.
00003  * All rights reserved.
00004  *****************************************************************************/
00005 
00009 
00010 #pragma once
00011 
00012 #include <vrvCore/vrvCore.h>
00013 
00014 #include <vrvUtil/DtVirtualBaseClass.h>
00015 #include <vrvUtil/DtBaseSettingsManager.h>
00016 #include <vrvUtil/DtSignalConnectionManager.h>
00017 
00018 #include <makArchives/DtDisplayUnitsSettingsRecord.h>
00019 
00020 #include <vrvCore/DtSharedDisplayUnitsSettings.h>
00021 #include <vrvCore/DtSettingsBackup.h>
00022 
00023 #include <matrix/vlTaitBryan.h>
00024 #include <matrix/vlVector.h>
00025 
00026 #include <boost/signals.hpp>
00027 
00028 namespace makVrv
00029 {
00030 
00031    class DtDe;
00032    class DtCoordinateDisplay;
00033    class DtDisplayUnitsSettingsSynchronizerAgent;
00034 
00068    class DT_DLL_VRVCORE DtDisplayUnitsConverter
00069    {
00070    public:
00071 
00072       typedef makArchives::DtDisplayUnitsSettingsRecord::CoordSys CoordSys;
00073       typedef makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits DistanceUnits;
00074       typedef makArchives::DtDisplayUnitsSettingsRecord::VelocityUnits VelocityUnits;
00075       typedef makArchives::DtDisplayUnitsSettingsRecord::AccelerationUnits AccelerationUnits;
00076       typedef makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits OrientationUnits;
00077       typedef makArchives::DtDisplayUnitsSettingsRecord::RotVelocityUnits RotVelocityUnits;
00078 
00079       DtDisplayUnitsConverter(const DtCoordinateSystem& cs, 
00080          DtSharedSettingsManager& sm);
00081 
00083       DtCoordinateDisplay* currentCoordinateDisplay();
00084 
00086       const DtCoordinateDisplay* currentCoordinateDisplay() const;
00087 
00090 
00091       CoordSys currentCoordinateDisplaySystem() const;
00092       DistanceUnits currentDistanceUnits() const;
00093       DistanceUnits currentAltitudeUnits() const;
00094       VelocityUnits currentVelocityUnits() const;
00095       OrientationUnits currentOrientationUnits() const;
00096       AccelerationUnits currentAccelerationUnits() const;
00097       RotVelocityUnits currentRotationalVelocityUnits() const;
00098 
00099       int currentCoordinateSystemDecimals() const;
00100       int currentDistanceUnitDecimals() const;
00101       int currentAltitudeUnitDecimals() const;
00102       int currentVelocityUnitDecimals() const;
00103       int currentOrientationUnitDecimals() const;
00104       int currentAccelerationUnitDecimals() const;
00105       int currentRotationalVelocityUnitDecimals() const;
00106 
00107       DtUnicode currentDistanceUnitNotation() const;
00108       DtUnicode currentAltitudeUnitNotation() const;
00109       DtUnicode currentVelocityUnitNotation() const;
00110       DtUnicode currentOrientationUnitNotation() const;
00111       DtUnicode currentAccelerationUnitNotation() const;
00112       DtUnicode currentRotationalVelocityUnitNotation() const;
00113 
00115 
00118 
00119       int coordinateSystemDecimals( CoordSys cs ) const;
00120       int distanceUnitDecimals( DistanceUnits distUnit ) const;
00121       int altitudeUnitDecimals( DistanceUnits altUnit ) const;
00122       int velocityUnitDecimals( VelocityUnits velocityUnit ) const;
00123       int orientationUnitDecimals( OrientationUnits oriUnit ) const;
00124       int accelerationUnitDecimals( AccelerationUnits accelUnit ) const;
00125       int rotationalVelocityUnitDecimals( RotVelocityUnits wUnit ) const;
00126 
00127       DtUnicode coordinateSystemNotation( CoordSys cs ) const;
00128       DtUnicode distanceUnitNotation( DistanceUnits distUnit ) const;
00129       DtUnicode altitudeUnitNotation( DistanceUnits altUnit ) const;
00130       DtUnicode velocityUnitNotation( VelocityUnits velocityUnit ) const;
00131       DtUnicode orientationUnitNotation( OrientationUnits oriUnit ) const;
00132       DtUnicode accelerationUnitNotation( AccelerationUnits accelUnit ) const;
00133       DtUnicode rotationalVelocityUnitNotation( RotVelocityUnits wUnit ) const;
00134 
00136 
00139 
00141       void coordinateSystemLabels(DtUnicode& x, DtUnicode& y, DtUnicode& z );
00142 
00144       void coordinateSystemLabels(
00145          CoordSys coordSystem,
00146          DtUnicode& x, DtUnicode& y, DtUnicode& z );
00147 
00149       void regularExpressionValidators( std::string& x,
00150          std::string& y, std::string& z );
00151 
00153       void regularExpressionValidators(
00154          CoordSys cs,
00155          std::string& x, std::string& y, std::string& z );
00156 
00160       std::vector<std::string> convertPositionToStringList( CoordSys coordSys,
00161          const DtVector& pos );
00162 
00166       std::vector<std::string> convertPositionToStringList( 
00167          const DtVector& pos ) const;
00168 
00170 
00173 
00175       double convertAngleUnitNativeToDisplay( double angle ) const;
00176 
00178       double convertAngleUnitDisplayToNative( double angle ) const;
00179 
00182       std::string convertAngleUnitNativeToDisplayString( double angle ) const;
00183 
00185 
00188       
00190       double convertDistanceUnitNativeToDisplay( double distance ) const;
00191 
00193       double convertDistanceUnitDisplayToNative( double distance ) const;
00194 
00197       std::string convertDistanceUnitNativeToDisplayString( double dist ) const;
00198 
00200 
00203 
00204 
00206       double convertAltitudeUnitNativeToDisplay( double altitude ) const;
00207 
00209       double convertAltitudeUnitDisplayToNative( double altitude ) const;
00210 
00213       std::string convertAltitudeUnitNativeToDisplayString( double altitude ) const;
00214 
00216 
00219 
00221       DtVector convertVelocityUnitNativeToDisplay( const DtVector& vel ) const;
00222 
00225       std::string convertVelocityUnitNativeToDisplayString( 
00226          const DtVector& vel ) const;
00227 
00230       DtVector convertVelocityUnitDisplayToNative( const DtVector& vel ) const;
00231 
00234       DtVector convertVelocitySystemAndUnitGeocentricToDisplay( 
00235          const DtVector& geocLoc, const DtVector& geocVel ) const;
00236 
00240       std::string convertVelocitySystemAndUnitGeocentricToDisplayString( 
00241          const DtVector& geocLoc, const DtVector& geocVel ) const;
00242 
00244 
00247 
00249       DtVector convertAccelerationUnitNativeToDisplay( 
00250          const DtVector& accel ) const;
00251 
00254       std::string convertAccelerationUnitNativeToDisplayString( 
00255          const DtVector& accel ) const;
00256 
00259       DtVector convertAccelerationUnitDisplayToNative( 
00260          const DtVector& accel ) const;
00261 
00263       DtVector convertAccelerationSystemAndUnitGeocentricToDisplay( 
00264          const DtVector& geocLoc, const DtVector& accel ) const;
00265 
00268       std::string convertAccelerationSystemAndUnitGeocentricToDisplayString( 
00269          const DtVector& geocLoc, const DtVector& accel ) const;
00270 
00272 
00275 
00277       DtTaitBryan convertOrientationUnitNativeToDisplay( 
00278          const DtTaitBryan& ori ) const;
00279 
00282       std::vector<std::string> convertOrientationUnitNativeToDisplayStrings( 
00283          const DtTaitBryan& ori ) const;
00284 
00286       DtTaitBryan convertOrientationUnitDisplayToNative( 
00287          const DtTaitBryan& ori ) const;
00288 
00290 
00293 
00295       DtVector convertRotationalVelocityUnitNativeToDisplay( 
00296          const DtVector& rotVel ) const;
00297 
00299       std::string convertRotationalVelocityUnitNativeToDisplayString( 
00300          const DtVector& rotVel ) const;
00301 
00303       DtVector convertRotationalVelocityUnitDisplayToNative( 
00304          const DtVector& rotVel ) const;
00305 
00307       DtVector convertRotationalVelocitySystemAndUnitGeocentricToDisplay( 
00308          const DtVector& rotVel ) const;
00309 
00312       std::string
00313          convertRotationalVelocitySystemAndUnitGeocentricToDisplayString( 
00314          const DtVector& rotVel ) const;
00315 
00317 
00318 
00321 
00323       double convertSpeedUnitNativeToDisplay( const DtVector& velocity ) const;
00324 
00326       double convertSpeedUnitNativeToDisplay( double speed) const;
00327 
00330       std::string convertSpeedUnitNativeToDisplayString(
00331          const DtVector& velocity) const;
00332 
00335       std::string convertSpeedUnitNativeToDisplayString(double speed) const;
00336 
00338       double convertSpeedUnitDisplayToNative( double speed) const;
00339 
00341       double convertSpeedSystemAndUnitGeocentricToDisplay( 
00342          const DtVector& geocLoc, const DtVector& velocity ) const;
00343 
00346       std::string convertSpeedSystemAndUnitGeocentricToDisplayString( 
00347          const DtVector& geocLoc, const DtVector& velocity ) const;
00348 
00350 
00353 
00356       double convertAccelerationMagnitudeUnitNativeToDisplay(
00357          const DtVector& accel ) const;
00358 
00361       double convertAccelerationMagnitudeUnitNativeToDisplay( 
00362          double accel ) const;
00363 
00366       std::string convertAccelerationMagnitudeUnitNativeToDisplayString( 
00367          const DtVector& accel ) const;
00368 
00371       std::string convertAccelerationMagnitudeUnitNativeToDisplayString( 
00372          double accel ) const;
00373 
00375       double convertAccelerationMagnitudeUnitDisplayToNative( double acc) const;
00376 
00379       double convertAccelerationMagnitudeSystemAndUnitGeocentricToDisplay(
00380          const DtVector& geocLoc, const DtVector& accel ) const;
00381 
00384       std::string
00385          convertAccelerationMagnitudeSystemAndUnitGeocentricToDisplayString(
00386          const DtVector& geocLoc, const DtVector& accel ) const;
00388 
00389 
00391 
00394 
00396       DtTaitBryan convertHeadingPitchRollSystemAndUnitGeocentricToDisplay( 
00397          const DtVector& geocLoc, const DtTaitBryan& geocOri ) const;
00398 
00401       std::vector<std::string> 
00402          convertHeadingPitchRollSystemAndUnitGeocentricToDisplayStrings(
00403          const DtVector& geocLoc, const DtTaitBryan& geocOri ) const;
00404 
00406 
00407    protected:
00408 
00410       static std::string valueToText( double value, int decimals );
00411 
00414       static std::string valuesToText( const DtVector& localVelocity, int decimals );
00415 
00416    protected:
00417 
00418       const DtCoordinateSystem& myCoordinateSystem;
00419       DtSharedSettingsManager& mySharedSettingsManager;
00420 
00421    };
00422 
00423 
00426    class DT_DLL_VRVCORE DtDisplayUnitsSettingsManager
00427       : public DtBaseSharedSettingsManager<makArchives::DtDisplayUnitsSettingsRecord,
00428          DtSharedDisplayUnitsSettings>
00429    {
00430    public:
00431 
00433       static DtDisplayUnitsSettingsManager& instance( DtDe& de );
00434 
00436       virtual ~DtDisplayUnitsSettingsManager();
00437 
00440 
00441       void setCoordinateSystem( DtDisplayUnitsConverter::CoordSys cs );
00442       void setDistanceUnits( DtDisplayUnitsConverter::DistanceUnits distUnits );
00443       void setAltitudeUnits( DtDisplayUnitsConverter::DistanceUnits altUnits );
00444       void setVelocityUnits( DtDisplayUnitsConverter::VelocityUnits velocityUnits );
00445       void setOrientationUnits( DtDisplayUnitsConverter::OrientationUnits oriUnits );
00446       void setAccelerationUnits( DtDisplayUnitsConverter::AccelerationUnits accelUnits );
00447       void setRotationalVelocityUnits( DtDisplayUnitsConverter::RotVelocityUnits wUnits );
00448 
00449       void setCoordinateSystemDecimals( DtDisplayUnitsConverter::CoordSys cs, int decimals );
00450       void setDistanceUnitDecimals( DtDisplayUnitsConverter::DistanceUnits distUnit, int decimals );
00451       void setAltitudeUnitDecimals( DtDisplayUnitsConverter::DistanceUnits altUnit, int decimals );
00452       void setVelocityUnitDecimals( DtDisplayUnitsConverter::VelocityUnits velocityUnit, int decimals );
00453       void setOrientationUnitDecimals( DtDisplayUnitsConverter::OrientationUnits oriUnit, int decimals );
00454       void setAccelerationUnitDecimals( DtDisplayUnitsConverter::AccelerationUnits accelUnit, int decimals );
00455       void setRotationalVelocityUnitDecimals( DtDisplayUnitsConverter::RotVelocityUnits wUnit, int decimals );
00456 
00458 
00461 
00464       virtual void setFromRecord( const makArchives::DtDisplayUnitsSettingsRecord& rec );
00465 
00467 
00469       DtDisplayUnitsConverter& converter();
00470 
00471    protected:
00472 
00474       template <typename ManagerClass>
00475       friend ManagerClass& defaultManagerInstanceFunction( DtDe&, bool );
00476 
00478       template <typename ManagerClass>
00479       friend void defaultManagerRegisterInstanceFunction( DtDe&, ManagerClass* );
00480 
00482       DtDisplayUnitsSettingsManager( DtDe& de );
00483 
00490       virtual void slot_initializeSynchronizer();
00491 
00496       virtual void slot_displayEngineAdded( const DtDeRecord& deRec );
00497 
00498    protected:
00499 
00500       DtDisplayUnitsConverter* myDisplayUnitsConverter;
00501 
00502       DtDisplayUnitsSettingsSynchronizerAgent* mySettingsSynchronizer;
00503 
00504    };
00505 
00506 }

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)