summaryrefslogtreecommitdiff
path: root/libs/ardour/speakers.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2011-03-04 17:35:02 +0000
committerCarl Hetherington <carl@carlh.net>2011-03-04 17:35:02 +0000
commitcbf530b6b57e391e28f148e8805da817c97c9d1d (patch)
tree41975277d82fe00fe2ad007b80626352eb102bb3 /libs/ardour/speakers.cc
parent88ff3c0bd120090f38d7b5f8d46236c0f296dde0 (diff)
Make speaker dialogue manage the session's Speakers. Make azimuth control work. Various tweaks.
git-svn-id: svn://localhost/ardour2/branches/3.0@9073 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/speakers.cc')
-rw-r--r--libs/ardour/speakers.cc30
1 files changed, 27 insertions, 3 deletions
diff --git a/libs/ardour/speakers.cc b/libs/ardour/speakers.cc
index 0120e56bfa..4bb843021c 100644
--- a/libs/ardour/speakers.cc
+++ b/libs/ardour/speakers.cc
@@ -35,11 +35,35 @@ Speaker::Speaker (int i, const AngularVector& position)
move (position);
}
+Speaker::Speaker (Speaker const & o)
+ : id (o.id)
+ , _coords (o._coords)
+ , _angles (o._angles)
+{
+
+}
+
+Speaker &
+Speaker::operator= (Speaker const & o)
+{
+ if (&o == this) {
+ return *this;
+ }
+
+ id = o.id;
+ _coords = o._coords;
+ _angles = o._angles;
+
+ return *this;
+}
+
void
Speaker::move (const AngularVector& new_position)
{
_angles = new_position;
_angles.cartesian (_coords);
+
+ PositionChanged (); /* EMIT SIGNAL */
}
Speakers::Speakers ()
@@ -100,12 +124,12 @@ Speakers::add_speaker (const AngularVector& position)
void
Speakers::remove_speaker (int id)
{
- for (vector<Speaker>::iterator i = _speakers.begin(); i != _speakers.end(); ) {
- if ((*i).id == id) {
+ for (vector<Speaker>::iterator i = _speakers.begin(); i != _speakers.end(); ++i) {
+ if (i->id == id) {
i = _speakers.erase (i);
update ();
break;
- }
+ }
}
}