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 ()
}
Speakers::Speakers (const Speakers& s)
+ : Stateful ()
{
_speakers = s._speakers;
}
Speakers::dump_speakers (ostream& o)
{
for (vector<Speaker>::iterator i = _speakers.begin(); i != _speakers.end(); ++i) {
- o << "Speaker " << (*i).id << " @ "
+ o << "Speaker " << (*i).id << " @ "
<< (*i).coords().x << ", " << (*i).coords().y << ", " << (*i).coords().z
<< " azimuth " << (*i).angles().azi
<< " elevation " << (*i).angles().ele
update ();
}
-int
+int
Speakers::add_speaker (const AngularVector& position)
{
int id = _speakers.size();
Changed ();
return id;
-}
+}
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;
- }
+ }
}
}
add_speaker (AngularVector (215.0, 0.0));
break;
- default:
+ default:
{
double degree_step = 360.0 / n;
double deg;
}
}
}
-
+
XMLNode&
Speakers::get_state ()
{
node->add_child_nocopy (*speaker);
}
-
+
return *node;
}
continue;
}
e = atof (prop->value());
-
+
if ((prop = (*i)->property (X_("distance"))) == 0) {
warning << _("Speaker information is missing distance - speaker ignored") << endmsg;
continue;
}
update ();
-
+
return 0;
}