Remove unused method..
[ardour.git] / libs / ardour / panner.cc
index a00edfdd3f468730cab0e63a96a5158d8459c402..73326e12a4537cd82214eb7ce13a40dd57731535 100644 (file)
@@ -703,7 +703,7 @@ Multi2dPanner::set_state (const XMLNode& node)
 /*---------------------------------------------------------------------- */
 
 Panner::Panner (string name, Session& s)
-       : Processor(s, name, PostFader)
+       : Processor(s, name)
 {
        //set_name_old_auto (name);
        set_name (name);
@@ -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)
 {
@@ -938,23 +1012,30 @@ Panner::set_automation_state (AutoState state)
 AutoState
 Panner::automation_state () const
 {
+       boost::shared_ptr<AutomationList> l;
        if (!empty()) {
-               return ((AutomationList*)_streampanners.front()->pan_control()->list().get())->automation_state ();
-       } else {
-               return Off;
+               boost::shared_ptr<AutomationControl> control = _streampanners.front()->pan_control();
+               if (control) {
+                       l = boost::dynamic_pointer_cast<AutomationList>(control->list());
+               }
        }
+
+       return l ? l->automation_state() : Off;
 }
 
 AutoStyle
 Panner::automation_style () const
 {
+       boost::shared_ptr<AutomationList> l;
        if (!empty()) {
-               return ((AutomationList*)_streampanners.front()->pan_control()->list().get())->automation_style ();
-       } else {
-               return Absolute;
+               boost::shared_ptr<AutomationControl> control = _streampanners.front()->pan_control();
+               if (control) {
+                       l = boost::dynamic_pointer_cast<AutomationList>(control->list());
+               }
        }
-}
 
+       return l ? l->automation_style() : Absolute;
+}
 
 struct PanPlugins {
     string name;
@@ -1338,7 +1419,7 @@ Panner::distribute_no_automation (BufferSet& inbufs, BufferSet& outbufs, nframes
 }
 
 void
-Panner::run_out_of_place (BufferSet& inbufs, BufferSet& outbufs, nframes_t start_frame, nframes_t end_frame, nframes_t nframes)
+Panner::run_out_of_place (BufferSet& inbufs, BufferSet& outbufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes)
 {      
        if (outbufs.count().n_audio() == 0) {
                // Failing to deliver audio we were asked to deliver is a bug