diff options
Diffstat (limited to 'options/slider.hpp')
| -rw-r--r-- | options/slider.hpp | 51 |
1 files changed, 19 insertions, 32 deletions
diff --git a/options/slider.hpp b/options/slider.hpp index f3ba44f8..1e721ae0 100644 --- a/options/slider.hpp +++ b/options/slider.hpp @@ -8,10 +8,11 @@ #pragma once #include "export.hpp" -#include "compat/macros.hpp" -#include <QMetaType> +#include <type_traits> + #include <QDataStream> +#include <QMetaType> #include <QDebug> namespace options @@ -20,42 +21,28 @@ namespace options { double cur_, min_, max_; - template<typename t> - using arith_conversion_t = std::enable_if_t<std::is_arithmetic_v<std::decay_t<t>>, std::decay_t<t>>; public: slider_value(double cur, double min, double max); - template<typename t, typename u, typename v> slider_value(t cur, u min, v max) : - cur_(double(cur)), - min_(double(min)), - max_(double(max)) - {} - - template<typename t> - never_inline - explicit operator arith_conversion_t<t>() const - { - return t(cur_); - } - - slider_value(const slider_value& v); - slider_value(); - slider_value& operator=(const slider_value& v); + template<typename t, typename u, typename v> + slider_value(t cur, u min, v max) : + slider_value((double)cur, (double)min, (double)max) {} + + slider_value& operator=(const slider_value& v) = default; + slider_value(const slider_value& v) = default; + slider_value() : slider_value{0, 0, 0} {} + bool operator==(const slider_value& v) const; - operator double() const { return cur_; } - double cur() const { return cur_; } - double min() const { return min_; } - double max() const { return max_; } + bool operator!=(const slider_value& v) const; + constexpr operator double() const { return cur_; } + constexpr double cur() const { return cur_; } + constexpr double min() const { return min_; } + constexpr double max() const { return max_; } slider_value update_from_slider(int pos, int q_min, int q_max) const; int to_slider_pos(int q_min, int q_max) const; }; } -QT_BEGIN_NAMESPACE - -QDebug operator << (QDebug dbg, const options::slider_value& val); -QDataStream& operator << (QDataStream& out, const options::slider_value& v); -QDataStream& operator >> (QDataStream& in, options::slider_value& v); - -QT_END_NAMESPACE - +OTR_OPTIONS_EXPORT QDebug operator << (QDebug dbg, const options::slider_value& val); +OTR_OPTIONS_EXPORT QDataStream& operator << (QDataStream& out, const options::slider_value& v); +OTR_OPTIONS_EXPORT QDataStream& operator >> (QDataStream& in, options::slider_value& v); |
