- public:
- StreamPanner (Panner& p);
- ~StreamPanner ();
-
- void set_muted (bool yn);
- bool muted() const { return _muted; }
-
- void set_position (float x, bool link_call = false);
- void set_position (float x, float y, bool link_call = false);
- void set_position (float x, float y, float z, bool link_call = false);
-
- void get_position (float& xpos) const { xpos = x; }
- void get_position (float& xpos, float& ypos) const { xpos = x; ypos = y; }
- void get_position (float& xpos, float& ypos, float& zpos) const { xpos = x; ypos = y; zpos = z; }
-
- void get_effective_position (float& xpos) const { xpos = effective_x; }
- void get_effective_position (float& xpos, float& ypos) const { xpos = effective_x; ypos = effective_y; }
- void get_effective_position (float& xpos, float& ypos, float& zpos) const { xpos = effective_x; ypos = effective_y; zpos = effective_z; }
-
- /* the basic panner API */
-
- virtual void distribute (Sample* src, Sample** obufs, gain_t gain_coeff, jack_nframes_t nframes) = 0;
- virtual void distribute_automated (Sample* src, Sample** obufs,
- jack_nframes_t start, jack_nframes_t end, jack_nframes_t nframes, pan_t** buffers) = 0;
-
- /* automation */
-
- virtual void snapshot (jack_nframes_t now) = 0;
- virtual void transport_stopped (jack_nframes_t frame) = 0;
- virtual void set_automation_state (AutoState) = 0;
- virtual void set_automation_style (AutoStyle) = 0;
-
- PBD::Controllable& control() { return _control; }
-
- /* XXX this is wrong. for multi-dimensional panners, there
- must surely be more than 1 automation curve.
- */
-
- virtual Curve& automation() = 0;
-
- virtual int load (istream&, string path, uint32_t&) = 0;
-
- virtual int save (ostream&) const = 0;
-
- sigc::signal<void> Changed; /* for position */
- sigc::signal<void> StateChanged; /* for mute */