diff options
author | Johannes Mueller <github@johannes-mueller.org> | 2017-07-20 23:28:52 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-07-31 21:31:22 +0200 |
commit | 37b03e353a0513a07924c7e860a33e5ae233b57a (patch) | |
tree | 6f8519c4da528fb7032d7037f3b1b5c1198b0d50 /gtk2_ardour/plugin_display.h | |
parent | 660096b037885d28369eee36fc50cecd1e64b3e1 (diff) |
Put plugin inline display into a freely available class ...
... and let ProcessorBox::PluginInlineDisplay inherit from it.
Diffstat (limited to 'gtk2_ardour/plugin_display.h')
-rw-r--r-- | gtk2_ardour/plugin_display.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/gtk2_ardour/plugin_display.h b/gtk2_ardour/plugin_display.h new file mode 100644 index 0000000000..4828ee7739 --- /dev/null +++ b/gtk2_ardour/plugin_display.h @@ -0,0 +1,55 @@ +/* + Copyright (C) 2017 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 __ardour_plugin_display__ +#define __ardour_plugin_display__ + +#include <gtkmm/drawingarea.h> + +#include "ardour/plugin.h" + +class PluginDisplay : public Gtk::DrawingArea +{ +public: + PluginDisplay(boost::shared_ptr<ARDOUR::Plugin>, uint32_t max_height = 80); + virtual ~PluginDisplay(); + +protected: + bool on_expose_event (GdkEventExpose *); + void on_size_request (Gtk::Requisition* req); + bool on_button_press_event (GdkEventButton *ev); + bool on_button_release_event (GdkEventButton *ev); + + void plugin_going_away () { + _qdraw_connection.disconnect (); + } + + void update_height_alloc (uint32_t inline_height); + virtual uint32_t render_inline (cairo_t *, uint32_t width); + + boost::shared_ptr<ARDOUR::Plugin> _plug; + PBD::ScopedConnection _qdraw_connection; + PBD::ScopedConnection _death_connection; + cairo_surface_t* _surf; + uint32_t _max_height; + uint32_t _cur_height; + bool _scroll; +}; + +#endif |