Initial revision
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / pixscroller.h
1 #ifndef __gtkmm2ext_pixscroller_h__ 
2 #define __gtkmm2ext_pixscroller_h__
3
4 #include <gtkmm/drawingarea.h>
5 #include <gtkmm/adjustment.h>
6 #include <gdkmm.h>
7
8 #include <gtkmm2ext/pix.h>
9
10 namespace Gtkmm2ext {
11
12 class PixScroller : public Gtk::DrawingArea
13 {
14   public:
15         PixScroller(Gtk::Adjustment& adjustment, Pix&);
16
17         
18         bool on_expose_event (GdkEventExpose*);
19         bool on_motion_notify_event (GdkEventMotion*);
20         bool on_button_press_event (GdkEventButton*);
21         bool on_button_release_event (GdkEventButton*);
22         void on_size_request (GtkRequisition*);
23         
24   protected:
25         Gtk::Adjustment& adj;
26
27   private:
28         Glib::RefPtr<Gdk::Pixmap> rail;
29         Glib::RefPtr<Gdk::Pixmap> slider;
30         Glib::RefPtr<Gdk::Bitmap> rail_mask;
31         Glib::RefPtr<Gdk::Bitmap> slider_mask;
32         Gdk::Rectangle sliderrect;
33         Gdk::Rectangle railrect;
34         GdkWindow* grab_window;
35         double grab_y;
36         double grab_start;
37         int overall_height;
38         bool dragging;
39         
40         float default_value;
41
42         void adjustment_changed ();
43 };
44
45 } // namespace
46
47 #endif /* __gtkmm2ext_pixscroller_h__ */