summaryrefslogtreecommitdiffhomepage
path: root/options/slider.hpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2017-10-20 05:27:56 +0200
committerStanislaw Halik <sthalik@misaki.pl>2017-10-20 05:27:56 +0200
commit069b5fbdd326b5b8965a789880633e02cf9a54a2 (patch)
treef7e1dfda64a3e72523193a05c3f43072ba79b550 /options/slider.hpp
parentde29cf1031b5898541c0888b5ee6f0bdbbed43d7 (diff)
options/slider: allow arbitrary cast
Diffstat (limited to 'options/slider.hpp')
-rw-r--r--options/slider.hpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/options/slider.hpp b/options/slider.hpp
index da6bf214..5657ab82 100644
--- a/options/slider.hpp
+++ b/options/slider.hpp
@@ -20,6 +20,9 @@ namespace options
class OTR_OPTIONS_EXPORT slider_value final
{
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);
@@ -29,12 +32,18 @@ namespace options
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);
bool operator==(const slider_value& v) const;
operator double() const { return cur_; }
- explicit operator int() const { return iround(cur_); }
double cur() const { return cur_; }
double min() const { return min_; }
double max() const { return max_; }