Prefer Stereo-Balance Panner for stereo tracks
[ardour.git] / libs / panners / 2in2out / panner_2in2out.h
index 8d8d57d7094ab86cebfff931049b8ce766f09b79..f67ac1081b40b9167db48967957c42b10460dd7b 100644 (file)
@@ -43,25 +43,34 @@ class Panner2in2out : public Panner
        Panner2in2out (boost::shared_ptr<Pannable>);
        ~Panner2in2out ();
 
-        ChanCount in() const { return ChanCount (DataType::AUDIO, 2); }
-        ChanCount out() const { return ChanCount (DataType::AUDIO, 2); }
+       ChanCount in() const { return ChanCount (DataType::AUDIO, 2); }
+       ChanCount out() const { return ChanCount (DataType::AUDIO, 2); }
 
-        bool clamp_position (double&);
-        bool clamp_width (double&);
+       bool clamp_position (double&);
+       bool clamp_width (double&);
 
-        void set_position (double);
-        void set_width (double);
+       std::pair<double, double> position_range () const;
+       std::pair<double, double> width_range () const;
 
-        double position () const;
-        double width () const;
+       void set_position (double);
+       void set_width (double);
 
-       static Panner* factory (boost::shared_ptr<Pannable>, Speakers&);
+       double position () const;
+       double width () const;
 
-       XMLNode& state (bool full_state); 
-       XMLNode& get_state (void); 
-       int      set_state (const XMLNode&, int version);
+       std::set<Evoral::Parameter> what_can_be_automated() const;
 
-        void update ();
+       static Panner* factory (boost::shared_ptr<Pannable>, boost::shared_ptr<Speakers>);
+
+       std::string describe_parameter (Evoral::Parameter);
+       std::string value_as_string (boost::shared_ptr<const AutomationControl>) const;
+
+       XMLNode& get_state ();
+
+       void update ();
+
+       void reset ();
+       void thaw ();
 
   protected:
        float left[2];
@@ -72,12 +81,12 @@ class Panner2in2out : public Panner
        float right_interp[2];
 
   private:
-        bool clamp_stereo_pan (double& direction_as_lr_fract, double& width);
-        
-        void distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gain_coeff, pframes_t nframes, uint32_t which);
-        void distribute_one_automated (AudioBuffer& srcbuf, BufferSet& obufs,
-                                       framepos_t start, framepos_t end, pframes_t nframes,
-                                       pan_t** buffers, uint32_t which);
+       bool clamp_stereo_pan (double& direction_as_lr_fract, double& width);
+
+       void distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gain_coeff, pframes_t nframes, uint32_t which);
+       void distribute_one_automated (AudioBuffer& srcbuf, BufferSet& obufs,
+                                      framepos_t start, framepos_t end, pframes_t nframes,
+                                      pan_t** buffers, uint32_t which);
 };
 
 } // namespace