summaryrefslogtreecommitdiff
path: root/gtk2_ardour/canvas-note-event.cc
diff options
context:
space:
mode:
authorHans Baier <hansfbaier@googlemail.com>2008-12-24 01:24:49 +0000
committerHans Baier <hansfbaier@googlemail.com>2008-12-24 01:24:49 +0000
commite2147fbc5bf0546fcafa32fe1d87f6e6d1b652c4 (patch)
tree8dbce0956cfa1bb33f75cc5cd5e1bfc58633fc63 /gtk2_ardour/canvas-note-event.cc
parent2a2067388314ae1695f3be4d6ea9e3c3628f91ba (diff)
* implemented three coloring modes for MIDI tracks (untested yet)
git-svn-id: svn://localhost/ardour2/branches/3.0@4344 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/canvas-note-event.cc')
-rw-r--r--gtk2_ardour/canvas-note-event.cc39
1 files changed, 32 insertions, 7 deletions
diff --git a/gtk2_ardour/canvas-note-event.cc b/gtk2_ardour/canvas-note-event.cc
index e4bbe038c0..e5ff6abf46 100644
--- a/gtk2_ardour/canvas-note-event.cc
+++ b/gtk2_ardour/canvas-note-event.cc
@@ -75,7 +75,7 @@ void
CanvasNoteEvent::show_velocity()
{
hide_velocity();
- _text = new Text(*(_item->property_parent()));
+ _text = new InteractiveText(*(_item->property_parent()));
_text->property_x() = (x1() + x2()) /2;
_text->property_y() = (y1() + y2()) /2;
ostringstream velo(ios::ate);
@@ -158,24 +158,47 @@ CanvasNoteEvent::hide_channel_selector(void)
}
void
-CanvasNoteEvent::selected(bool yn)
+CanvasNoteEvent::selected(bool selected)
{
if (!_note) {
return;
- } else if (yn) {
- set_fill_color(UINT_INTERPOLATE(meter_style_fill_color(_note->velocity()),
+ } else if (selected) {
+ set_fill_color(UINT_INTERPOLATE(base_color(),
ARDOUR_UI::config()->canvasvar_MidiNoteSelected.get(), 0.1));
set_outline_color(calculate_outline(ARDOUR_UI::config()->canvasvar_MidiNoteSelected.get()));
show_velocity();
} else {
- set_fill_color(meter_style_fill_color(_note->velocity()));
- set_outline_color(meter_style_outline_color(_note->velocity()));
+ set_fill_color(base_color());
+ set_outline_color(calculate_outline(base_color()));
hide_velocity();
}
- _selected = yn;
+ _selected = selected;
}
+uint32_t
+CanvasNoteEvent::base_color()
+{
+ using namespace ARDOUR;
+
+ ColorMode mode = _region.color_mode();
+
+ switch (mode) {
+ case TrackColor:
+ {
+ Gdk::Color color = _region.midi_stream_view()->get_region_color();
+ return RGBA_TO_UINT(color.get_red(), color.get_green(), color.get_blue(), 0xff);
+ }
+
+ case ChannelColors:
+ return CanvasNoteEvent::midi_channel_colors[_note->channel()];
+
+ default:
+ return meter_style_fill_color(_note->velocity());
+ };
+
+ return 0;
+}
bool
CanvasNoteEvent::on_event(GdkEvent* ev)
@@ -188,6 +211,8 @@ CanvasNoteEvent::on_event(GdkEvent* ev)
bool select_mod;
uint8_t d_velocity = 10;
+ cerr << "CanvasNoteEvent::on_event(GdkEvent* ev)" << endl;
+
if (_region.get_time_axis_view().editor.current_mouse_mode() != Editing::MouseNote)
return false;