summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/proxy_controllable.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-02-11 16:14:24 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-02-11 16:14:24 +0000
commitc1be28e7b0dde96fef3e9251e682eafbe2dcf5e9 (patch)
tree643fe8cc7368e99f04238aee0cd64f30ad8fa531 /libs/ardour/ardour/proxy_controllable.h
parent7cf4419d62d286bd3a62c98e891f35678f061479 (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.h34
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__ */