X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fproxy_controllable.h;h=22761d7dba1ce49d229592b6c491da1ef1828998;hb=5531c834963726d5a35db078e17a7508f2b9d72d;hp=066f2aac81f9266552f0871cd6c69f44b98e71f9;hpb=59631acc5f41153a294c97ab820a4b41a886e24c;p=ardour.git diff --git a/libs/ardour/ardour/proxy_controllable.h b/libs/ardour/ardour/proxy_controllable.h index 066f2aac81..22761d7dba 100644 --- a/libs/ardour/ardour/proxy_controllable.h +++ b/libs/ardour/ardour/proxy_controllable.h @@ -31,7 +31,7 @@ namespace ARDOUR { */ class LIBARDOUR_API ProxyControllable : public PBD::Controllable { -public: + public: ProxyControllable (const std::string& name, PBD::Controllable::Flag flags, boost::function1 setter, boost::function0 getter) @@ -40,10 +40,18 @@ public: , _getter (getter) {} - void set_value (double v) { if (_setter (v)) { Changed(); /* EMIT SIGNAL */ } } - double get_value () const { return _getter (); } + void set_value (double v, PBD::Controllable::GroupControlDisposition gcd) { if (_setter (v)) { Changed (true, gcd); /* EMIT SIGNAL */ } } + double get_value () const { return _getter (); } -private: + double internal_to_user (double i) const { return accurate_coefficient_to_dB (i);} + double user_to_internal (double u) const { return dB_to_coefficient(u) ;} + + std::string get_user_string () const { + char theBuf[32]; sprintf( theBuf, "%3.1f dB", accurate_coefficient_to_dB (get_value())); + return std::string(theBuf); + } + + private: boost::function1 _setter; boost::function0 _getter; };