Scanframe Modular Application 0.1.0
Loading...
Searching...
No Matches
UnitConversion.h
Go to the documentation of this file.
1#pragma once
2#include <gii/global.h>
3#include <misc/gen/TClosure.h>
4#include <misc/gen/TVector.h>
5#include <utility>
6
7namespace sf
8{
9
14{
19 std::string option, std::string from_unit, int from_precision, double& multiplier, double& offset, std::string& to_unit, int& to_precision
20 )
21 : _option(std::move(option))
22 , _from_unit(std::move(from_unit))
23 , _from_precision(from_precision)
24 , _multiplier(multiplier)
25 , _offset(offset)
26 , _to_precision(to_precision)
27 , _to_unit(to_unit)
28 {}
29
31 std::string _option;
33 std::string _from_unit;
37 double& _multiplier;
39 double& _offset;
41 std::string& _to_unit;
44};
45
52
59
79 const std::string& option, const std::string& from_unit, int from_precision, double& multiplier, double& offset, std::string& to_unit, int& to_precision
80);
81
90{
91 public:
95 UnitConverter() = default;
96
103 inline UnitConverter(const std::string& unit, int sig_digits);
104
112 bool set(const std::string& unit, int sig_digits);
113
120 bool set();
121
129 [[nodiscard]] double getValue(double value) const;
130
138 [[nodiscard]] std::string getString(double value) const;
139
145 [[nodiscard]] inline std::string getUnit() const;
146
152 [[nodiscard]] inline int getSigDigits() const;
153
159 [[nodiscard]] inline bool isValid() const;
160
168 [[nodiscard]] double getOrgValue(double value) const;
169
182 [[nodiscard]] double getOrgValue(const std::string& value, double def = 0.0) const;
183
189 inline void clear();
190
191 private:
195 bool _valid{false};
199 std::string _options;
203 int _originalSigDigits{0};
207 std::string _originalUnit;
211 double _offset{0.0};
215 double _multiplier{1.0};
219 std::string _unit;
223 int _sigDigits{0};
224};
225
226inline UnitConverter::UnitConverter(const std::string& unit, int sig_digits)
227{
228 set(unit, sig_digits);
229}
230
232{
233 _valid = false;
234}
235
236inline bool UnitConverter::isValid() const
237{
238 return _valid;
239}
240
241inline std::string UnitConverter::getUnit() const
242{
243 return _valid ? _unit : _originalUnit;
244}
245
247{
248 return _valid ? _sigDigits : _originalSigDigits;
249}
250
251}// namespace sf
Encapsulates the std::function() template.
Definition TClosure.h:14
unit conversion class to easy the pain of conversions in dialogs.
Definition UnitConversion.h:90
bool isValid() const
Returns if there is a valid conversion present.
Definition UnitConversion.h:236
bool set(const std::string &unit, int sig_digits)
Retrieves the unit conversion using the passed values.
double getOrgValue(double value) const
Gets original value from the past converted value.
UnitConverter()=default
Default constructor.
bool set()
Retrieves the unit conversion using the current set values and passes them to the global function ge...
void clear()
clear the conversion and make it invalid.
Definition UnitConversion.h:231
std::string getUnit() const
Returns the unit after conversion.
Definition UnitConversion.h:241
std::string getString(double value) const
Returns the converted value as a string using the digits.
double getOrgValue(const std::string &value, double def=0.0) const
Gets the original value from the past string which may contain a calculation.
double getValue(double value) const
Gets the converted value from an original one.
int getSigDigits() const
Gets the significant digits after conversion.
Definition UnitConversion.h:246
#define _GII_CLASS
Definition gii/global.h:38
#define _GII_FUNC
Definition gii/global.h:37
Definition Application.h:10
TClosure< bool, UnitConversionEvent & > UnitConversionServerClosure
Type of the server callback function.
Definition UnitConversion.h:51
_GII_FUNC bool getUnitConversion(const std::string &option, const std::string &from_unit, int from_precision, double &multiplier, double &offset, std::string &to_unit, int &to_precision)
Returns true if a conversion could be made. Calculation to convert are: From -> To calculation: n...
_GII_FUNC void setUnitConversionHandler(const UnitConversionServerClosure &closure={})
Sets the callback function for a security server.
Structure passed to handle unit conversions.
Definition UnitConversion.h:14
std::string & _to_unit
New precision after conversion.
Definition UnitConversion.h:41
int _from_precision
Decimals of current unit. (can be negative)
Definition UnitConversion.h:35
double & _offset
offset value.
Definition UnitConversion.h:39
int & _to_precision
New unit string.
Definition UnitConversion.h:43
UnitConversionEvent(std::string option, std::string from_unit, int from_precision, double &multiplier, double &offset, std::string &to_unit, int &to_precision)
Constructor.
Definition UnitConversion.h:18
double & _multiplier
Multiplication factor.
Definition UnitConversion.h:37
std::string _option
Special conversion option code.
Definition UnitConversion.h:31
std::string _from_unit
current unit string.
Definition UnitConversion.h:33