X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fcairo_widget.h;h=d3eac0bb0227c10f6a1fbbff3098c16ba568b6a3;hb=5b45dc04dfba73846893a8c591c4175c20b3415f;hp=99f0d5d8c3302e6f1f392660d37124ac5488b6f1;hpb=596463e0eb0acad0eb29d93dc848ac9eee8eeed4;p=ardour.git diff --git a/gtk2_ardour/cairo_widget.h b/gtk2_ardour/cairo_widget.h index 99f0d5d8c3..d3eac0bb02 100644 --- a/gtk2_ardour/cairo_widget.h +++ b/gtk2_ardour/cairo_widget.h @@ -1,7 +1,30 @@ +/* + Copyright (C) 2009 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + #ifndef __gtk2_ardour_cairo_widget_h__ #define __gtk2_ardour_cairo_widget_h__ #include +#include "gtkmm2ext/widget_state.h" + +/** A parent class for widgets that are rendered using Cairo. + */ class CairoWidget : public Gtk::EventBox { @@ -11,17 +34,30 @@ public: void set_dirty (); + Gtkmm2ext::ActiveState active_state() const { return _active_state; } + Gtkmm2ext::VisualState visual_state() const { return _visual_state; } + virtual void set_active_state (Gtkmm2ext::ActiveState); + virtual void set_visual_state (Gtkmm2ext::VisualState); + virtual void unset_active_state () { set_active_state (Gtkmm2ext::ActiveState (0)); } + virtual void unset_visual_state () { set_visual_state (Gtkmm2ext::VisualState (0)); } + + sigc::signal StateChanged; + protected: + /** Render the widget to the given Cairo context */ virtual void render (cairo_t *) = 0; virtual bool on_expose_event (GdkEventExpose *); void on_size_allocate (Gtk::Allocation &); + void on_state_changed (Gtk::StateType); + Gdk::Color get_parent_bg (); int _width; ///< pixmap width int _height; ///< pixmap height - + Gtkmm2ext::ActiveState _active_state; + Gtkmm2ext::VisualState _visual_state; + private: - bool _dirty; - GdkPixmap* _pixmap; + GdkPixmap* _pixmap; ///< our pixmap }; #endif