VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
unitConversions.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2013 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 #pragma once
9 
11 #include "tdbutil/tdbUnits.h"
13 
14 #include <QtCore/QString>
15 #include <QtCore/QStringList>
16 #include <QtCore/QHash>
17 #include <QtCore/QList>
18 
19 static const char* DtUnitTimeDay = "day";
20 static const char* DtUnitPercent = "percent";
21 static const char* DtUnitRounds = "rounds";
22 static const char* DtUnitRatio = "ratio";
23 static const char* DtUnitMils = "mils";
24 
43 
44 class DtConverter;
45 
46 typedef DtConverter* (*DtConverterFcn)(bool);
47 
50 
52 {
53 
54 public:
55 
58  {
59  };
60 
62  virtual ~DtUnitConverter()
63  {
64  };
65 
68  {
69  };
70 
73  {
74  if (this == &rhs)
75  {
76  return *this;
77  }
78 
79  return *this;
80  };
81 
82  virtual bool init()
83  {
84  return true;
85  }
86 
88  virtual double metersToLocal(double meters) = 0;
89 
91  virtual double localToMeters(double local) = 0;
92 };
93 
95 
97 {
98 
99 public:
100 
103  {
104  };
105 
107  virtual ~DtMeterConverter() override {
108  };
109 
112  DtUnitConverter(orig)
113  {
114  };
115 
118  {
119  if (this == &rhs)
120  {
121  return *this;
122  }
123 
125 
126  return *this;
127  };
128 
130  virtual double metersToLocal(double meters) override;
131 
133  virtual double localToMeters(double local) override;
134 };
135 
137 {
138 
139 public:
140 
143  {
144  };
145 
147  virtual ~DtKilometerConverter() override {
148  };
149 
152  DtUnitConverter(orig)
153  {
154  };
155 
158  {
159  if (this == &rhs)
160  {
161  return *this;
162  }
163 
165 
166  return *this;
167  };
168 
170  virtual double metersToLocal(double meters) override;
171 
173  virtual double localToMeters(double local) override;
174 };
175 
177 {
178 
179 public:
180 
183  {
184  };
185 
187  virtual ~DtFeetConverter() override {
188  };
189 
192  DtUnitConverter(orig)
193  {
194  };
195 
198  {
199  if (this == &rhs)
200  {
201  return *this;
202  }
203 
205 
206  return *this;
207  };
208 
210  virtual double metersToLocal(double meters) override;
211 
213  virtual double localToMeters(double local) override;
214 };
215 
217 {
218 
219 public:
220 
223  {
224  };
225 
227  virtual ~DtMileConverter() override {
228  };
229 
232  DtUnitConverter(orig)
233  {
234  };
235 
238  {
239  if (this == &rhs)
240  {
241  return *this;
242  }
243 
245 
246  return *this;
247  };
248 
250  virtual double metersToLocal(double meters) override;
251 
253  virtual double localToMeters(double local) override;
254 };
255 
257 {
258 
259 public:
260 
263  {
264  };
265 
267  virtual ~DtNauticalMileConverter() override {
268  };
269 
272  DtUnitConverter(orig)
273  {
274  };
275 
278  {
279  if (this == &rhs)
280  {
281  return *this;
282  }
283 
285 
286  return *this;
287  };
288 
290  virtual double metersToLocal(double meters) override;
291 
293  virtual double localToMeters(double local) override;
294 };
295 
297 {
298 public:
299  DtConverterClass() : myFcn(0), myReverse(false) {};
300  DtConverterClass(DtConverterFcn fcn, bool reverse) :
301  myFcn(fcn), myReverse(reverse) {};
303  myFcn(orig.myFcn), myReverse(orig.myReverse) {};
304 
305  DtConverterFcn myFcn;
306  bool myReverse;
307 };
308 
310 {
311 public:
312  DtUnit();
313  DtUnit(const QString& m, const QString& t);
314  DtUnit(const DtUnit&);
315  DtUnit& operator=(const DtUnit&);
316 
317  virtual QString stringRep() const;
318 
319  bool operator==(const DtUnit& rhs) const { return ((myMeasurement == rhs.myMeasurement) && (myTime == rhs.myTime)); };
320  bool operator!=(const DtUnit& rhs) const { return !(*this == rhs); };
321 
322  const QString& measurement() const { return myMeasurement; };
323  const QString& time() const { return myTime; };
324 
325  bool isValid() const { return (myMeasurement.length() || myTime.length()); };
326 
327 public:
328  static QString measurementTitle(const DtUnit& u);
329  static void registerMeasurementTitle(const QString& m, const QString& t, const QString& v);
330 
333  static QString unitDisplayTitle(const QString& u);
334  static void registerUnitDisplayTitle(const QString& m, const QString& t);
335 
337  static QString unitForDisplayTitle(const QString&);
338 
339  static const QHash<QString, QString>& unitDisplayTitles();
340 
341 protected:
342  QString myMeasurement;
343  QString myTime;
344  static QHash<QString, QHash<QString, QString> > theMeasurementTitles;
345  static QHash<QString, QString> theUnitTitles;
346 };
347 
349 {
350 public:
351  DtConverter(bool reverse);
352 
353  virtual double convert(double, bool reverse = false) const { return 0; };
354 
355  bool reverse() const { return myReverse; };
356 
357 protected:
358  bool myReverse;
359 };
360 
362 {
363 public:
364  DtMetersToMiles(bool);
365  virtual double convert(double, bool reverse = false) const override;
366 
367  static DtConverter* create(bool);
368 };
369 
371 {
372 public:
373  DtLitersToGallons(bool);
374  virtual double convert(double, bool reverse = false) const override;
375 
376  static DtConverter* create(bool);
377 };
378 
380 {
381 public:
382  DtLitersToQuarts(bool);
383  virtual double convert(double, bool reverse = false) const override;
384 
385  static DtConverter* create(bool);
386 };
387 
389 {
390 public:
391  DtLitersToCubicMeters(bool);
392  virtual double convert(double, bool reverse = false) const override;
393 
394  static DtConverter* create(bool);
395 };
396 
398 {
399 public:
400  DtRatioToPercent(bool);
401  virtual double convert(double, bool reverse = false) const override;
402 
403  static DtConverter* create(bool);
404 };
405 
407 {
408 public:
409  DtMetersToFeet(bool);
410  virtual double convert(double, bool reverse = false) const override;
411  static DtConverter* create(bool);
412 };
413 
415 {
416 public:
417  DtMetersToKilometers(bool);
418  virtual double convert(double, bool reverse = false) const override;
419  static DtConverter* create(bool);
420 };
421 
423 {
424 public:
426  virtual double convert(double, bool reverse = false) const override;
427  static DtConverter* create(bool);
428 };
429 
431 {
432 public:
433  DtRadiansToDegrees(bool);
434  virtual double convert(double, bool reverse = false) const override;
435  static DtConverter* create(bool);
436 };
437 
439 {
440 public:
441  DtRadiansToMils(bool);
442  virtual double convert(double, bool reverse = false) const override;
443  static DtConverter* create(bool);
444 };
445 
447 {
448 public:
449  DtMinutesToHours(bool);
450  virtual double convert(double, bool reverse = false) const override;
451  static DtConverter* create(bool);
452 };
453 
455 {
456 public:
457  DtSecondsToMinutes(bool);
458  virtual double convert(double, bool reverse = false) const override;
459  static DtConverter* create(bool);
460 };
461 
463 {
464 public:
465  DtHoursToDays(bool);
466  virtual double convert(double, bool reverse = false) const override;
467  static DtConverter* create(bool);
468 };
469 
471 
473 {
474 public:
475  DtOneToOneConverter(bool);
476  virtual double convert(double, bool reverse = false) const override;
477  static DtConverter* create(bool);
478 };
479 
481 {
482 public:
484  {
486  DtConvertTime
487  };
488 
489 public:
491 
492  virtual ~DtUnitConverterFactory() override;
493 
494 public:
498  virtual void registerUnitConversion(const QString& from, const QString& to, DtConverterFcn fcn,
499  const QString& title = "", const QString& unitTitle = "", bool addTimeUnits = false);
500 
501 public:
502  static DtUnitConverterFactory& instance(makVrv::DtDe&);
503  static void registerInstance(makVrv::DtDe&, DtUnitConverterFactory*);
504 
505  virtual void registerConversion(const QString& from, const QString& to, DtConverterFcn);
506 
508  virtual bool init();
509 
510  virtual DtUnit parse(const QString&) const;
511  virtual bool canConvert(const DtUnit&, const DtUnit&) const;
512  virtual double convert(const DtUnit& from, const DtUnit& to, double val, bool& valid, bool reverse = false) const;
513  virtual double convert(DtConversionType, const DtUnit& from, const DtUnit& to, double val, bool& valid,
514  bool reverse = false) const;
515  virtual double convertReverse(const DtUnit& from, const DtUnit& to, double val, bool& valid) const;
516  virtual QList<DtConverter*> conversion(DtConversionType type, const DtUnit& from, const DtUnit& to) const;
517  virtual void findPath(DtConversionType type, const DtUnit& from, const DtUnit& to, const QHash<QString, DtConverterClass>&,
518  QList<DtConverter*>& path) const;
519 
522  virtual double convertSourceToDestination(double val, const QString& source, const QString& destination) const;
523 
525  virtual double convertDestinationToSource(double val, const QString& source, const QString& destination) const;
526 
527  virtual QString unitTitle(const QString& u) const;
528 
529 protected:
530  virtual void registerConverters();
531  virtual void registerConversion(const QString& from, const QString& to, DtConverterFcn, bool);
532 
533 protected:
534  QHash<QString, QHash<QString, DtConverterClass> > myConverters;
535  mutable QHash<QString, QList<DtConverter*> > myConversions;
537 };
DT_DLL_EXAMPLESCENEROOTPLUGIN void init(DtDe &anIG)
DtUnitConverter & operator=(const DtUnitConverter &rhs)
Assignment operator.
Definition: unitConversions.h:72
Converter that can be used for any units that are equivalent.
Definition: unitConversions.h:472
Definition: unitConversions.h:438
Definition: unitConversions.h:480
Definition: unitConversions.h:348
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
Definition: unitConversions.h:446
Definition: unitConversions.h:216
This class does nothing, but is provided for conviniece.
Definition: unitConversions.h:96
virtual ~DtKilometerConverter() override
Destructor.
Definition: unitConversions.h:147
DtUnitConverter(const DtUnitConverter &orig)
Copy Constructor.
Definition: unitConversions.h:67
virtual double localToMeters(double local)=0
Convert from local units to meters.
DtConverterClass(const DtConverterClass &orig)
Definition: unitConversions.h:302
DtFeetConverter()
Default constructor.
Definition: unitConversions.h:182
Definition: unitConversions.h:296
Definition: unitConversions.h:430
virtual double metersToLocal(double meters)=0
Convert from meters to local units.
DtMeterConverter(const DtMeterConverter &orig)
Copy Constructor.
Definition: unitConversions.h:111
bool reverse() const
Definition: unitConversions.h:355
DtMeterConverter & operator=(const DtMeterConverter &rhs)
Assignment operator.
Definition: unitConversions.h:117
DtConverterClass(DtConverterFcn fcn, bool reverse)
Definition: unitConversions.h:300
DtMileConverter()
Default constructor.
Definition: unitConversions.h:222
The DtUnitConverter and its subclasses are used to conver meters to other systems of mesurement...
Definition: unitConversions.h:51
Definition: unitConversions.h:256
DtFeetConverter(const DtFeetConverter &orig)
Copy Constructor.
Definition: unitConversions.h:191
Definition: unitConversions.h:454
DtFeetConverter & operator=(const DtFeetConverter &rhs)
Assignment operator.
Definition: unitConversions.h:197
DtConverterClass()
Definition: unitConversions.h:299
virtual ~DtUnitConverter()
Destructor.
Definition: unitConversions.h:62
Definition: unitConversions.h:309
const QString & time() const
Definition: unitConversions.h:323
DtMileConverter & operator=(const DtMileConverter &rhs)
Assignment operator.
Definition: unitConversions.h:237
DtNauticalMileConverter & operator=(const DtNauticalMileConverter &rhs)
Assignment operator.
Definition: unitConversions.h:277
bool operator==(const DtUnit &rhs) const
Definition: unitConversions.h:319
makVrv::DtDe & myDe
Definition: unitConversions.h:536
static const char * DtUnitRounds
Definition: unitConversions.h:21
static QHash< QString, QString > theUnitTitles
Definition: unitConversions.h:345
Definition: unitConversions.h:361
virtual ~DtMileConverter() override
Destructor.
Definition: unitConversions.h:227
Definition: unitConversions.h:406
static const char * DtUnitTimeDay
Defined in tdbutil${TTWINEXT} to share with back-end.
Definition: unitConversions.h:19
QString myTime
Definition: unitConversions.h:343
bool operator!=(const DtUnit &rhs) const
Definition: unitConversions.h:320
Definition: unitConversions.h:388
Contains makVrv::DtVirtualBaseClass class.
Definition: unitConversions.h:422
virtual bool init()
Definition: unitConversions.h:82
DtMileConverter(const DtMileConverter &orig)
Copy Constructor.
Definition: unitConversions.h:231
Definition: unitConversions.h:136
const QString & measurement() const
Definition: unitConversions.h:322
virtual ~DtNauticalMileConverter() override
Destructor.
Definition: unitConversions.h:267
DtMeterConverter()
Default constructor.
Definition: unitConversions.h:102
const char * source
Definition: lz4.h:442
QHash< QString, QHash< QString, DtConverterClass > > myConverters
Definition: unitConversions.h:534
DtUnitConverter()
Default constructor.
Definition: unitConversions.h:57
Definition: unitConversions.h:485
static const char * DtUnitPercent
Definition: unitConversions.h:20
Definition: unitConversions.h:397
DtConversionType
Definition: unitConversions.h:483
DtKilometerConverter(const DtKilometerConverter &orig)
Copy Constructor.
Definition: unitConversions.h:151
virtual ~DtMeterConverter() override
Destructor.
Definition: unitConversions.h:107
DtNauticalMileConverter(const DtNauticalMileConverter &orig)
Copy Constructor.
Definition: unitConversions.h:271
static const char * DtUnitRatio
Definition: unitConversions.h:22
bool isValid() const
Definition: unitConversions.h:325
virtual ~DtFeetConverter() override
Destructor.
Definition: unitConversions.h:187
Definition: translator.h:58
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
bool myReverse
Definition: unitConversions.h:306
static QHash< QString, QHash< QString, QString > > theMeasurementTitles
Definition: unitConversions.h:344
virtual double convert(double, bool reverse=false) const
Definition: unitConversions.h:353
DtConverter *(* DtConverterFcn)(bool)
Definition: unitConversions.h:46
QHash< QString, QList< DtConverter * > > myConversions
Definition: unitConversions.h:535
QString myMeasurement
Definition: unitConversions.h:342
Definition: unitConversions.h:176
Definition: unitConversions.h:414
Definition: unitConversions.h:462
DtNauticalMileConverter()
Default constructor.
Definition: unitConversions.h:262
Definition: unitConversions.h:379
static const char * DtUnitMils
Definition: unitConversions.h:23
Definition: unitConversions.h:370
DtKilometerConverter()
Default constructor.
Definition: unitConversions.h:142
DtKilometerConverter & operator=(const DtKilometerConverter &rhs)
Assignment operator.
Definition: unitConversions.h:157
#define DT_DLL_simulationObjectEditorimpl
This file is used to determine how to build.
Definition: simulationObjectEditorImplDefines.h:33

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)