minor tweaks to MIDI clock support, including delivery of position events/messages...
[ardour.git] / gtk2_ardour / canvas-hit.h
index fa90075a0c0dde7fe73a8b0b34b48cef77294bd4..f25c49ab10d6ee7d54f6f3e462cc3ed26a637cc2 100644 (file)
@@ -1,6 +1,6 @@
 /*
-    Copyright (C) 2007 Paul Davis 
-    Author: Dave Robillard
+    Copyright (C) 2007 Paul Davis
+    Author: David Robillard
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -29,25 +29,28 @@ namespace Canvas {
 
 class CanvasHit : public Diamond, public CanvasNoteEvent {
 public:
+       typedef Evoral::Note<double> NoteType;
+
        CanvasHit(
-                       MidiRegionView&                       region,
-                       Group&                                group,
-                       double                                size,
-                       const boost::shared_ptr<Evoral::Note> note = boost::shared_ptr<Evoral::Note>())
-
-               : Diamond(group, size), CanvasNoteEvent(region, this, note)
-       {
-       }
-       
-       double x1() { double x1, y1, x2, y2; get_bounds(x1,y1,x2,y2); return x1; }
-       double y1() { double x1, y1, x2, y2; get_bounds(x1,y1,x2,y2); return y1; }
-       double x2() { double x1, y1, x2, y2; get_bounds(x1,y1,x2,y2); return x2; }
-       double y2() { double x1, y1, x2, y2; get_bounds(x1,y1,x2,y2); return y2; }
-       
+                       MidiRegionView&                   region,
+                       Group&                            group,
+                       double                            size,
+                       const boost::shared_ptr<NoteType> note = boost::shared_ptr<NoteType>(),
+                        bool with_events = true);
+
+       void show() { Diamond::show(); }
+       void hide() { Diamond::hide(); }
+
+       double x1() const { double x1, y1, x2, y2; get_bounds(x1,y1,x2,y2); return x1; }
+       double y1() const { double x1, y1, x2, y2; get_bounds(x1,y1,x2,y2); return y1; }
+       double x2() const { double x1, y1, x2, y2; get_bounds(x1,y1,x2,y2); return x2; }
+       double y2() const { double x1, y1, x2, y2; get_bounds(x1,y1,x2,y2); return y2; }
+
        void set_outline_color(uint32_t c) { property_outline_color_rgba() = c; }
        void set_fill_color(uint32_t c) { property_fill_color_rgba() = c; }
 
-       bool on_event(GdkEvent* ev) { return CanvasNoteEvent::on_event(ev); }
+       bool on_event(GdkEvent* ev);
+       void move_event(double dx, double dy);
 };
 
 } // namespace Gnome