From 2daa616e02aeaf40d898b0c61e4993c3952235e5 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 22 Feb 2011 21:55:25 +0000 Subject: add scroll event handling to the vbap panner GUI; clamp vbap pos+width values (but not via clamp_*()) git-svn-id: svn://localhost/ardour2/branches/3.0@8932 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/audio_time_axis.cc | 2 -- gtk2_ardour/panner2d.cc | 18 ++++++++++++++++++ gtk2_ardour/panner2d.h | 1 + libs/panners/vbap/vbap.cc | 13 ++++++++++--- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc index c516985671..f43d3739cc 100644 --- a/gtk2_ardour/audio_time_axis.cc +++ b/gtk2_ardour/audio_time_axis.cc @@ -225,8 +225,6 @@ AudioTimeAxisView::ensure_pan_views (bool show) set params = _route->panner()->what_can_be_automated(); set::iterator p; - cerr << _route->name() << " the panner has " << params.size() << " params that can be automated\n"; - for (p = params.begin(); p != params.end(); ++p) { boost::shared_ptr pan_control = _route->pannable()->automation_control(*p); diff --git a/gtk2_ardour/panner2d.cc b/gtk2_ardour/panner2d.cc index a953105c1a..7d29e5caea 100644 --- a/gtk2_ardour/panner2d.cc +++ b/gtk2_ardour/panner2d.cc @@ -285,6 +285,7 @@ Panner2d::on_motion_notify_event (GdkEventMotion *ev) return handle_motion (x, y, state); } + bool Panner2d::on_expose_event (GdkEventExpose *event) { @@ -536,6 +537,23 @@ Panner2d::handle_motion (gint evx, gint evy, GdkModifierType state) return true; } +bool +Panner2d::on_scroll_event (GdkEventScroll* ev) +{ + switch (ev->direction) { + case GDK_SCROLL_UP: + case GDK_SCROLL_RIGHT: + panner->set_position (panner->pannable()->pan_azimuth_control->get_value() - 1.0/360.0); + break; + + case GDK_SCROLL_DOWN: + case GDK_SCROLL_LEFT: + panner->set_position (panner->pannable()->pan_azimuth_control->get_value() + 1.0/360.0); + break; + } + return true; +} + void Panner2d::cart_to_gtk (CartesianVector& c) const { diff --git a/gtk2_ardour/panner2d.h b/gtk2_ardour/panner2d.h index 5b2c936b6a..1672edef90 100644 --- a/gtk2_ardour/panner2d.h +++ b/gtk2_ardour/panner2d.h @@ -77,6 +77,7 @@ class Panner2d : public Gtk::DrawingArea bool on_button_press_event (GdkEventButton *); bool on_button_release_event (GdkEventButton *); bool on_motion_notify_event (GdkEventMotion *); + bool on_scroll_event (GdkEventScroll *); void on_size_allocate (Gtk::Allocation& alloc); private: diff --git a/libs/panners/vbap/vbap.cc b/libs/panners/vbap/vbap.cc index 67e225b8aa..99a83d4106 100644 --- a/libs/panners/vbap/vbap.cc +++ b/libs/panners/vbap/vbap.cc @@ -436,12 +436,19 @@ VBAPanner::get_speakers () const void VBAPanner::set_position (double p) { + if (p < 0.0) { + p = 1.0 + p; + } + + if (p > 1.0) { + p = fmod (p, 1.0); + } + _pannable->pan_azimuth_control->set_value (p); } void -VBAPanner::set_width (double p) +VBAPanner::set_width (double w) { - _pannable->pan_width_control->set_value (p); + _pannable->pan_width_control->set_value (min (1.0, max (-1.0, w))); } - -- cgit v1.2.3