summaryrefslogtreecommitdiff
path: root/libs/surfaces/osc/osc_controllable.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/surfaces/osc/osc_controllable.h')
-rw-r--r--libs/surfaces/osc/osc_controllable.h38
1 files changed, 33 insertions, 5 deletions
diff --git a/libs/surfaces/osc/osc_controllable.h b/libs/surfaces/osc/osc_controllable.h
index 48183138ec..61261a8f1c 100644
--- a/libs/surfaces/osc/osc_controllable.h
+++ b/libs/surfaces/osc/osc_controllable.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 1998-2006 Paul Davis
+ Copyright (C) 2009 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -21,7 +21,7 @@
#define __osc_osccontrollable_h__
#include <string>
-
+#include <boost/shared_ptr.hpp>
#include <sigc++/sigc++.h>
#include <lo/lo.h>
@@ -29,18 +29,46 @@
#include <pbd/stateful.h>
#include <ardour/types.h>
+namespace ARDOUR {
+
+class Route;
+
+}
+
class OSCControllable : public PBD::Stateful
{
public:
- OSCControllable (lo_address addr, PBD::Controllable&);
+ OSCControllable (lo_address addr, const string& path, boost::shared_ptr<PBD::Controllable>);
virtual ~OSCControllable ();
+ lo_address address() const { return addr; }
+
XMLNode& get_state ();
int set_state (const XMLNode& node);
- private:
- PBD::Controllable& controllable;
+ protected:
+ boost::shared_ptr<PBD::Controllable> controllable;
lo_address addr;
+ string path;
+
+ virtual void send_change ();
+};
+
+class OSCRouteControllable : public OSCControllable
+{
+
+ public:
+ OSCRouteControllable (lo_address addr, const string& path,
+ boost::shared_ptr<PBD::Controllable>,
+ boost::shared_ptr<ARDOUR::Route>);
+ ~OSCRouteControllable ();
+
+ boost::shared_ptr<ARDOUR::Route> route() const { return _route; }
+
+ private:
+ boost::shared_ptr<ARDOUR::Route> _route;
+
+ void send_change ();
};
#endif /* __osc_osccontrollable_h__ */