X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fpush2%2Fmenu.h;fp=libs%2Fsurfaces%2Fpush2%2Fmenu.h;h=1e6e3d6d1041f5c755a8a3ed8fced0277ee7c0a8;hb=7c9f3acc60fb29a562d28d1f43a9e22298545bf1;hp=946d2df56d5c3262dd6e2c765e81353d4290dc8d;hpb=2810e5619a1926a286c6192143ada4973066efd8;p=ardour.git diff --git a/libs/surfaces/push2/menu.h b/libs/surfaces/push2/menu.h index 946d2df56d..1e6e3d6d10 100644 --- a/libs/surfaces/push2/menu.h +++ b/libs/surfaces/push2/menu.h @@ -19,20 +19,30 @@ #ifndef __ardour_push2_menu_h__ #define __ardour_push2_menu_h__ -#include -#include +namespace Cairo { + class Context; + class Region; +} + #include #include "pbd/signals.h" +#include "canvas/container.h" + +namespace ArdourCanvas { + class Text; + class Rectangle; +} + namespace ArdourSurface { -class Push2Menu { +class Push2Menu : public ArdourCanvas::Container +{ public: - Push2Menu (Cairo::RefPtr); + Push2Menu (ArdourCanvas::Item* parent); - void redraw (Cairo::RefPtr, bool force) const; - bool dirty () const { return _dirty; } + void render (ArdourCanvas::Rect const& area, Cairo::RefPtr context) const; void fill_column (int col, std::vector); void set_active (int col, int index); @@ -45,7 +55,8 @@ class Push2Menu { private: struct Column { std::vector text; - Glib::RefPtr layout; + ArdourCanvas::Rectangle* active_bg; + ArdourCanvas::Text* lines; int top; int active; }; @@ -56,9 +67,7 @@ class Push2Menu { void set_text (int col, int top); int nrows; - double baseline; - - mutable bool _dirty; + mutable double baseline; }; } // namespace