diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-02-11 16:14:24 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-02-11 16:14:24 +0000 |
commit | c1be28e7b0dde96fef3e9251e682eafbe2dcf5e9 (patch) | |
tree | 643fe8cc7368e99f04238aee0cd64f30ad8fa531 /libs/ardour/ardour/proxy_controllable.h | |
parent | 7cf4419d62d286bd3a62c98e891f35678f061479 (diff) |
new class to wrap a pair of set/get methods as a Controllable
git-svn-id: svn://localhost/ardour2/branches/3.0@8824 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/proxy_controllable.h')
-rw-r--r-- | libs/ardour/ardour/proxy_controllable.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/libs/ardour/ardour/proxy_controllable.h b/libs/ardour/ardour/proxy_controllable.h new file mode 100644 index 0000000000..dd2a686237 --- /dev/null +++ b/libs/ardour/ardour/proxy_controllable.h @@ -0,0 +1,34 @@ +#ifndef __libardour_proxy_controllable_h__ +#define __libardour_proxy_controllable_h__ + +#include <boost/function.hpp> + +#include "pbd/controllable.h" + +namespace ARDOUR { + +/** this class converts a pair of setter/getter functors into a Controllable + so that it can be used like a regular Controllable, bound to MIDI, OSC etc. +*/ + +class ProxyControllable : public PBD::Controllable { + public: + ProxyControllable (const std::string& name, PBD::Controllable::Flag flags, + boost::function1<void,double> setter, + boost::function0<double> getter) + : PBD::Controllable (name, flags) + , _setter (setter) + , _getter (getter) + {} + + void set_value (double v) { _setter (v); } + double get_value () const { return _getter (); } + + private: + boost::function1<void,double> _setter; + boost::function0<double> _getter; +}; + +} // namespace + +#endif /* __libardour_proxy_controllable_h__ */ |