From c1be28e7b0dde96fef3e9251e682eafbe2dcf5e9 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 11 Feb 2011 16:14:24 +0000 Subject: [PATCH] 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 --- libs/ardour/ardour/proxy_controllable.h | 34 +++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 libs/ardour/ardour/proxy_controllable.h 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 + +#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 setter, + boost::function0 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 _setter; + boost::function0 _getter; +}; + +} // namespace + +#endif /* __libardour_proxy_controllable_h__ */