VR-Forces 4.1 Class Documentation
conversions.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2008 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 /*********************************************************************
6 ** $RCSfile: conversions.h,v $ $Revision: 1.4 $ $State: Exp $
7 *********************************************************************/
8 
11 
12 #ifndef CONVERSIONS_H_
13 #define CONVERSIONS_H_
14 
16 #include "tdbutil/tdbUnits.h"
17 
18 #include <QtCore/QString>
19 #include <QtCore/QStringList>
20 #include <QtCore/QHash>
21 #include <QtCore/QList>
22 
41 
42 class DtConverter;
43 
44 typedef DtConverter* (*DtConverterFcn)(bool);
45 
47 {
48 public:
49  DtConverterClass() : myFcn(0), myReverse(false) {};
50  DtConverterClass(DtConverterFcn fcn, bool reverse) :
51  myFcn(fcn), myReverse(reverse) {};
53  myFcn(orig.myFcn), myReverse(orig.myReverse) {};
54 
55  DtConverterFcn myFcn;
56  bool myReverse;
57 };
58 
60 {
61 public:
62  DtUnit();
63  DtUnit(const QString& m, const QString& t);
64  DtUnit(const DtUnit&);
65  DtUnit& operator=(const DtUnit&);
66 
67  virtual QString stringRep() const;
68 
69  bool operator==(const DtUnit& rhs) const { return ((myMeasurement == rhs.myMeasurement) && (myTime == rhs.myTime)); };
70  bool operator!=(const DtUnit& rhs) const { return !(*this == rhs); };
71 
72  const QString& measurement() const { return myMeasurement; };
73  const QString& time() const { return myTime; };
74 
75  bool isValid() const { return (myMeasurement.length() || myTime.length()); };
76 
77 public:
78  static QString measurementTitle(const DtUnit& u);
79  static void registerMeasurementTitle(const QString& m, const QString& t, const QString& v);
80 
83  static QString unitDisplayTitle(const QString& u);
84  static void registerUnitDisplayTitle(const QString& m, const QString& t);
85 
87  static QString unitForDisplayTitle(const QString&);
88 
89  static const QHash<QString, QString>& unitDisplayTitles();
90 
91 protected:
92  QString myMeasurement;
93  QString myTime;
94  static QHash<QString, QHash<QString, QString> > theMeasurementTitles;
95  static QHash<QString, QString> theUnitTitles;
96 };
97 
99 {
100 public:
101  DtConverter(bool reverse);
102 
103  virtual double convert(double, bool reverse = false) const { return 0; };
104 
105  bool reverse() const { return myReverse; };
106 
107 protected:
108  bool myReverse;
109 };
110 
112 {
113 public:
114  DtMetersToMiles(bool);
115  virtual double convert(double, bool reverse = false) const;
116 
117  static DtConverter* create(bool);
118 };
119 
121 {
122 public:
123  DtMetersToFeet(bool);
124  virtual double convert(double, bool reverse = false) const;
125  static DtConverter* create(bool);
126 };
127 
129 {
130 public:
131  DtMetersToKilometers(bool);
132  virtual double convert(double, bool reverse = false) const;
133  static DtConverter* create(bool);
134 };
135 
137 {
138 public:
140  virtual double convert(double, bool reverse = false) const;
141  static DtConverter* create(bool);
142 };
143 
145 {
146 public:
147  DtRadiansToDegrees(bool);
148  virtual double convert(double, bool reverse = false) const;
149  static DtConverter* create(bool);
150 };
151 
153 {
154 public:
155  DtMinutesToHours(bool);
156  virtual double convert(double, bool reverse = false) const;
157  static DtConverter* create(bool);
158 };
159 
161 {
162 public:
163  DtSecondsToMinutes(bool);
164  virtual double convert(double, bool reverse = false) const;
165  static DtConverter* create(bool);
166 };
167 
169 
171 {
172 public:
173  DtOneToOneConverter(bool);
174  virtual double convert(double, bool reverse = false) const;
175  static DtConverter* create(bool);
176 };
177 
179 {
180  Q_OBJECT
181 
182 public:
184  {
186  DtConvertTime
187  };
188 
189 public:
191 
192  virtual ~DtUnitConverterFactory();
193 
194 public:
198  virtual void registerUnitConversion(const QString& from, const QString& to, DtConverterFcn fcn,
199  const QString& title = "", const QString& unitTitle = "", bool addTimeUnits = false);
200 
201 public:
202  virtual void registerConversion(const QString& from, const QString& to, DtConverterFcn);
203 
205  virtual bool init();
206 
207  virtual DtUnit parse(const QString&) const;
208  virtual bool canConvert(const DtUnit&, const DtUnit&) const;
209  virtual double convert(const DtUnit& from, const DtUnit& to, double val, bool& valid, bool reverse = false) const;
210  virtual double convert(DtConversionType, const DtUnit& from, const DtUnit& to, double val, bool& valid,
211  bool reverse = false) const;
212  virtual double convertReverse(const DtUnit& from, const DtUnit& to, double val, bool& valid) const;
213  virtual QList<DtConverter*> conversion(DtConversionType type, const DtUnit& from, const DtUnit& to) const;
214  virtual void findPath(DtConversionType type, const DtUnit& from, const DtUnit& to, const QHash<QString, DtConverterClass>&,
215  QList<DtConverter*>& path) const;
216 
219  virtual double convertSourceToDestination(double val, const QString& source, const QString& destination) const;
220 
222  virtual double convertDestinationToSource(double val, const QString& source, const QString& destination) const;
223 
224  static DtUnitConverterFactory* create();
225 
226  virtual QString unitTitle(const QString& u) const;
227 
228 protected:
229  virtual void registerConverters();
230  virtual void registerConversion(const QString& from, const QString& to, DtConverterFcn, bool);
231 
232 protected:
233  QHash<QString, QHash<QString, DtConverterClass> > myConverters;
234  mutable QHash<QString, QList<DtConverter*> > myConversions;
235 };
236 
237 #endif
238 

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)