0x832dd3ff, 0xa92dd3ff, 0xd32dbfff, 0xd32d67ff
};
+bool NoteBase::_color_init = false;
+uint32_t NoteBase::_selected_mod_col = 0;
+uint32_t NoteBase::_selected_outline_col = 0;
+uint32_t NoteBase::_selected_col = 0;
+uint32_t NoteBase::_min_col = 0;
+uint32_t NoteBase::_mid_col = 0;
+uint32_t NoteBase::_max_col = 0;
+
+void
+NoteBase::set_colors ()
+{
+ _selected_mod_col = UIConfiguration::instance().color_mod ("midi note selected", "midi note");
+ _selected_outline_col = UIConfiguration::instance().color ("midi note selected outline");
+ _selected_col = UIConfiguration::instance().color ("midi note selected");
+ _min_col = UIConfiguration::instance().color_mod ("midi note min", "midi note");
+ _mid_col = UIConfiguration::instance().color_mod ("midi note mid", "midi note");
+ _max_col = UIConfiguration::instance().color_mod ("midi note max", "midi note");
+}
+
NoteBase::NoteBase(MidiRegionView& region, bool with_events, const boost::shared_ptr<NoteType> note)
: _region(region)
, _item (0)
, _mouse_x_fraction (-1.0)
, _mouse_y_fraction (-1.0)
{
+ if (!_color_init) {
+ NoteBase::set_colors();
+ _color_init = true;
+ }
}
NoteBase::~NoteBase()
{
// make note change its color if its channel is not marked active
if ( (selection & (1 << _note->channel())) == 0 ) {
- set_fill_color(UIConfiguration::instance().color ("midi note inactive channel"));
- set_outline_color(calculate_outline(UIConfiguration::instance().color ("midi note inactive channel"),
- _selected));
+ const ArdourCanvas::Color inactive_ch = UIConfiguration::instance().color ("midi note inactive channel");
+ set_fill_color(inactive_ch);
+ set_outline_color(calculate_outline(inactive_ch, _selected));
} else {
// set the color according to the notes selection state
set_selected(_selected);
}
_selected = selected;
- set_fill_color (base_color());
- set_outline_color(calculate_outline(base_color(), _selected));
+ const uint32_t base_col = base_color();
+ set_fill_color (base_col);
+
+ set_outline_color(calculate_outline(base_col, _selected));
}
#define SCALE_USHORT_TO_UINT8_T(x) ((x) / 257)
switch (mode) {
case TrackColor:
{
- uint32_t color = _region.midi_stream_view()->get_region_color();
- return UINT_INTERPOLATE (UINT_RGBA_CHANGE_A (color, opacity),
- UIConfiguration::instance().color ("midi note selected"),
+ const uint32_t region_color = _region.midi_stream_view()->get_region_color();
+ return UINT_INTERPOLATE (UINT_RGBA_CHANGE_A (region_color, opacity), _selected_col,
0.5);
}
case ChannelColors:
return UINT_INTERPOLATE (UINT_RGBA_CHANGE_A (NoteBase::midi_channel_colors[_note->channel()], opacity),
- UIConfiguration::instance().color ("midi note selected"), 0.5);
+ _selected_col, 0.5);
default:
return meter_style_fill_color(_note->velocity(), selected());