#include "port_matrix_body.h"
#include "utils.h"
+#include "i18n.h"
+
using namespace std;
PortMatrixColumnLabels::PortMatrixColumnLabels (PortMatrix* m, PortMatrixBody* b)
for (PortGroup::BundleList::const_iterator j = c.begin (); j != c.end(); ++j) {
cairo_text_extents_t ext;
- cairo_text_extents (cr, j->bundle->name().c_str(), &ext);
+ cairo_text_extents (cr, (*j)->bundle->name().c_str(), &ext);
if (ext.width > _longest_bundle_name) {
_longest_bundle_name = ext.width;
}
- for (uint32_t k = 0; k < j->bundle->nchannels (); ++k) {
+ for (uint32_t k = 0; k < (*j)->bundle->nchannels().n_total(); ++k) {
+
+ if (!_matrix->should_show ((*j)->bundle->channel_type(k))) {
+ continue;
+ }
cairo_text_extents (
cr,
- j->bundle->channel_name (k).c_str(),
+ (*j)->bundle->channel_name (k).c_str(),
&ext
);
}
cairo_destroy (cr);
- gdk_pixmap_unref (pm);
+ g_object_unref (pm);
/* height of the whole thing */
PortGroup::BundleList const & bundles = _matrix->visible_columns()->bundles ();
for (PortGroup::BundleList::const_iterator i = bundles.begin (); i != bundles.end(); ++i) {
- Gdk::Color c = i->has_colour ? i->colour : get_a_bundle_colour (N);
- render_bundle_name (cr, background_colour (), c, x, 0, i->bundle);
+ bool should_show_this_bundle = false;
+ for (uint32_t j = 0; j < (*i)->bundle->nchannels().n_total(); ++j) {
+ if (_matrix->should_show ((*i)->bundle->channel_type (j))) {
+ should_show_this_bundle = true;
+ break;
+ }
+ }
+
+ if (should_show_this_bundle) {
+ Gdk::Color c = (*i)->has_colour ? (*i)->colour : get_a_bundle_colour (N);
+ render_bundle_name (cr, background_colour (), c, x, 0, (*i)->bundle);
+ }
if (_matrix->show_only_bundles()) {
x += grid_spacing();
} else {
- x += i->bundle->nchannels () * grid_spacing();
+ x += _matrix->count_of_our_type ((*i)->bundle->nchannels()) * grid_spacing();
}
++N;
for (PortGroup::BundleList::const_iterator i = bundles.begin (); i != bundles.end(); ++i) {
- for (uint32_t j = 0; j < i->bundle->nchannels(); ++j) {
- Gdk::Color c = i->has_colour ? i->colour : get_a_bundle_colour (N);
- render_channel_name (cr, background_colour (), c, x, 0, ARDOUR::BundleChannel (i->bundle, j));
+ for (uint32_t j = 0; j < (*i)->bundle->nchannels().n_total(); ++j) {
+
+ if (!_matrix->should_show ((*i)->bundle->channel_type(j))) {
+ continue;
+ }
+
+ Gdk::Color c = (*i)->has_colour ? (*i)->colour : get_a_bundle_colour (N);
+ render_channel_name (cr, background_colour (), c, x, 0, ARDOUR::BundleChannel ((*i)->bundle, j));
x += grid_spacing();
}
if (_matrix->show_only_bundles()) {
w = grid_spacing ();
} else {
- w = b->nchannels() * grid_spacing();
+ w = _matrix->count_of_our_type (b->nchannels()) * grid_spacing();
}
double x_ = xoff;
);
}
- if (bc.bundle->nchannels() > 1) {
+ 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 */
list<PortMatrixNode> n;
- for (uint32_t i = 0; i < w.bundle->nchannels(); ++i) {
+ for (uint32_t i = 0; i < w.bundle->nchannels().n_total(); ++i) {
+
+ if (!_matrix->should_show (w.bundle->channel_type(i))) {
+ continue;
+ }
+
ARDOUR::BundleChannel const bc (w.bundle, i);
n.push_back (PortMatrixNode (ARDOUR::BundleChannel (), bc));
}