VR-Forces 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) 2023 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>
22 
23 #include <vector>
24 #include <unordered_map>
25 
26 namespace makVrv
27 {
28 
29  class DtCoordinateSystem;
31 
34 
165  {
166  public:
167 
168  friend class DisplayAttributes;
169 
179 
181  struct UnitEntry
182  {
183  DtUnicode myUnitName; // The display name for this unit of measurement
184  DtUnicode myNotation; // The notation for this unit of measurement
185  unsigned int myEnumerationValue;
186 
187  UnitEntry( DtUnicode name, DtUnicode notation, unsigned int enumValue )
188  : myUnitName( name )
189  , myNotation( notation )
190  , myEnumerationValue( enumValue )
191  {
192  // intentional noop
193  }
194  };
195 
197 
199  typedef std::vector<UnitEntry> Units;
200 
205  typedef std::unordered_map<makArchives::DtDisplayUnitsSettingsRecord::DisplayUnitType, Units> UnitMap;
206 
208  typedef std::map<std::string, DisplayAttributes> DisplayUnitMap;
209 
211  typedef std::unordered_map<std::string, DisplayUnitMap> DisplayUnitCollectionMap;
212 
225 
247 
248  public:
250  virtual ~DtSharedDisplayUnitsSettings();
251 
254 
263  void setUnitAttributes(
265  const Units& data);
266 
271  bool getUnitAttributes(
273  Units& value) const;
274 
276  const DisplayUnitCollectionMap& displayUnitCollectionMap() const;
277 
279  DisplayUnitCollectionMap& displayUnitCollectionMap();
280 
285  void setDisplayUnitAttributes(
286  const DtUnicode& displayUnitCollectionName,
287  const DtUnicode& displayUnitName,
288  const DisplayAttributes& data );
289 
295  bool getDisplayUnitAttributes(
296  const DtUnicode& displayUnitCollectionName,
297  const DtUnicode& displayUnitName,
298  DisplayAttributes& value ) const;
299 
304  DisplayAttributes* findDisplayUnitAttributes(
305  const DtUnicode& displayUnitCollectionName,
306  const DtUnicode& displayUnitName );
307 
312  const DisplayAttributes* findDisplayUnitAttributes(
313  const DtUnicode& displayUnitCollectionName,
314  const DtUnicode& displayUnitName ) const;
315 
319  void setSuppressMagneticNorthNotationEnabled(bool isEnabled);
320 
323  bool isSuppressMagneticNorthNotationEnabled() const;
324 
326 
329 
334  void setCoordinateSystem( CoordSys cs );
335 
337 
340 
351  void setDisplayUnitUnit(
352  const DtUnicode& displayUnitCollectionName,
353  const DtUnicode& displayUnitName,
354  unsigned int unitEnumerationValue
355  );
356 
361  void setDisplayUnitDecimals(
362  const DtUnicode& displayUnitCollectionName,
363  const DtUnicode& displayUnitName,
364  unsigned int decimals
365  );
366 
376  unsigned int displayUnitUnit(
377  const DtUnicode& displayUnitCollectionName,
378  const DtUnicode& displayUnitName) const;
379 
385  unsigned int displayUnitDecimals(
386  const DtUnicode& displayUnitCollectionName,
387  const DtUnicode& displayUnitName) const;
388 
394  DtUnicode displayUnitNotation(
395  const DtUnicode& displayUnitCollectionName,
396  const DtUnicode& displayUnitName) const;
397 
399 
402  DtUnicode coordinateSystemNotation(CoordSys cs) const;
403  DtUnicode distanceUnitNotation(DistanceUnits distUnit) const;
404  DtUnicode velocityUnitNotation(VelocityUnits velocityUnit) const;
405  DtUnicode orientationUnitNotation(OrientationUnits oriUnit) const;
406  DtUnicode accelerationUnitNotation(AccelerationUnits accelUnit) const;
407  DtUnicode rotationalVelocityUnitNotation(RotVelocityUnits wUnit) const;
408  DtUnicode temperatureUnitNotation(TemperatureUnits tempUnit) const;
409  DtUnicode pressureUnitNotation(PressureUnits pressureUnit) const;
410  DtUnicode northUnitNotation(NorthUnits northUnit) const;
412 
415 
416  CoordSys currentCoordinateSystem() const;
417  int currentCoordinateSystemDecimals() const;
418  DtUnicode currentCoordinateSystemNotation() const;
419 
421 
430  void coordinateSystemLabels( const DtCoordinateSystem& displayCS,
431  DtUnicode& x, DtUnicode& y, DtUnicode& z ) const;
432 
442  void coordinateSystemLabels( const DtCoordinateSystem& displayCS,
443  CoordSys coordSys,
444  DtUnicode& x, DtUnicode& y, DtUnicode& z ) const;
445 
446  DtUnicode xyUnitNotation(
447  const DtCoordinateSystem& displayCS ) const;
448 
449  DtUnicode xyUnitNotation( const DtCoordinateSystem& displayCS,
450  CoordSys coordSys ) const;
451 
452  DtUnicode zUnitNotation(
453  const DtCoordinateSystem& displayCS ) const;
454 
455  DtUnicode zUnitNotation( const DtCoordinateSystem& displayCS,
456  CoordSys coordSys ) const;
457 
460 
462  void setFromRecord( const makArchives::DtDisplayUnitsSettingsRecord& rec );
463 
465  void getRecord( makArchives::DtDisplayUnitsSettingsRecord& rec ) const;
466 
468  virtual const DtDisplayUnitsSettingsBackup* settingsBackup() const;
469 
471  virtual DtDisplayUnitsSettingsBackup* settingsBackup();
472 
474  virtual void backup();
475 
477 
478  protected:
479 
484  friend class DtBaseSharedSettingsManager<makArchives::DtDisplayUnitsSettingsRecord, DtSharedDisplayUnitsSettings>;
485 
488  DtSharedDisplayUnitsSettings( DtSharedSettingsManager& manager );
489 
494  bool applyFactoryOverrides(
495  makArchives::DtDisplayUnitsSettingsRecord& rec) const;
496 
498  CoordSys currentCoordSysIndex() const;
499 
501  int currentCoordSysDecimals() const;
502 
503  std::string valueToText( double value, int decimals ) const;
504 
505  static const std::string& className();
506 
510  void initEntries();
511 
512  protected:
513 
514  UnitMap myUnits;
515  DisplayUnitCollectionMap myDisplayUnits;
516 
517  bool mySuppressMagneticNorthNotationEnabled;
518 
519  DtDisplayUnitsSettingsBackup* mySettingsBackup;
520 
521  };
522 
523 }
Base class for shared settings managers. Extends the functionality provided by the DtCommonBaseSettin...
Definition: DtBaseSettingsManager.h:372
VelocityUnits
Enumeration of the different velocity units.
Definition: DtDisplayUnitsSettingsRecord.h:73
a read settings lock on a setting object. The object can only get read access aka const functions...
Definition: DtReadSettingsLock.h:48
Attributes for a &#39;Unit&#39; of measurement, e.g. Meters or Minutes.
Definition: DtSharedDisplayUnitsSettings.h:181
DtSharedRecordSettingsBackup< DtSharedDisplayUnitsSettings, makArchives::DtDisplayUnitsSettingsRecord > DtDisplayUnitsSettingsBackup
Definition: DtSharedDisplayUnitsSettings.h:30
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:246
makArchives::DtDisplayUnitsSettingsRecord::RotVelocityUnits RotVelocityUnits
Definition: DtSharedDisplayUnitsSettings.h:175
makArchives::DtDisplayUnitsSettingsRecord::CoordSys CoordSys
Definition: DtSharedDisplayUnitsSettings.h:170
UnitEntry(DtUnicode name, DtUnicode notation, unsigned int enumValue)
Definition: DtSharedDisplayUnitsSettings.h:187
static const DtUnicode theAccelerationDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:232
static const DtUnicode theTemperatureDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:239
std::vector< UnitEntry > Units
A vector of unit names and unit notations.
Definition: DtSharedDisplayUnitsSettings.h:199
static const DtUnicode theSmallDistanceDisplayUnitName
The DtUnicode names used for the display units.
Definition: DtSharedDisplayUnitsSettings.h:227
static const DtUnicode theDefaultDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:216
static const DtUnicode theLifeFormDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:220
static const DtUnicode theWeatherDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:215
static const DtUnicode theAltitudeDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:229
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:205
NorthUnits
Enumeration of the different north units.
Definition: DtDisplayUnitsSettingsRecord.h:151
static const DtUnicode theSensorViewCoordinateSystemDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:236
static const DtUnicode theSpeedDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:230
static const DtUnicode theVisibilityDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:237
Contains the DtUnitConverterCollection class declaration.
makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits OrientationUnits
Definition: DtSharedDisplayUnitsSettings.h:174
unsigned int myEnumerationValue
Definition: DtSharedDisplayUnitsSettings.h:185
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:211
makArchives::DtDisplayUnitsSettingsRecord::AccelerationUnits AccelerationUnits
Definition: DtSharedDisplayUnitsSettings.h:173
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:208
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:138
DistanceUnits
Enumeration of the different distance units.
Definition: DtDisplayUnitsSettingsRecord.h:57
makArchives::DtDisplayUnitsSettingsRecord::PressureUnits PressureUnits
Definition: DtSharedDisplayUnitsSettings.h:177
RotVelocityUnits
Enumeration of the different rotational velocity units.
Definition: DtDisplayUnitsSettingsRecord.h:113
static const DtUnicode theHeadingDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:234
static const DtUnicode theRotationalVelocityDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:231
static const DtUnicode theFixedWingDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:218
static const DtUnicode theOrientationDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:233
static const DtUnicode theDirectionDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:243
Attributes for a &#39;Display Unit&#39;.
Definition: DtDisplayUnitsSettingsRecord.h:180
static const DtUnicode theRotaryWingDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:219
static const DtUnicode theDistanceDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:228
static const DtUnicode theApplicationDisplayUnitCollectionName
The DtUnicode names used for the display unit collections.
Definition: DtSharedDisplayUnitsSettings.h:214
makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits DistanceUnits
Definition: DtSharedDisplayUnitsSettings.h:171
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
static const DtUnicode theCoordinateSystemDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:235
Contains the DtSharedSettings class declaration.
static const DtUnicode theWindSpeedDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:242
DtUnicode myNotation
Definition: DtSharedDisplayUnitsSettings.h:184
static const DtUnicode theSpaceDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:224
a write settings lock on a setting object. The object can be read and modified, but no other threads ...
Definition: DtWriteSettingsLock.h:47
static const DtUnicode theBearingMeasurementDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:245
makArchives::DtDisplayUnitsSettingsRecord::NorthUnits NorthUnits
Definition: DtSharedDisplayUnitsSettings.h:178
static const DtUnicode theRangeMeasurementDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:244
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:102
DisplayUnitType
Enumeration of the different display unit types.
Definition: DtDisplayUnitsSettingsRecord.h:162
TemperatureUnits
Enumeration of the different temperature units.
Definition: DtDisplayUnitsSettingsRecord.h:127
DtUnicode myUnitName
Definition: DtSharedDisplayUnitsSettings.h:183
makArchives::DtDisplayUnitsSettingsRecord::VelocityUnits VelocityUnits
Definition: DtSharedDisplayUnitsSettings.h:172
static const DtUnicode theSurfaceDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:222
makArchives::DtDisplayUnitsSettingsRecord::DisplayUnitAttributes DisplayAttributes
Definition: DtSharedDisplayUnitsSettings.h:196
Contains the DtDisplayUnitsSettingsRecord class declaration.
This class will maintain information about the units, display units, and coordinate systems used in V...
Definition: DtSharedDisplayUnitsSettings.h:164
static const DtUnicode thePressureDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:238
static const DtUnicode theGroundDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:221
static const DtUnicode thePrecipitationDepthDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:240
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:89
static const DtUnicode thePrecipitationRateDisplayUnitName
Definition: DtSharedDisplayUnitsSettings.h:241
static const DtUnicode theMunitionDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:217
makArchives::DtDisplayUnitsSettingsRecord::TemperatureUnits TemperatureUnits
Definition: DtSharedDisplayUnitsSettings.h:176
static const DtUnicode theSubsurfaceDisplayUnitCollectionName
Definition: DtSharedDisplayUnitsSettings.h:223
Contains the display units shared settings.
Definition: DtDisplayUnitsSettingsRecord.h:25
Contains the DtBaseSettingsManager class declaration.
Contains DLL export macros.

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)