Merge branch 'cairocanvas' of git.ardour.org:ardour/ardour into cairocanvas
[ardour.git] / gtk2_ardour / note_base.h
index 9680091c75456e0234df81d02f554eba83da784e..5e52be0732e7577288e16838163147cde433e258 100644 (file)
@@ -42,29 +42,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:
+  public:
        typedef Evoral::Note<ARDOUR::MidiModel::TimeType> NoteType;
 
-       NoteBase (
-               MidiRegionView&                   region,
-               bool,
-               const boost::shared_ptr<NoteType> note = boost::shared_ptr<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;
 
@@ -91,9 +87,6 @@ public:
        /** Channel selection changed */
        void on_channel_selection_change(uint16_t selection);
 
-       void show_channel_selector();
-       void hide_channel_selector();
-
        virtual void set_outline_color(uint32_t c) = 0;
        virtual void set_fill_color(uint32_t c) = 0;
 
@@ -112,25 +105,25 @@ public:
                 if (selected) {
                         if (vel < 64) {
                                 return UINT_INTERPOLATE(
-                                       ARDOUR_UI::config()->canvasvar_SelectedMidiNoteColorBase.get(),
-                                       ARDOUR_UI::config()->canvasvar_SelectedMidiNoteColorMid.get(),
+                                       ARDOUR_UI::config()->get_canvasvar_SelectedMidiNoteColorBase(),
+                                       ARDOUR_UI::config()->get_canvasvar_SelectedMidiNoteColorMid(),
                                        (vel / (double)63.0));
                         } else {
                                 return UINT_INTERPOLATE(
-                                       ARDOUR_UI::config()->canvasvar_SelectedMidiNoteColorMid.get(),
-                                       ARDOUR_UI::config()->canvasvar_SelectedMidiNoteColorTop.get(),
+                                       ARDOUR_UI::config()->get_canvasvar_SelectedMidiNoteColorMid(),
+                                       ARDOUR_UI::config()->get_canvasvar_SelectedMidiNoteColorTop(),
                                        ((vel-64) / (double)63.0));
                         }
                 } else {
                         if (vel < 64) {
                                 return UINT_INTERPOLATE(
-                                       ARDOUR_UI::config()->canvasvar_MidiNoteColorBase.get(),
-                                       ARDOUR_UI::config()->canvasvar_MidiNoteColorMid.get(),
+                                       ARDOUR_UI::config()->get_canvasvar_MidiNoteColorBase(),
+                                       ARDOUR_UI::config()->get_canvasvar_MidiNoteColorMid(),
                                        (vel / (double)63.0));
                         } else {
                                 return UINT_INTERPOLATE(
-                                       ARDOUR_UI::config()->canvasvar_MidiNoteColorMid.get(),
-                                       ARDOUR_UI::config()->canvasvar_MidiNoteColorTop.get(),
+                                       ARDOUR_UI::config()->get_canvasvar_MidiNoteColorMid(),
+                                       ARDOUR_UI::config()->get_canvasvar_MidiNoteColorTop(),
                                        ((vel-64) / (double)63.0));
                         }
                 }
@@ -145,7 +138,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 };
@@ -153,7 +146,6 @@ protected:
        MidiRegionView&                   _region;
        ArdourCanvas::Item*               _item;
        ArdourCanvas::Text*               _text;
-//     Widget*                           _channel_selector_widget;
        State                             _state;
        const boost::shared_ptr<NoteType> _note;
        bool                              _with_events;