along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: fastmeter.h 570 2006-06-07 21:21:21Z sampo $
*/
#ifndef __gtkmm2ext_pixfader_h__
#define __gtkmm2ext_pixfader_h__
#include <cmath>
+#include <stdint.h>
#include <gtkmm/drawingarea.h>
#include <gtkmm/adjustment.h>
-#include <gdkmm/pixbuf.h>
+#include <gdkmm.h>
namespace Gtkmm2ext {
-class PixFader : public Gtk::DrawingArea {
+class PixFader : public Gtk::DrawingArea
+{
public:
- PixFader (Glib::RefPtr<Gdk::Pixbuf> belt_image, Gtk::Adjustment& adjustment);
+ PixFader (Glib::RefPtr<Gdk::Pixbuf> belt_image, Gtk::Adjustment& adjustment, int orientation, int);
virtual ~PixFader ();
-
+
+ void set_fader_length (int);
+ void set_border_colors (uint32_t rgba_left, uint32_t rgba_right);
+
+ void set_default_value (float);
+
protected:
Gtk::Adjustment& adjustment;
bool on_button_release_event (GdkEventButton*);
bool on_motion_notify_event (GdkEventMotion*);
bool on_scroll_event (GdkEventScroll* ev);
-
- private:
- Glib::RefPtr<Gdk::Pixbuf> pixbuf;
- gint pixheight;
+ bool on_enter_notify_event (GdkEventCrossing* ev);
+ bool on_leave_notify_event (GdkEventCrossing* ev);
+
+ enum Orientation {
+ VERT=1,
+ HORIZ=2,
+ };
+
+ private:
+ Cairo::RefPtr<Cairo::Context> belt_context;
+ Cairo::RefPtr<Cairo::ImageSurface> belt_surface;
+ Glib::RefPtr<Gdk::Pixbuf> pixbuf;
+ int span, girth;
+ int _orien;
+ float left_r;
+ float left_g;
+ float left_b;
+ float right_r;
+ float right_g;
+ float right_b;
GdkRectangle view;
GdkWindow* grab_window;
- double grab_y;
+ double grab_loc;
double grab_start;
int last_drawn;
bool dragging;
float default_value;
- int unity_y;
+ int unity_loc;
void adjustment_changed ();
+ int display_span ();
+ void set_adjustment_from_event (GdkEventButton *);
+ void update_unity_position ();
- int display_height ();
+ static int fine_scale_modifier;
+ static int extra_fine_scale_modifier;
};