BIMHome v1.0.0
BIMHome接口文档说明
Quantity.h
浏览该文件的文档.
1/************************************************************************
2* @file Quantity.h
3*
4* @brief Quantity 类
5*
6* @details Quantity 类
7*
8* @author wukx
9*
10* @version v1.0
11*
12* @date 2016.9.30
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef BIMHOMEBASE_QUANTITY_H
19#define BIMHOMEBASE_QUANTITY_H
20
21#include "Unit.h"
22#include <QString>
23
24#ifndef DOUBLE_MAX
25# define DOUBLE_MAX 1.7976931348623157E+308 /* max decimal value of a "double"*/
26#endif
27#ifndef DOUBLE_MIN
28# define DOUBLE_MIN 2.2250738585072014E-308 /* min decimal value of a "double"*/
29#endif
30
31namespace Base
32{
37 struct BaseExport QuantityFormat
38 {
47 {
48 None = 0x00,
49 OmitGroupSeparator = 0x01,
50 RejectGroupSeparator = 0x02
51 };
52
61 {
62 Default = 0,
63 Fixed = 1,
64 Scientific = 2
65 };
66
67 typedef int NumberOptions;
73 static int defaultDenominator;
80 static inline int getDefaultDenominator()
81 {
82 return defaultDenominator;
83 }
84
90 static inline void setDefaultDenominator(int denom)
91 {
92 defaultDenominator = denom;
93 }
94
102 static inline NumberFormat toFormat(char c, bool* ok = nullptr)
103 {
104 if (ok)
105 *ok = true;
106 switch (c)
107 {
108 case 'f':
109 return Fixed;
110 case 'e':
111 return Scientific;
112 case 'g':
113 return Default;
114 default:
115 if (ok)
116 *ok = false;
117 return Default;
118 }
119 }
120
126 inline int getDenominator() const
127 {
128 return denominator;
129 }
130
136 inline void setDenominator(int denom)
137 {
138 denominator = denom;
139 }
140
146
153 QuantityFormat(NumberFormat format, int decimals = -1);
154
160 inline char toFormat() const
161 {
162 switch (format)
163 {
164 case Fixed:
165 return 'f';
166 case Scientific:
167 return 'e';
168 default:
169 return 'g';
170 }
171 }
172
173
174
179 };
180
181class UnitsSchema;
182
187class BaseExport Quantity
188{
189public:
195
202
209 explicit Quantity(double value, const Unit& unit = Unit());
210
217 explicit Quantity(double value, const QString& unit);
218
224
231 Quantity operator *(const Quantity& p) const;
232
239 Quantity operator *(double p) const;
240
247 Quantity operator +(const Quantity& p) const;
248
255 Quantity& operator +=(const Quantity& p);
256
263 Quantity operator -(const Quantity& p) const;
264
271 Quantity& operator -=(const Quantity& p);
272
278 Quantity operator -() const;
279
286 Quantity operator /(const Quantity& p) const;
287
294 Quantity operator /(double p) const;
295
302 bool operator ==(const Quantity&) const;
303
310 bool operator < (const Quantity&) const;
311
318 bool operator > (const Quantity&) const;
319
326 bool operator <= (const Quantity&) const;
327
334 bool operator >= (const Quantity&) const;
335
342 Quantity& operator =(const Quantity&);
343
350 Quantity pow(const Quantity&)const;
351
358 Quantity pow(double)const;
359
366 {
367 return _Format;
368 }
369
376 {
377 _Format = f;
378 }
379
387 QString getUserString(double& factor, QString& unitString) const;
388
394 QString getUserString() const
395 {
396 double dummy1;
397 QString dummy2;
398 return getUserString(dummy1, dummy2);
399 }
400
409 QString getUserString(UnitsSchema* schema, double& factor, QString& unitString) const;
410
417 static Quantity parse(const QString& string);
418
424 const Unit& getUnit() const
425 {
426 return _Unit;
427 }
428
434 void setUnit(const Unit& un)
435 {
436 _Unit = un;
437 }
438
444 double getValue() const
445 {
446 return _Value;
447 }
448
454 void setValue(double val)
455 {
456 _Value = val;
457 }
458
465 double getValueAs(const Quantity&)const;
466
472 bool isDimensionless()const;
473
479 bool isQuantity()const;
480
486 bool isValid()const;
487
493
494
516 static Quantity Gram;
518 static Quantity Ton;
522 static Quantity Hour;
534 static Quantity Mole;
538 static Quantity Inch;
539 static Quantity Foot;
540 static Quantity Thou;
541 static Quantity Yard;
547 static Quantity Mile;
570 static Quantity Bar;
573 static Quantity Torr;
577 static Quantity PSI;
578 static Quantity KSI;
579 static Quantity MPSI;
581 static Quantity Watt;
586 static Quantity Volt;
596 static Quantity Ohm;
631 static Quantity KMH;
632 static Quantity MPH;
636 static Quantity Gon;
640
641protected:
642 double _Value;
643 Unit _Unit;
645};
646} // namespace Base
647
648#endif // BIMHOMEBASE_QUANTITY_H
None
Normal text
Definition Setting.h:97
Scientific
Scientific (e.g.
Definition Setting.h:165
static Quantity TeraHertz
太赫兹
Definition Quantity.h:512
static Quantity KiloNewton
千牛顿
Definition Quantity.h:557
static Quantity Gon
角度
Definition Quantity.h:636
static Quantity NanoMetre
预定义的单位类型。
Definition Quantity.h:497
void setInvalid()
设置为无效
static Quantity MilliAmpere
毫安培
Definition Quantity.h:525
const Unit & getUnit() const
获取单位
Definition Quantity.h:424
static Quantity Joule
焦耳
Definition Quantity.h:618
static Quantity yTorr
微托
Definition Quantity.h:575
static Quantity Mile
英里
Definition Quantity.h:547
static Quantity KiloNewtonPerMeter
千牛顿每米
Definition Quantity.h:562
static Quantity Farad
法拉
Definition Quantity.h:607
static Quantity Yard
Definition Quantity.h:541
static Quantity Gauss
高斯
Definition Quantity.h:603
static Quantity Foot
英尺
Definition Quantity.h:539
static Quantity VoltAmpereSecond
伏安秒
Definition Quantity.h:622
static Quantity Newton
牛顿
Definition Quantity.h:555
static Quantity Ohm
欧姆
Definition Quantity.h:596
static Quantity Coulomb
库仑
Definition Quantity.h:600
static Quantity PSI
磅每平方英寸
Definition Quantity.h:577
static Quantity NewtonPerMeter
牛顿每米
Definition Quantity.h:560
~Quantity()
析构函数
Definition Quantity.h:223
static Quantity CentiMetre
厘米
Definition Quantity.h:499
static Quantity MPH
英里每小时
Definition Quantity.h:632
static Quantity MilliBar
毫巴
Definition Quantity.h:571
static Quantity Thou
千分之一英寸
Definition Quantity.h:540
static Quantity KiloElectronVolt
千电子伏特
Definition Quantity.h:626
static Quantity Watt
瓦特
Definition Quantity.h:581
static Quantity MicroSiemens
微西门子
Definition Quantity.h:594
static Quantity SquareFoot
平方英尺
Definition Quantity.h:550
static Quantity Torr
Definition Quantity.h:573
static Quantity mTorr
毫托
Definition Quantity.h:574
static Quantity Ton
Definition Quantity.h:518
static Quantity Ounce
盎司
Definition Quantity.h:544
static Quantity Second
Definition Quantity.h:520
Unit _Unit
单位
Definition Quantity.h:643
static Quantity NanoHenry
纳亨利
Definition Quantity.h:616
static Quantity Bar
Definition Quantity.h:570
void setValue(double val)
设置数值
Definition Quantity.h:454
static Quantity MilliVolt
毫伏特
Definition Quantity.h:587
static Quantity KiloHertz
千赫兹
Definition Quantity.h:509
static Quantity AngMinute
角分
Definition Quantity.h:637
static Quantity Volt
伏特
Definition Quantity.h:586
static Quantity MegaSiemens
兆西门子
Definition Quantity.h:590
static Quantity KiloCalorie
千卡路里
Definition Quantity.h:629
static Quantity VoltAmpere
伏安
Definition Quantity.h:584
static Quantity Liter
Definition Quantity.h:505
static Quantity MegaHertz
兆赫兹
Definition Quantity.h:510
static Quantity AngSecond
角秒
Definition Quantity.h:638
bool isValid() const
检查是否为有效值
static Quantity GigaHertz
吉赫兹
Definition Quantity.h:511
static Quantity KiloOhm
千欧姆
Definition Quantity.h:597
static Quantity Henry
亨利
Definition Quantity.h:613
static Quantity MegaElectronVolt
兆电子伏特
Definition Quantity.h:627
static Quantity KiloPascal
千帕斯卡
Definition Quantity.h:566
static Quantity Hundredweights
英担
Definition Quantity.h:546
Quantity()
默认构造函数
static Quantity KiloWattHour
千瓦时
Definition Quantity.h:624
static Quantity Hour
小时
Definition Quantity.h:522
static Quantity PoundForce
磅力
Definition Quantity.h:553
double _Value
数值
Definition Quantity.h:642
static Quantity MegaAmpere
兆安培
Definition Quantity.h:527
static Quantity Pascal
帕斯卡
Definition Quantity.h:565
static Quantity Oersted
奥斯特
Definition Quantity.h:606
static Quantity Radian
弧度
Definition Quantity.h:635
static Quantity Degree
Definition Quantity.h:634
static Quantity MegaOhm
兆欧姆
Definition Quantity.h:598
static Quantity Pound
Definition Quantity.h:543
static Quantity Candela
坎德拉
Definition Quantity.h:536
static Quantity KiloSiemens
千西门子
Definition Quantity.h:591
static Quantity PicoFarad
皮法拉
Definition Quantity.h:611
static Quantity MilliWatt
毫瓦特
Definition Quantity.h:582
static Quantity Hertz
赫兹
Definition Quantity.h:508
static Quantity MicroMetre
微米
Definition Quantity.h:498
static Quantity KiloGram
千克
Definition Quantity.h:517
QuantityFormat _Format
格式化对象
Definition Quantity.h:644
QString getUserString(UnitsSchema *schema, double &factor, QString &unitString) const
获取用户字符串
static Quantity MicroFarad
微法拉
Definition Quantity.h:609
static Quantity parse(const QString &string)
从字符串解析 Quantity 对象
static Quantity MilliJoule
毫焦耳
Definition Quantity.h:619
static Quantity KiloWatt
千瓦特
Definition Quantity.h:583
static Quantity Tesla
特斯拉
Definition Quantity.h:602
static Quantity MegaNewton
兆牛顿
Definition Quantity.h:558
static Quantity KiloMetre
千米
Definition Quantity.h:503
static Quantity ElectronVolt
电子伏特
Definition Quantity.h:625
static Quantity MilePerHour
英里每小时
Definition Quantity.h:549
static Quantity MilliMetre
毫米
Definition Quantity.h:502
static Quantity Minute
分钟
Definition Quantity.h:521
Quantity pow(const Quantity &) const
计算 Quantity 对象的幂
static Quantity KMH
千米每小时
Definition Quantity.h:631
static Quantity NanoFarad
纳法拉
Definition Quantity.h:610
static Quantity MicroKelvin
微开尔文
Definition Quantity.h:531
static Quantity MicroHenry
微亨利
Definition Quantity.h:615
static Quantity MilliHenry
毫亨利
Definition Quantity.h:614
Quantity(double value, const Unit &unit=Unit())
构造函数,初始化 Quantity 对象
const QuantityFormat & getFormat() const
获取格式化对象
Definition Quantity.h:365
bool isQuantity() const
检查是否为有效量
void setUnit(const Unit &un)
设置单位
Definition Quantity.h:434
static Quantity DeciMetre
分米
Definition Quantity.h:500
static Quantity Gram
Definition Quantity.h:516
static Quantity Metre
Definition Quantity.h:501
static Quantity MegaPascal
兆帕斯卡
Definition Quantity.h:567
static Quantity MegaNewtonPerMeter
兆牛顿每米
Definition Quantity.h:563
static Quantity MilliKelvin
毫开尔文
Definition Quantity.h:530
QString getUserString(double &factor, QString &unitString) const
获取用户字符串
static Quantity Ampere
安培
Definition Quantity.h:524
static Quantity Weber
韦伯
Definition Quantity.h:605
bool isDimensionless() const
检查是否为无量纲
static Quantity MPSI
兆磅每平方英寸
Definition Quantity.h:579
static Quantity KiloAmpere
千安培
Definition Quantity.h:526
static Quantity MilliSiemens
毫西门子
Definition Quantity.h:593
static Quantity Mole
摩尔
Definition Quantity.h:534
void setFormat(const QuantityFormat &f)
设置格式化对象
Definition Quantity.h:375
static Quantity MilliGram
毫克
Definition Quantity.h:515
double getValue() const
获取数值
Definition Quantity.h:444
static Quantity WattSecond
瓦特秒
Definition Quantity.h:623
static Quantity MilliLiter
毫升
Definition Quantity.h:506
double getValueAs(const Quantity &) const
获取特定单位的数值
static Quantity KiloVolt
千伏特
Definition Quantity.h:588
Quantity(double value, const QString &unit)
构造函数,初始化 Quantity 对象
static Quantity MilliFarad
毫法拉
Definition Quantity.h:608
static Quantity MilliMole
毫摩尔
Definition Quantity.h:533
static Quantity GigaPascal
吉帕斯卡
Definition Quantity.h:568
static Quantity CubicFoot
立方英尺
Definition Quantity.h:551
static Quantity Inch
英寸
Definition Quantity.h:538
static Quantity Siemens
西门子
Definition Quantity.h:592
static Quantity Kelvin
开尔文
Definition Quantity.h:529
static Quantity Stone
Definition Quantity.h:545
static Quantity Calorie
卡路里
Definition Quantity.h:628
static Quantity MilliNewton
毫牛顿
Definition Quantity.h:556
static Quantity MilliNewtonPerMeter
毫牛顿每米
Definition Quantity.h:561
static Quantity MicroGram
微克
Definition Quantity.h:514
Quantity pow(double) const
计算 Quantity 对象的幂
static Quantity KSI
千磅每平方英寸
Definition Quantity.h:578
static Quantity KiloJoule
千焦耳
Definition Quantity.h:620
QString getUserString() const
获取用户字符串
Definition Quantity.h:394
Quantity(const Quantity &)
拷贝构造函数
static Quantity NewtonMeter
牛顿米
Definition Quantity.h:621
Quantity 类,表示一个具有单位的数值
Definition Quantity.h:188
Definition BaseFigureFactory.h:24
char toFormat() const
将数字格式转换为字符
Definition Quantity.h:160
int NumberOptions
定义了数字格式化时的选项。
Definition Quantity.h:67
static int getDefaultDenominator()
获取默认分母
Definition Quantity.h:80
NumberFormat
数字格式枚举
Definition Quantity.h:61
void setDenominator(int denom)
设置分母
Definition Quantity.h:136
static void setDefaultDenominator(int denom)
设置默认分母
Definition Quantity.h:90
static NumberFormat toFormat(char c, bool *ok=nullptr)
将字符转换为数字格式
Definition Quantity.h:102
int denominator
分母
Definition Quantity.h:178
int getDenominator() const
获取分母
Definition Quantity.h:126
NumberOption
数字选项枚举
Definition Quantity.h:47
static int defaultDenominator
默认的最小分数英寸分母
Definition Quantity.h:73
NumberOptions option
数字选项
Definition Quantity.h:175
int precision
精度
Definition Quantity.h:177
NumberFormat format
数字格式
Definition Quantity.h:176
QuantityFormat(NumberFormat format, int decimals=-1)
构造函数
QuantityFormat()
默认构造函数
QuantityFormat 结构,用于定义数量的格式化选项
Definition Quantity.h:38