change FastMeter drawing implementation to use Cairo instead of GDK; some subtle...
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / pixfader.h
index a8d54abb59e67267d711f86c30bbfc46b924cf6c..00a42769beeab7f1d65359f5dce9e94b55edd60b 100644 (file)
 #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 {
 
@@ -35,7 +36,8 @@ class PixFader : public Gtk::DrawingArea
        virtual ~PixFader ();
 
        void set_fader_length (int);
-       
+        void set_border_colors (uint32_t rgba_left, uint32_t rgba_right);
+
   protected:
        Gtk::Adjustment& adjustment;
 
@@ -54,10 +56,18 @@ class PixFader : public Gtk::DrawingArea
                HORIZ=2,
        };
 
-  private:
-       Glib::RefPtr<Gdk::Pixbuf> pixbuf;
+  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;
 
@@ -70,8 +80,8 @@ class PixFader : public Gtk::DrawingArea
        int unity_loc;
 
        void adjustment_changed ();
-
        int display_span ();
+       void set_adjustment_from_event (GdkEventButton *);
 
        static int fine_scale_modifier;
        static int extra_fine_scale_modifier;