VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtSharedDisplayUnitsSettings.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright (c) 2022 MAK Technologies, Inc.
3  * All rights reserved.
4  ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 
16 
18 
20 #include <vrvUtil/DtUnicode.h>
21 
22 #include <vector>
23 #include <unordered_map>
24 
25 namespace makVrv
26 {
27 
28  class DtCoordinateSystem;
30 
33 
164  {
165  public:
166 
167  friend class DisplayAttributes;
168 
178 
180  struct UnitEntry
181  {
182  DtUnicode myUnitName; // The display name for this unit of measurement
183  DtUnicode myNotation; // The notation for this unit of measurement
184  unsigned int myEnumerationValue;
185 
186  UnitEntry( DtUnicode name, DtUnicode notation, unsigned int enumValue )
187  : myUnitName( name )
188  , myNotation( notation )
189  , myEnumerationValue( enumValue )
190  {
191  // intentional noop
192  }
193  };
194 
196 
198  typedef std::vector<UnitEntry> Units;
199 
204  typedef std::unordered_map<makArchives::DtDisplayUnitsSettingsRecord::DisplayUnitType, Units> UnitMap;
205 
207  typedef std::map<std::string, DisplayAttributes> DisplayUnitMap;
208 
210  typedef std::unordered_map<std::string, DisplayUnitMap> DisplayUnitCollectionMap;
211 
223 
244 
245  public:
247  virtual ~DtSharedDisplayUnitsSettings();
248 
251 
260  void setUnitAttributes(
262  const Units& data);
263 
268  bool getUnitAttributes(
270  Units& value) const;
271 
273  const DisplayUnitCollectionMap& displayUnitCollectionMap() const;
274 
276  DisplayUnitCollectionMap& displayUnitCollectionMap();
277 
282  void setDisplayUnitAttributes(
283  const DtUnicode& displayUnitCollectionName,
284  const DtUnicode& displayUnitName,
285  const DisplayAttributes& data );
286 
292  bool getDisplayUnitAttributes(
293  const DtUnicode& displayUnitCollectionName,
294  const DtUnicode& displayUnitName,
295  DisplayAttributes& value ) const;
296 
301  DisplayAttributes* findDisplayUnitAttributes(
302  const DtUnicode& displayUnitCollectionName,
303  const DtUnicode& displayUnitName );
304 
309  const DisplayAttributes* findDisplayUnitAttributes(
310  const DtUnicode& displayUnitCollectionName,
311  const DtUnicode& displayUnitName ) const;
312 
316  void setSuppressMagneticNorthNotationEnabled(bool isEnabled);
317 
320  bool isSuppressMagneticNorthNotationEnabled() const;
321 
323 
326 
331  void setCoordinateSystem( CoordSys cs );
332 
334 
337 
348  void setDisplayUnitUnit(
349  const DtUnicode& displayUnitCollectionName,
350  const DtUnicode& displayUnitName,
351  unsigned int unitEnumerationValue
352  );
353 
358  void setDisplayUnitDecimals(
359  const DtUnicode& displayUnitCollectionName,
360  const DtUnicode& displayUnitName,
361  unsigned int decimals
362  );
363 
373  unsigned int displayUnitUnit(
374  const DtUnicode& displayUnitCollectionName,
375  const DtUnicode& displayUnitName) const;
376 
382  unsigned int displayUnitDecimals(
383  const DtUnicode& displayUnitCollectionName,
384  const DtUnicode& displayUnitName) const;
385 
391  DtUnicode displayUnitNotation(
392  const DtUnicode& displayUnitCollectionName,
393  const DtUnicode& displayUnitName) const;
394 
396 
399  DtUnicode coordinateSystemNotation(CoordSys cs) const;
400  DtUnicode distanceUnitNotation(DistanceUnits distUnit) const;
401  DtUnicode velocityUnitNotation(VelocityUnits velocityUnit) const;
402  DtUnicode orientationUnitNotation(OrientationUnits oriUnit) const;
403  DtUnicode accelerationUnitNotation(AccelerationUnits accelUnit) const;
404  DtUnicode rotationalVelocityUnitNotation(RotVelocityUnits wUnit) const;
405  DtUnicode temperatureUnitNotation(TemperatureUnits tempUnit) const;
406  DtUnicode pressureUnitNotation(PressureUnits pressureUnit) const;
407  DtUnicode northUnitNotation(NorthUnits northUnit) const;
409 
412 
413  CoordSys currentCoordinateSystem() const;
414  int currentCoordinateSystemDecimals() const;
415  DtUnicode currentCoordinateSystemNotation() const;
416 
418 
427  void coordinateSystemLabels( const DtCoordinateSystem& displayCS,
428  DtUnicode& x, DtUnicode& y, DtUnicode& z ) const;
429 
439  void coordinateSystemLabels( const DtCoordinateSystem& displayCS,
440  CoordSys coordSys,
441  DtUnicode& x, DtUnicode& y, DtUnicode& z ) const;
442 
443  DtUnicode xyUnitNotation(
444  const DtCoordinateSystem& displayCS ) const;
445 
446  DtUnicode xyUnitNotation( const DtCoordinateSystem& displayCS,
447  CoordSys coordSys ) const;
448 
449  DtUnicode zUnitNotation(
450  const DtCoordinateSystem& displayCS ) const;
451 
452  DtUnicode zUnitNotation( const DtCoordinateSystem& displayCS,
453  CoordSys coordSys ) const;
454 
457 
459  void setFromRecord( const makArchives::DtDisplayUnitsSettingsRecord& rec );
460 
462  void getRecord( makArchives::DtDisplayUnitsSettingsRecord& rec ) const;
463 
465  virtual const DtDisplayUnitsSettingsBackup* settingsBackup() const;
466 
468  virtual DtDisplayUnitsSettingsBackup* settingsBackup();
469 
471  virtual void backup();
472 
474 
475  protected:
476 
481 
485 
487  CoordSys currentCoordSysIndex() const;
488 
490  int currentCoordSysDecimals() const;
491 
492  std::string valueToText( double value, int decimals ) const;
493 
494  static const std::string& className();
495 
499  void initEntries();
500 
501  protected:
502 
505 
507 
509 
510  };
511 
512 }
VelocityUnits
Enumeration of the different velocity units.
Definition: DtDisplayUnitsSettingsRecord.h:72
a read settings lock on a setting object. The object can only get read access aka const functions...
Definition: DtReadSettingsLock.h:48
bool mySurpressMagneticNorthNotationEnabled
Definition: DtSharedDisplayUnitsSettings.h:506
Attributes for a &#39;Unit&#39; of measurement, e.g. Meters or Minutes.
Definition: DtSharedDisplayUnitsSettings.h:180
DtSharedRecordSettingsBackup< DtSharedDisplayUnitsSettings, makArchives::DtDisplayUnitsSettingsRecord > DtDisplayUnitsSettingsBackup
Definition: DtSharedDisplayUnitsSettings.h:29
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
static const DtUnicode the3DCompassDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:243
makArchives::DtDisplayUnitsSettingsRecord::RotVelocityUnits RotVelocityUnits
Definition: DtSharedDisplayUnitsSettings.h:174
makArchives::DtDisplayUnitsSettingsRecord::CoordSys CoordSys
Definition: DtSharedDisplayUnitsSettings.h:169
UnitEntry(DtUnicode name, DtUnicode notation, unsigned int enumValue)
Definition: DtSharedDisplayUnitsSettings.h:186
UnitMap myUnits
Definition: DtSharedDisplayUnitsSettings.h:503
static const DtUnicode theAccelerationDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:230
static const DtUnicode theTemperatureDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:237
std::vector< UnitEntry > Units
A vector of unit names and unit notations.
Definition: DtSharedDisplayUnitsSettings.h:198
static const DtUnicode theSmallDistanceDisplayUnitName
The DtUnicode names used for the display units.
Definition: DtSharedDisplayUnitsSettings.h:225
static const DtUnicode theDefaultDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:215
static const DtUnicode theRangeBearingLinesDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:242
static const DtUnicode theLifeFormDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:218
static const DtUnicode theWeatherDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:214
static const DtUnicode theAltitudeDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:227
std::unordered_map< makArchives::DtDisplayUnitsSettingsRecord::DisplayUnitType, Units > UnitMap
A mapping of display unit types to the unit of measurements that can measure that display unit type...
Definition: DtSharedDisplayUnitsSettings.h:204
NorthUnits
Enumeration of the different north units.
Definition: DtDisplayUnitsSettingsRecord.h:150
static const DtUnicode theSensorViewCoordinateSystemDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:234
static const DtUnicode theSpeedDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:228
static const DtUnicode theVisibilityDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:235
Contains the DtUnitConverterCollection class declaration.
The shared settings manager, is the global object responsible for managing any shared settings object...
Definition: DtSharedSettingsManager.h:42
makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits OrientationUnits
Definition: DtSharedDisplayUnitsSettings.h:173
unsigned int myEnumerationValue
Definition: DtSharedDisplayUnitsSettings.h:184
CoordSys
Enumeration of the different coordinate system types.
Definition: DtDisplayUnitsSettingsRecord.h:30
std::unordered_map< std::string, DisplayUnitMap > DisplayUnitCollectionMap
A mapping of a display unit collection&#39;s name to the collection of display units. ...
Definition: DtSharedDisplayUnitsSettings.h:210
makArchives::DtDisplayUnitsSettingsRecord::AccelerationUnits AccelerationUnits
Definition: DtSharedDisplayUnitsSettings.h:172
std::map< std::string, DisplayAttributes > DisplayUnitMap
A mapping of a display unit&#39;s name to the attributes for that display unit.
Definition: DtSharedDisplayUnitsSettings.h:207
The base class for all shared settings. Actual settings class should have the following members/decla...
Definition: DtSharedSettings.h:45
PressureUnits
Enumeration of the different pressure units.
Definition: DtDisplayUnitsSettingsRecord.h:137
DistanceUnits
Enumeration of the different distance units.
Definition: DtDisplayUnitsSettingsRecord.h:56
makArchives::DtDisplayUnitsSettingsRecord::PressureUnits PressureUnits
Definition: DtSharedDisplayUnitsSettings.h:176
RotVelocityUnits
Enumeration of the different rotational velocity units.
Definition: DtDisplayUnitsSettingsRecord.h:112
static const DtUnicode theHeadingDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:232
static const DtUnicode theRotationalVelocityDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:229
static const DtUnicode theFixedWingDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:216
static const DtUnicode theOrientationDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:231
static const DtUnicode theDirectionDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:241
DisplayUnitCollectionMap myDisplayUnits
Definition: DtSharedDisplayUnitsSettings.h:504
Attributes for a &#39;Display Unit&#39;.
Definition: DtDisplayUnitsSettingsRecord.h:179
static const DtUnicode theRotaryWingDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:217
static const DtUnicode theDistanceDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:226
static const DtUnicode theApplicationDisplayUnitCollectionName
The DtUnicode names used for the display unit collections.
Definition: DtSharedDisplayUnitsSettings.h:213
makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits DistanceUnits
Definition: DtSharedDisplayUnitsSettings.h:170
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
static const DtUnicode theCoordinateSystemDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:233
Contains the DtSharedSettings class declaration.
static const DtUnicode theWindSpeedDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:240
DtUnicode myNotation
Definition: DtSharedDisplayUnitsSettings.h:183
static const DtUnicode theSpaceDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:222
a write settings lock on a setting object. The object can be read and modified, but no other threads ...
Definition: DtWriteSettingsLock.h:47
makArchives::DtDisplayUnitsSettingsRecord::NorthUnits NorthUnits
Definition: DtSharedDisplayUnitsSettings.h:177
The DtCoordinateSystem is used to manage the current coordinate system of the scene.
Definition: DtCoordinateSystem.h:40
OrientationUnits
Enumeration of the different orientation units.
Definition: DtDisplayUnitsSettingsRecord.h:101
DtDisplayUnitsSettingsBackup * mySettingsBackup
Definition: DtSharedDisplayUnitsSettings.h:508
DisplayUnitType
Enumeration of the different display unit types.
Definition: DtDisplayUnitsSettingsRecord.h:161
TemperatureUnits
Enumeration of the different temperature units.
Definition: DtDisplayUnitsSettingsRecord.h:126
DtUnicode myUnitName
Definition: DtSharedDisplayUnitsSettings.h:182
makArchives::DtDisplayUnitsSettingsRecord::VelocityUnits VelocityUnits
Definition: DtSharedDisplayUnitsSettings.h:171
static const DtUnicode theSurfaceDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:220
makArchives::DtDisplayUnitsSettingsRecord::DisplayUnitAttributes DisplayAttributes
Definition: DtSharedDisplayUnitsSettings.h:195
Contains the DtDisplayUnitsSettingsRecord class declaration.
This class will maintain information about the units, display units, and coordinate systems used in V...
Definition: DtSharedDisplayUnitsSettings.h:163
static const DtUnicode thePressureDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:236
static const DtUnicode theGroundDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:219
static const DtUnicode thePrecipitationDepthDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:238
The makVrv::DtSharedRecordSettingsBackup is a templaced class that settings records will use in order...
Definition: DtRecordSettingsBackup.h:197
AccelerationUnits
Enumeration of the different acceleration units.
Definition: DtDisplayUnitsSettingsRecord.h:88
static const DtUnicode thePrecipitationRateDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:239
makArchives::DtDisplayUnitsSettingsRecord::TemperatureUnits TemperatureUnits
Definition: DtSharedDisplayUnitsSettings.h:175
static const DtUnicode theSubsurfaceDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:221
Contains the display units shared settings.
Definition: DtDisplayUnitsSettingsRecord.h:25
Contains DLL export macros.

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)