#define __libardour_speaker_h__
#include "pbd/cartesian.h"
+#include "pbd/signals.h"
-namespace ARDOUR {
+#include "ardour/libardour_visibility.h"
-class Speaker {
- public:
- Speaker (int, const PBD::AngularVector& position);
-
- void move (const PBD::AngularVector& new_position);
+namespace ARDOUR {
- const PBD::CartesianVector& coords() const { return _coords; }
- const PBD::AngularVector& angles() const { return _angles; }
+class LIBARDOUR_API Speaker {
+public:
+ Speaker (int, const PBD::AngularVector& position);
+ Speaker (const Speaker &);
+ Speaker& operator= (const Speaker &);
- int id;
+ void move (const PBD::AngularVector& new_position);
- private:
- PBD::CartesianVector _coords;
- PBD::AngularVector _angles;
+ const PBD::CartesianVector& coords() const { return _coords; }
+ const PBD::AngularVector& angles() const { return _angles; }
+
+ int id;
+
+ /** emitted when this speaker's position has changed */
+ PBD::Signal0<void> PositionChanged;
+
+private:
+ PBD::CartesianVector _coords;
+ PBD::AngularVector _angles;
};
} /* namespace */