diff options
author | Hans Baier <hansfbaier@googlemail.com> | 2008-12-24 01:24:49 +0000 |
---|---|---|
committer | Hans Baier <hansfbaier@googlemail.com> | 2008-12-24 01:24:49 +0000 |
commit | e2147fbc5bf0546fcafa32fe1d87f6e6d1b652c4 (patch) | |
tree | 8dbce0956cfa1bb33f75cc5cd5e1bfc58633fc63 /gtk2_ardour/canvas-note-event.cc | |
parent | 2a2067388314ae1695f3be4d6ea9e3c3628f91ba (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.cc | 39 |
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; |