#define __gtk_ardour_note_base_h__
#include <boost/shared_ptr.hpp>
+
#include "canvas/types.h"
-#include "ardour/midi_model.h"
+#include "evoral/types.hpp"
#include "rgb_macros.h"
#include "ardour_ui.h"
/** 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<ARDOUR::MidiModel::TimeType> NoteType;
-
- NoteBase (
- MidiRegionView& region,
- bool,
- const boost::shared_ptr<NoteType> note = boost::shared_ptr<NoteType>()
- );
+ public:
+ typedef Evoral::Note<Evoral::MusicalTime> NoteType;
+ NoteBase (MidiRegionView& region, bool, const boost::shared_ptr<NoteType> note = boost::shared_ptr<NoteType>());
virtual ~NoteBase ();
void set_item (ArdourCanvas::Item *);
+ ArdourCanvas::Item* item() const { return _item; }
static PBD::Signal1<void, NoteBase*> NoteBaseDeleted;
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));
}
}
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 };