X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fnote_base.h;h=f76c184a20cc164ffbe43e49cf94eaf7e0aa831c;hb=56ca52651e910496084b992486ac7b8e3bbc88cf;hp=8ee3a4d27790496a15f16ddfd5772b1fd19d47ad;hpb=ce8731b32d5e91f56396cb5f6ca0798bc7fed48a;p=ardour.git diff --git a/gtk2_ardour/note_base.h b/gtk2_ardour/note_base.h index 8ee3a4d277..f76c184a20 100644 --- a/gtk2_ardour/note_base.h +++ b/gtk2_ardour/note_base.h @@ -21,8 +21,9 @@ #define __gtk_ardour_note_base_h__ #include + #include "canvas/types.h" -#include "ardour/midi_model.h" +#include "evoral/types.hpp" #include "rgb_macros.h" #include "ardour_ui.h" @@ -42,29 +43,25 @@ namespace ArdourCanvas { /** This manages all the event handling for any MIDI event on the canvas. * - * This is not actually a canvas item itself to avoid the dreaded diamond, - * since various types of canvas items (Note (rect), Hit (diamond), etc) - * need to share this functionality but can't share an ancestor. + * This is not actually a canvas item itself to avoid the dreaded diamond + * inheritance pattern, since various types of canvas items (Note (rect), Hit + * (diamond), etc) need to share this functionality but can't share an + * ancestor. * * Note: Because of this, derived classes need to manually bounce events to * on_event, it won't happen automatically. - * - * A newer, better canvas should remove the need for all the ugly here. */ + class NoteBase : public sigc::trackable { -public: - typedef Evoral::Note NoteType; - - NoteBase ( - MidiRegionView& region, - bool, - const boost::shared_ptr note = boost::shared_ptr() - ); + public: + typedef Evoral::Note NoteType; + NoteBase (MidiRegionView& region, bool, const boost::shared_ptr note = boost::shared_ptr()); virtual ~NoteBase (); void set_item (ArdourCanvas::Item *); + ArdourCanvas::Item* item() const { return _item; } static PBD::Signal1 NoteBaseDeleted; @@ -109,25 +106,25 @@ public: if (selected) { if (vel < 64) { return UINT_INTERPOLATE( - ARDOUR_UI::config()->get_canvasvar_SelectedMidiNoteColorBase(), - ARDOUR_UI::config()->get_canvasvar_SelectedMidiNoteColorMid(), + ARDOUR_UI::config()->color ("selected midi note color min"), + ARDOUR_UI::config()->color ("selected midi note color mid"), (vel / (double)63.0)); } else { return UINT_INTERPOLATE( - ARDOUR_UI::config()->get_canvasvar_SelectedMidiNoteColorMid(), - ARDOUR_UI::config()->get_canvasvar_SelectedMidiNoteColorTop(), + ARDOUR_UI::config()->color ("selected midi note color mid"), + ARDOUR_UI::config()->color ("selected midi note color max"), ((vel-64) / (double)63.0)); } } else { if (vel < 64) { return UINT_INTERPOLATE( - ARDOUR_UI::config()->get_canvasvar_MidiNoteColorBase(), - ARDOUR_UI::config()->get_canvasvar_MidiNoteColorMid(), + ARDOUR_UI::config()->color ("midi note color min"), + ARDOUR_UI::config()->color ("midi note color mid"), (vel / (double)63.0)); } else { return UINT_INTERPOLATE( - ARDOUR_UI::config()->get_canvasvar_MidiNoteColorMid(), - ARDOUR_UI::config()->get_canvasvar_MidiNoteColorTop(), + ARDOUR_UI::config()->color ("midi note color mid"), + ARDOUR_UI::config()->color ("midi note color max"), ((vel-64) / (double)63.0)); } } @@ -142,7 +139,7 @@ public: static const uint32_t midi_channel_colors[16]; bool mouse_near_ends () const; - bool big_enough_to_trim () const; + virtual bool big_enough_to_trim () const; protected: enum State { None, Pressed, Dragging };