#include "ardour/panner.h"
#include "ardour/panner.h"
+#include "ardour/pannable.h"
#include "ardour_ui.h"
#include "global_signals.h"
MonoPanner::ColorScheme MonoPanner::colors;
bool MonoPanner::have_colors = false;
-MonoPanner::MonoPanner (boost::shared_ptr<PBD::Controllable> position)
- : position_control (position)
+MonoPanner::MonoPanner (boost::shared_ptr<ARDOUR::Panner> panner)
+ : _panner (panner)
+ , position_control (_panner->pannable()->pan_azimuth_control)
, dragging (false)
, drag_start_x (0)
, last_drag_x (0)
, detented (false)
, drag_data_window (0)
, drag_data_label (0)
- , position_binder (position)
+ , position_binder (position_control)
{
if (!have_colors) {
set_colors ();
}
if (Keyboard::modifier_state_contains (ev->state, Keyboard::TertiaryModifier)) {
- /* reset to default */
- position_control->set_value (0.5);
+ _panner->reset ();
} else {
StopGesture ();
}
class MonoPanner : public Gtk::DrawingArea
{
public:
- MonoPanner (boost::shared_ptr<PBD::Controllable> pos);
+ MonoPanner (boost::shared_ptr<ARDOUR::Panner>);
~MonoPanner ();
boost::shared_ptr<PBD::Controllable> get_controllable() const { return position_control; }
bool on_leave_notify_event (GdkEventCrossing* ev);
private:
+ boost::shared_ptr<ARDOUR::Panner> _panner;
boost::shared_ptr<PBD::Controllable> position_control;
PBD::ScopedConnectionList connections;
bool dragging;
boost::shared_ptr<Pannable> pannable = _panner->pannable();
boost::shared_ptr<AutomationControl> ac = pannable->pan_azimuth_control;
- mp = new MonoPanner (ac);
+ mp = new MonoPanner (_panner);
mp->StartGesture.connect (sigc::bind (sigc::mem_fun (*this, &PannerUI::start_touch),
boost::weak_ptr<AutomationControl> (ac)));
return false;
}
- bool dp = dragging_position;
+ bool const dp = dragging_position;
dragging = false;
dragging_position = false;
}
if (Keyboard::modifier_state_contains (ev->state, Keyboard::TertiaryModifier)) {
- /* reset to default */
- position_control->set_value (0.5);
- width_control->set_value (1.0);
+ _panner->reset ();
} else {
if (dp) {
StopPositionGesture ();
virtual PBD::AngularVector signal_position (uint32_t) const { return PBD::AngularVector(); }
- virtual void reset() {}
+ virtual void reset () = 0;
void set_automation_state (AutoState);
AutoState automation_state() const;
return _pannable->value_as_string (ac);
}
}
+
+void
+Panner1in2out::reset ()
+{
+ set_position (0.5);
+ update ();
+}
XMLNode& get_state ();
+ void reset ();
+
protected:
float left;
float right;
return _pannable->value_as_string (ac);
}
}
+
+void
+Panner2in2out::reset ()
+{
+ set_position (0.5);
+ set_width (1);
+ update ();
+}
void update ();
+ void reset ();
+
protected:
float left[2];
float right[2];
{
_pannable->pan_width_control->set_value (min (1.0, max (-1.0, w)));
}
+
+void
+VBAPanner::reset ()
+{
+ set_position (0);
+ set_width (1);
+
+ update ();
+}
PBD::AngularVector signal_position (uint32_t n) const;
boost::shared_ptr<Speakers> get_speakers() const;
+ void reset ();
+
private:
struct Signal {
PBD::AngularVector direction;