diff options
Diffstat (limited to 'libs/gtkmm2ext/gtkmm2ext/fastmeter.h')
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/fastmeter.h | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/libs/gtkmm2ext/gtkmm2ext/fastmeter.h b/libs/gtkmm2ext/gtkmm2ext/fastmeter.h index 15c962deb4..8070748963 100644 --- a/libs/gtkmm2ext/gtkmm2ext/fastmeter.h +++ b/libs/gtkmm2ext/gtkmm2ext/fastmeter.h @@ -47,7 +47,8 @@ class FastMeter : public Gtk::DrawingArea { float stp0 = 55.0, // log_meter(-18); float stp1 = 77.5, // log_meter(-9); float stp2 = 92.5, // log_meter(-3); // 95.0, // log_meter(-2); - float stp3 = 100.0 + float stp3 = 100.0, + int styleflags = 3 ); virtual ~FastMeter (); @@ -67,7 +68,6 @@ protected: bool on_expose_event (GdkEventExpose*); void on_size_request (GtkRequisition*); void on_size_allocate (Gtk::Allocation&); - private: Cairo::RefPtr<Cairo::Pattern> fgpattern; @@ -79,6 +79,7 @@ private: int _clr[10]; int _bgc[2]; int _bgh[2]; + int _styleflags; Orientation orientation; GdkRectangle pixrect; @@ -94,19 +95,30 @@ private: bool highlight; bool vertical_expose (GdkEventExpose*); + void vertical_size_request (GtkRequisition*); + void vertical_size_allocate (Gtk::Allocation&); void queue_vertical_redraw (const Glib::RefPtr<Gdk::Window>&, float); + bool horizontal_expose (GdkEventExpose*); + void horizontal_size_request (GtkRequisition*); + void horizontal_size_allocate (Gtk::Allocation&); + void queue_horizontal_redraw (const Glib::RefPtr<Gdk::Window>&, float); + static bool no_rgba_overlay; static Cairo::RefPtr<Cairo::Pattern> generate_meter_pattern ( - int w, int h, int *clr, float *stp, bool shade); + int, int, int *, float *, int, bool); static Cairo::RefPtr<Cairo::Pattern> request_vertical_meter ( - int w, int h, int *clr, float *stp, bool shade); + int, int, int *, float *, int); + static Cairo::RefPtr<Cairo::Pattern> request_horizontal_meter ( + int, int, int *, float *, int); static Cairo::RefPtr<Cairo::Pattern> generate_meter_background ( - int w, int h, int *bgc, bool shade); + int, int, int *, bool, bool); static Cairo::RefPtr<Cairo::Pattern> request_vertical_background ( - int w, int h, int *bgc, bool shade); + int, int, int *, bool); + static Cairo::RefPtr<Cairo::Pattern> request_horizontal_background ( + int, int, int *, bool); struct Pattern10MapKey { Pattern10MapKey ( @@ -114,38 +126,45 @@ private: float stp0, float stp1, float stp2, float stp3, int c0, int c1, int c2, int c3, int c4, int c5, int c6, int c7, - int c8, int c9 + int c8, int c9, int st ) : dim(w, h) , stp(stp0, stp1, stp2, stp3) , cols(c0, c1, c2, c3, c4, c5, c6, c7, c8, c9) + , style(st) {} inline bool operator<(const Pattern10MapKey& rhs) const { return (dim < rhs.dim) || (dim == rhs.dim && stp < rhs.stp) - || (dim == rhs.dim && stp == rhs.stp && cols < rhs.cols); + || (dim == rhs.dim && stp == rhs.stp && cols < rhs.cols) + || (dim == rhs.dim && stp == rhs.stp && cols == rhs.cols && style < rhs.style); } boost::tuple<int, int> dim; boost::tuple<float, float, float, float> stp; boost::tuple<int, int, int, int, int, int, int, int, int, int> cols; + int style; }; typedef std::map<Pattern10MapKey, Cairo::RefPtr<Cairo::Pattern> > Pattern10Map; struct PatternBgMapKey { - PatternBgMapKey (int w, int h, int c0, int c1) + PatternBgMapKey (int w, int h, int c0, int c1, bool shade) : dim(w, h) , cols(c0, c1) + , sh(shade) {} inline bool operator<(const PatternBgMapKey& rhs) const { - return (dim < rhs.dim) || (dim == rhs.dim && cols < rhs.cols); + return (dim < rhs.dim) || (dim == rhs.dim && cols < rhs.cols) || (dim == rhs.dim && cols == rhs.cols && (sh && !rhs.sh)); } boost::tuple<int, int> dim; boost::tuple<int, int> cols; + bool sh; }; typedef std::map<PatternBgMapKey, Cairo::RefPtr<Cairo::Pattern> > PatternBgMap; static Pattern10Map vm_pattern_cache; static PatternBgMap vb_pattern_cache; + static Pattern10Map hm_pattern_cache; + static PatternBgMap hb_pattern_cache; static int min_pattern_metric_size; // min dimension for axis that displays the meter level static int max_pattern_metric_size; // max dimension for axis that displays the meter level }; |