- cairo_text_extents (cr, bc.bundle->channel_name(bc.channel).c_str(), &ext);
- double const off = (row_height() - ext.height) / 2;
-
- set_source_rgb (cr, text_colour());
- cairo_move_to (cr, port_name_x() + xoff + name_pad(), yoff + name_pad() + off);
- cairo_show_text (cr, bc.bundle->channel_name(bc.channel).c_str());
+ cairo_text_extents (cr, b->name().c_str(), &ext);
+ double const off = (grid_spacing() - ext.height) / 2;
+
+ Gdk::Color textcolor;
+ ARDOUR_UI_UTILS::set_color_from_rgba(textcolor, ArdourCanvas::contrasting_text_color(ARDOUR_UI_UTILS::gdk_color_to_rgba(bg_colour)));
+ set_source_rgb (cr, textcolor);
+ cairo_move_to (cr, xoff + x + name_pad(), yoff + name_pad() + off);
+ cairo_show_text (cr, b->name().c_str());
+}
+
+void
+PortMatrixRowLabels::render_channel_name (
+ cairo_t* cr, Gdk::Color fg_colour, Gdk::Color bg_colour, double xoff, double yoff, ARDOUR::BundleChannel const& bc
+ )
+{
+ set_source_rgb (cr, bg_colour);
+ cairo_rectangle (cr, port_name_x() + xoff, yoff, _longest_port_name + name_pad() * 2, grid_spacing());
+ cairo_fill_preserve (cr);
+ set_source_rgb (cr, fg_colour);
+ cairo_set_line_width (cr, label_border_width ());
+ cairo_stroke (cr);
+
+ if (_matrix->count_of_our_type (bc.bundle->nchannels()) > 1) {
+
+ /* only plot the name if the bundle has more than one channel;
+ the name of a single channel is assumed to be redundant */
+
+ cairo_text_extents_t ext;
+ cairo_text_extents (cr, bc.bundle->channel_name(bc.channel).c_str(), &ext);
+ double const off = (grid_spacing() - ext.height) / 2;
+
+ Gdk::Color textcolor;
+ ARDOUR_UI_UTILS::set_color_from_rgba(textcolor, ArdourCanvas::contrasting_text_color(ARDOUR_UI_UTILS::gdk_color_to_rgba(bg_colour)));
+ set_source_rgb (cr, textcolor);
+ cairo_move_to (cr, port_name_x() + xoff + name_pad(), yoff + name_pad() + off);
+ cairo_show_text (cr, bc.bundle->channel_name(bc.channel).c_str());
+ }