#pragma once #include "sync.hh" namespace sov { /*= FLOATING POINT SLIDERS =====================================================*/ // Single float value class T_Float : public A_SyncOverride { private: T_String title_; T_Optional< float > min_; T_Optional< float > max_; T_Optional< float > step_; T_Optional< ebcl::T_StaticArray< char , 12 > > decimals_; T_Optional< float > power_; protected: void makeEditWidgets( ) noexcept override; public: T_Float( T_String const& input , T_String const& title ) noexcept; bool setMin( const float v ) noexcept; bool setMax( const float v ) noexcept; bool setStep( const float v ) noexcept; bool setDecimals( const uint32_t n ) noexcept; bool setPower( const float v ) noexcept; float min( ) const noexcept { return min_ ? *min_ : 0.0f; } float max( ) const noexcept { return max_ ? *max_ : 0.0f; } float step( ) const noexcept { return step_ ? *step_ : .001f; } char const* decimals( ) const noexcept { return decimals_ ? &(*decimals_)[ 0 ] : "%.3f"; } float power( ) const noexcept { return power_ ? *power_ : 1.0f; } }; } // namespace