+/*
+ 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 <iostream>
#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)
}
-PannerBar::PannerBar (Gtk::Adjustment& adj, PBD::Controllable& c)
+PannerBar::PannerBar (Gtk::Adjustment& adj, boost::shared_ptr<PBD::Controllable> c)
: BarController (adj, c, sigc::ptr_fun (null_label_callback))
{
-
+ set_style (BarController::Line);
}
PannerBar::~PannerBar ()
GdkPoint points[3];
+ // left
-
points[0].x = 0;
points[0].y = 0;
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);
- points[0].x = darea.get_width() - triangle_size;
+ // right
+
+ points[0].x = (darea.get_width() - triangle_size);
points[0].y = 0;
points[1].x = darea.get_width();
{
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));
}
}
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);
}
+