From 4a60c277dbf28b5fd371a04e5d7ca3d7b8df669f Mon Sep 17 00:00:00 2001 From: Johannes Mueller Date: Fri, 21 Jul 2017 00:37:07 +0200 Subject: [PATCH] Some abstractions to make the display look good in the plugin gui --- gtk2_ardour/plugin_display.cc | 16 +++++++++++++--- gtk2_ardour/plugin_display.h | 2 ++ gtk2_ardour/processor_box.cc | 6 ++++++ gtk2_ardour/processor_box.h | 2 ++ 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/gtk2_ardour/plugin_display.cc b/gtk2_ardour/plugin_display.cc index ed95e9aa5a..b04eb271b7 100644 --- a/gtk2_ardour/plugin_display.cc +++ b/gtk2_ardour/plugin_display.cc @@ -153,7 +153,7 @@ PluginDisplay::on_expose_event (GdkEventExpose* ev) cairo_save (cr); cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - Gtkmm2ext::rounded_rectangle (cr, .5, -1.5, width - 1, height + 1, 7); + display_frame(cr, width, height); cairo_clip (cr); cairo_set_operator (cr, CAIRO_OPERATOR_OVER); @@ -176,12 +176,22 @@ PluginDisplay::on_expose_event (GdkEventExpose* ev) std::string name = get_name(); Gtkmm2ext::Color fill_color = UIConfiguration::instance().color (string_compose ("%1: fill active", name), &failed); - Gtkmm2ext::rounded_rectangle (cr, .5, -1.5, width - 1, height + 1, 7); + display_frame(cr, width, height); cairo_set_operator (cr, CAIRO_OPERATOR_OVER); cairo_set_line_width(cr, 1.0); - Gtkmm2ext::set_source_rgb_a (cr, fill_color, 1.0); + if (failed) { + cairo_set_source_rgba (cr, .75, .75, .75, 1.0); + } else { + Gtkmm2ext::set_source_rgb_a (cr, fill_color, 1.0); + } cairo_stroke (cr); cairo_destroy(cr); return true; } + +void +PluginDisplay::display_frame (cairo_t* cr, double w, double h) +{ + cairo_rectangle (cr, 0.0, 0.0, w, h); +} diff --git a/gtk2_ardour/plugin_display.h b/gtk2_ardour/plugin_display.h index 4828ee7739..4a2587e79f 100644 --- a/gtk2_ardour/plugin_display.h +++ b/gtk2_ardour/plugin_display.h @@ -43,6 +43,8 @@ protected: void update_height_alloc (uint32_t inline_height); virtual uint32_t render_inline (cairo_t *, uint32_t width); + virtual void display_frame (cairo_t* cr, double w, double h); + boost::shared_ptr _plug; PBD::ScopedConnection _qdraw_connection; PBD::ScopedConnection _death_connection; diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index 476d6c0995..a25ac0de40 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -1646,6 +1646,12 @@ ProcessorEntry::PluginInlineDisplay::update_height_alloc (uint32_t inline_height _scroll = sc; } +void +ProcessorEntry::PluginInlineDisplay::display_frame (cairo_t* cr, double w, double h) +{ + Gtkmm2ext::rounded_rectangle (cr, .5, -1.5, w - 1, h + 1, 7); +} + ProcessorEntry::LuaPluginDisplay::LuaPluginDisplay (ProcessorEntry& e, boost::shared_ptr p, uint32_t max_height) : PluginInlineDisplay (e, p, max_height) , _luaproc (p) diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index 34fac115ca..400b9fafc9 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -255,6 +255,8 @@ private: bool on_button_press_event (GdkEventButton *ev); void update_height_alloc (uint32_t inline_height); + void display_frame (cairo_t* cr, double w, double h); + ProcessorEntry& _entry; bool _scroll; };