Provide a visual cue to indicate that MIDI and audio ports cannot be connected to each other in the port matrix.
git-svn-id: svn://localhost/ardour2/branches/3.0@7463 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
75fb4557e5
commit
8b0e35cba4
@ -137,7 +137,7 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** @return colour to paint grid squares when they can't be associated */
|
/** @return colour to paint grid squares when they can't be associated */
|
||||||
static Gdk::Color unknown_colour () {
|
static Gdk::Color non_connectable_colour () {
|
||||||
return Gdk::Color ("#cccccc");
|
return Gdk::Color ("#cccccc");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,7 +127,11 @@ PortMatrixGrid::render (cairo_t* cr)
|
|||||||
++N;
|
++N;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ASSOCIATION INDICATORS */
|
/* ASSOCIATION INDICATORS and NON-CONNECTABLE INDICATORS */
|
||||||
|
|
||||||
|
/* we draw a grey square in a matrix box if the two ports that intersect at that box
|
||||||
|
cannot be connected because they are of different types (MIDI vs. audio)
|
||||||
|
*/
|
||||||
|
|
||||||
uint32_t bx = 0;
|
uint32_t bx = 0;
|
||||||
uint32_t by = 0;
|
uint32_t by = 0;
|
||||||
@ -182,6 +186,11 @@ PortMatrixGrid::render (cairo_t* cr)
|
|||||||
c[_matrix->column_index()] = ARDOUR::BundleChannel ((*i)->bundle, k);
|
c[_matrix->column_index()] = ARDOUR::BundleChannel ((*i)->bundle, k);
|
||||||
c[_matrix->row_index()] = ARDOUR::BundleChannel ((*j)->bundle, l);
|
c[_matrix->row_index()] = ARDOUR::BundleChannel ((*j)->bundle, l);
|
||||||
|
|
||||||
|
if (c[0].bundle->channel_type (c[0].channel) != c[1].bundle->channel_type (c[1].channel)) {
|
||||||
|
/* these two channels are of different types */
|
||||||
|
draw_non_connectable_indicator (cr, x, y);
|
||||||
|
} else {
|
||||||
|
/* these two channels might be associated */
|
||||||
PortMatrixNode::State const s = _matrix->get_state (c);
|
PortMatrixNode::State const s = _matrix->get_state (c);
|
||||||
|
|
||||||
switch (s) {
|
switch (s) {
|
||||||
@ -195,6 +204,7 @@ PortMatrixGrid::render (cairo_t* cr)
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
y += grid_spacing();
|
y += grid_spacing();
|
||||||
}
|
}
|
||||||
@ -241,6 +251,23 @@ PortMatrixGrid::draw_empty_square (cairo_t* cr, uint32_t x, uint32_t y)
|
|||||||
cairo_fill (cr);
|
cairo_fill (cr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Draw a square to indicate that two channels in a matrix cannot be associated
|
||||||
|
* with each other.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
PortMatrixGrid::draw_non_connectable_indicator (cairo_t* cr, uint32_t x, uint32_t y)
|
||||||
|
{
|
||||||
|
set_source_rgb (cr, non_connectable_colour ());
|
||||||
|
cairo_rectangle (
|
||||||
|
cr,
|
||||||
|
x + thick_grid_line_width(),
|
||||||
|
y + thick_grid_line_width(),
|
||||||
|
grid_spacing() - 2 * thick_grid_line_width(),
|
||||||
|
grid_spacing() - 2 * thick_grid_line_width()
|
||||||
|
);
|
||||||
|
cairo_fill (cr);
|
||||||
|
}
|
||||||
|
|
||||||
PortMatrixNode
|
PortMatrixNode
|
||||||
PortMatrixGrid::position_to_node (double x, double y) const
|
PortMatrixGrid::position_to_node (double x, double y) const
|
||||||
{
|
{
|
||||||
|
@ -62,6 +62,7 @@ private:
|
|||||||
void queue_draw_for (std::list<PortMatrixNode> const &);
|
void queue_draw_for (std::list<PortMatrixNode> const &);
|
||||||
void draw_association_indicator (cairo_t *, uint32_t, uint32_t, double p = 1);
|
void draw_association_indicator (cairo_t *, uint32_t, uint32_t, double p = 1);
|
||||||
void draw_empty_square (cairo_t *, uint32_t, uint32_t);
|
void draw_empty_square (cairo_t *, uint32_t, uint32_t);
|
||||||
|
void draw_non_connectable_indicator (cairo_t *, uint32_t, uint32_t);
|
||||||
std::list<PortMatrixNode> nodes_on_line (int, int, int, int) const;
|
std::list<PortMatrixNode> nodes_on_line (int, int, int, int) const;
|
||||||
PortMatrixNode::State get_association (PortMatrixNode) const;
|
PortMatrixNode::State get_association (PortMatrixNode) const;
|
||||||
void set_association (PortMatrixNode, bool);
|
void set_association (PortMatrixNode, bool);
|
||||||
|
Loading…
Reference in New Issue
Block a user