implement panner reset functionality (missing since 0.99?) ported from 2.X
git-svn-id: svn://localhost/ardour2/branches/3.0@5015 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
075f5170ef
commit
8a7e3f17f4
@ -497,9 +497,9 @@ PannerUI::build_pan_menu (uint32_t which)
|
||||
bypass_menu_item->set_active (_io->panner().bypassed());
|
||||
bypass_menu_item->signal_toggled().connect (mem_fun(*this, &PannerUI::pan_bypass_toggle));
|
||||
|
||||
items.push_back (MenuElem (_("Reset"), mem_fun(*this, &PannerUI::pan_reset)));
|
||||
items.push_back (MenuElem (_("Reset"), bind (mem_fun (*this, &PannerUI::pan_reset), which)));
|
||||
items.push_back (SeparatorElem());
|
||||
items.push_back (MenuElem (_("Reset all")));
|
||||
items.push_back (MenuElem (_("Reset all"), mem_fun (*this, &PannerUI::pan_reset_all)));
|
||||
}
|
||||
|
||||
void
|
||||
@ -518,8 +518,15 @@ PannerUI::pan_bypass_toggle ()
|
||||
}
|
||||
|
||||
void
|
||||
PannerUI::pan_reset ()
|
||||
PannerUI::pan_reset (uint32_t which)
|
||||
{
|
||||
_io->panner().reset_streampanner (which);
|
||||
}
|
||||
|
||||
void
|
||||
PannerUI::pan_reset_all ()
|
||||
{
|
||||
_io->panner().reset_to_default ();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -142,7 +142,8 @@ class PannerUI : public Gtk::HBox
|
||||
Gtk::CheckMenuItem* bypass_menu_item;
|
||||
void build_pan_menu (uint32_t which);
|
||||
void pan_mute (uint32_t which);
|
||||
void pan_reset ();
|
||||
void pan_reset (uint32_t);
|
||||
void pan_reset_all ();
|
||||
void pan_bypass_toggle ();
|
||||
|
||||
void pan_automation_state_changed();
|
||||
|
@ -229,9 +229,8 @@ class Panner : public Processor
|
||||
StreamPanner* add ();
|
||||
void remove (uint32_t which);
|
||||
void reset (uint32_t noutputs, uint32_t npans);
|
||||
|
||||
|
||||
|
||||
void reset_streampanner (uint32_t which_panner);
|
||||
void reset_to_default ();
|
||||
|
||||
XMLNode& get_state (void);
|
||||
XMLNode& state (bool full);
|
||||
|
@ -748,6 +748,80 @@ Panner::set_bypassed (bool yn)
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Panner::reset_to_default ()
|
||||
{
|
||||
vector<float> positions;
|
||||
|
||||
switch (outputs.size()) {
|
||||
case 0:
|
||||
case 1:
|
||||
return;
|
||||
}
|
||||
|
||||
if (outputs.size() == 2) {
|
||||
switch (_streampanners.size()) {
|
||||
case 1:
|
||||
_streampanners.front()->set_position (0.5);
|
||||
_streampanners.front()->pan_control()->list()->reset_default (0.5);
|
||||
return;
|
||||
break;
|
||||
case 2:
|
||||
_streampanners.front()->set_position (0.0);
|
||||
_streampanners.front()->pan_control()->list()->reset_default (0.0);
|
||||
_streampanners.back()->set_position (1.0);
|
||||
_streampanners.back()->pan_control()->list()->reset_default (1.0);
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
vector<Output>::iterator o;
|
||||
vector<StreamPanner*>::iterator p;
|
||||
|
||||
for (o = outputs.begin(), p = _streampanners.begin(); o != outputs.end() && p != _streampanners.end(); ++o, ++p) {
|
||||
(*p)->set_position ((*o).x, (*o).y);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Panner::reset_streampanner (uint32_t which)
|
||||
{
|
||||
if (which >= _streampanners.size() || which >= outputs.size()) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (outputs.size()) {
|
||||
case 0:
|
||||
case 1:
|
||||
return;
|
||||
|
||||
case 2:
|
||||
switch (_streampanners.size()) {
|
||||
case 1:
|
||||
/* stereo out, 1 stream, default = middle */
|
||||
_streampanners.front()->set_position (0.5);
|
||||
_streampanners.front()->pan_control()->list()->reset_default (0.5);
|
||||
break;
|
||||
case 2:
|
||||
/* stereo out, 2 streams, default = hard left/right */
|
||||
if (which == 0) {
|
||||
_streampanners.front()->set_position (0.0);
|
||||
_streampanners.front()->pan_control()->list()->reset_default (0.0);
|
||||
} else {
|
||||
_streampanners.back()->set_position (1.0);
|
||||
_streampanners.back()->pan_control()->list()->reset_default (1.0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
default:
|
||||
_streampanners[which]->set_position (outputs[which].x, outputs[which].y);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Panner::reset (uint32_t nouts, uint32_t npans)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user