11 #include "tdbutil/tdbUnits.h"
12 #include <vrvUtil/DtVirtualBaseClass.h>
14 #include <QtCore/QString>
15 #include <QtCore/QStringList>
16 #include <QtCore/QHash>
17 #include <QtCore/QList>
82 virtual double metersToLocal(
double meters) = 0;
85 virtual double localToMeters(
double local) = 0;
300 myFcn(fcn), myReverse(reverse) {};
302 myFcn(orig.myFcn), myReverse(orig.myReverse) {};
312 DtUnit(
const QString& m,
const QString& t);
316 virtual QString stringRep()
const;
322 const QString&
time()
const {
return myTime; };
324 bool isValid()
const {
return (myMeasurement.length() || myTime.length()); };
327 static QString measurementTitle(
const DtUnit& u);
328 static void registerMeasurementTitle(
const QString& m,
const QString& t,
const QString& v);
332 static QString unitDisplayTitle(
const QString& u);
333 static void registerUnitDisplayTitle(
const QString& m,
const QString& t);
336 static QString unitForDisplayTitle(
const QString&);
338 static const QHash<QString, QString>& unitDisplayTitles();
341 QString myMeasurement;
343 static QHash<QString, QHash<QString, QString> > theMeasurementTitles;
344 static QHash<QString, QString> theUnitTitles;
352 virtual double convert(
double,
bool reverse =
false)
const {
return 0; };
364 virtual double convert(
double,
bool reverse =
false)
const;
373 virtual double convert(
double,
bool reverse =
false)
const;
381 virtual double convert(
double,
bool reverse =
false)
const;
389 virtual double convert(
double,
bool reverse =
false)
const;
397 virtual double convert(
double,
bool reverse =
false)
const;
405 virtual double convert(
double,
bool reverse =
false)
const;
413 virtual double convert(
double,
bool reverse =
false)
const;
423 virtual double convert(
double,
bool reverse =
false)
const;
432 DtConvertMeasurement,
445 virtual void registerUnitConversion(
const QString& from,
const QString& to,
DtConverterFcn fcn,
446 const QString& title =
"",
const QString& unitTitle =
"",
bool addTimeUnits =
false);
452 virtual void registerConversion(
const QString& from,
const QString& to,
DtConverterFcn);
457 virtual DtUnit parse(
const QString&)
const;
458 virtual bool canConvert(
const DtUnit&,
const DtUnit&)
const;
459 virtual double convert(
const DtUnit& from,
const DtUnit& to,
double val,
bool& valid,
bool reverse =
false)
const;
460 virtual double convert(DtConversionType,
const DtUnit& from,
const DtUnit& to,
double val,
bool& valid,
461 bool reverse =
false)
const;
462 virtual double convertReverse(
const DtUnit& from,
const DtUnit& to,
double val,
bool& valid)
const;
464 virtual void findPath(DtConversionType type,
const DtUnit& from,
const DtUnit& to,
const QHash<QString, DtConverterClass>&,
469 virtual double convertSourceToDestination(
double val,
const QString& source,
const QString& destination)
const;
472 virtual double convertDestinationToSource(
double val,
const QString& source,
const QString& destination)
const;
474 virtual QString unitTitle(
const QString& u)
const;
477 virtual void registerConverters();
478 virtual void registerConversion(
const QString& from,
const QString& to,
DtConverterFcn,
bool);
481 QHash<QString, QHash<QString, DtConverterClass> > myConverters;
482 mutable QHash<QString, QList<DtConverter*> > myConversions;