X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fpanner.cc;h=2607cdf2b85e3ac3f346acd05aead4f04fd0594e;hb=1aba241919420198c82f31cffa11f6c8189747fb;hp=acf06c4b07f8d0de235f0bb858b51e58a799108d;hpb=4d6bfa3d473560153bddd21ff750da48a2bf4891;p=ardour.git diff --git a/gtk2_ardour/panner.cc b/gtk2_ardour/panner.cc index acf06c4b07..2607cdf2b8 100644 --- a/gtk2_ardour/panner.cc +++ b/gtk2_ardour/panner.cc @@ -1,10 +1,29 @@ +/* + Copyright (C) 2000-2007 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + #include #include "panner.h" using namespace std; -static const int triangle_size = 9; +static const int triangle_size = 5; static void null_label_callback (char* buf, unsigned int bufsize) @@ -15,8 +34,8 @@ null_label_callback (char* buf, unsigned int bufsize) } -PannerBar::PannerBar (Gtk::Adjustment& adj, PBD::Controllable& c) - : BarController (adj, c, sigc::ptr_fun (null_label_callback)) +PannerBar::PannerBar (Gtk::Adjustment& adj, boost::shared_ptr c) + : BarController (adj, *c.get(), sigc::ptr_fun (null_label_callback)) { set_style (BarController::Line); } @@ -37,8 +56,8 @@ PannerBar::expose (GdkEventExpose* ev) GdkPoint points[3]; + // left - points[0].x = 0; points[0].y = 0; @@ -50,18 +69,22 @@ PannerBar::expose (GdkEventExpose* ev) gdk_draw_polygon (win->gobj(), gc->gobj(), true, points, 3); - points[0].x = darea.get_width()/2 - (triangle_size - 2); + // center + + points[0].x = (darea.get_width()/2 - triangle_size); points[0].y = 0; - points[1].x = darea.get_width()/2 + (triangle_size - 2); + points[1].x = (darea.get_width()/2 + triangle_size); points[1].y = 0; points[2].x = darea.get_width()/2; - points[2].y = triangle_size - 2; + points[2].y = triangle_size - 1; - gdk_draw_polygon (win->gobj(), gc->gobj(), true, points, 3); + gdk_draw_polygon (win->gobj(), gc->gobj(), true, points, 3); + + // right - points[0].x = darea.get_width() - triangle_size; + points[0].x = (darea.get_width() - triangle_size); points[0].y = 0; points[1].x = darea.get_width(); @@ -80,12 +103,12 @@ PannerBar::button_press (GdkEventButton* ev) { if (ev->button == 1 && ev->type == GDK_BUTTON_PRESS && ev->y < 10) { if (ev->x < triangle_size) { - return true; + adjustment.set_value (adjustment.get_lower()); } else if (ev->x > (darea.get_width() - triangle_size)) { - return true; + adjustment.set_value (adjustment.get_upper()); } else if (ev->x > (darea.get_width()/2 - triangle_size) && ev->x < (darea.get_width()/2 + triangle_size)) { - return true; + adjustment.set_value (adjustment.get_lower() + ((adjustment.get_upper() - adjustment.get_lower()) / 2.0)); } } @@ -95,19 +118,6 @@ PannerBar::button_press (GdkEventButton* ev) bool PannerBar::button_release (GdkEventButton* ev) { - if (ev->button == 1 && ev->type == GDK_BUTTON_RELEASE && ev->y < 10) { - if (ev->x < triangle_size) { - adjustment.set_value (adjustment.get_lower()); - return true; - } else if (ev->x > (darea.get_width() - triangle_size)) { - adjustment.set_value (adjustment.get_upper()); - return true; - } else if (ev->x > (darea.get_width()/2 - triangle_size) && - ev->x < (darea.get_width()/2 + triangle_size)) { - adjustment.set_value (adjustment.get_lower() + ((adjustment.get_upper() - adjustment.get_lower()) / 2.0)); - return true; - } - } - return BarController::button_release (ev); } +