#pragma once #include "export.hpp" #include "slider.hpp" #include #include namespace options { namespace detail { template struct default_value_traits { virtual ~default_value_traits() = default; using stored_type = std::decay_t; using value_type = std::decay_t; static inline value_type from_value(const value_type& val, const value_type&) { return val; } static inline value_type from_storage(const stored_type& x) { return static_cast(x); } static inline stored_type to_storage(const value_type& val) { return static_cast(val); } }; template struct value_traits : default_value_traits { }; template<> struct value_traits : default_value_traits { static inline slider_value from_value(const slider_value& val, const slider_value& def) { return slider_value(val.cur(), def.min(), def.max()); } }; // Qt uses int a lot in slots so use it for all enums template struct value_traits>> : public default_value_traits { }; template<> struct value_traits : public default_value_traits { }; } // ns detail } // ns options