X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fghostregion.h;h=a46ab8fe111825ecc656312b160935aafc4fd4ea;hb=c876aea64dc57f59937f8bb2337f6ffc19b98c0d;hp=2ebd33e64e4f433503de90214c127767e910e825;hpb=165a38e74e3829e156c8a18bfae58307c19d6404;p=ardour.git diff --git a/gtk2_ardour/ghostregion.h b/gtk2_ardour/ghostregion.h index 2ebd33e64e..a46ab8fe11 100644 --- a/gtk2_ardour/ghostregion.h +++ b/gtk2_ardour/ghostregion.h @@ -21,29 +21,31 @@ #define __ardour_gtk_ghost_region_h__ #include -#include #include "pbd/signals.h" -#include "canvas.h" - -namespace Gnome { - namespace Canvas { - class CanvasNoteEvent; - class CanvasNote; - class CanvasHit; - class Diamond; - } + +namespace ArdourCanvas { + class WaveView; } +class NoteBase; +class Note; +class Hit; class MidiStreamView; class TimeAxisView; +class RegionView; -class GhostRegion +class GhostRegion : public sigc::trackable { public: - GhostRegion(ArdourCanvas::Group* parent, TimeAxisView& tv, TimeAxisView& source_tv, double initial_unit_pos); + GhostRegion(RegionView& rv, + ArdourCanvas::Container* parent, + TimeAxisView& tv, + TimeAxisView& source_tv, + double initial_unit_pos); + virtual ~GhostRegion(); - virtual void set_samples_per_unit(double spu) = 0; + virtual void set_samples_per_pixel (double) = 0; virtual void set_height(); virtual void set_colors(); @@ -52,21 +54,23 @@ public: guint source_track_color(unsigned char alpha = 0xff); bool is_automation_ghost(); + RegionView& parent_rv; /** TimeAxisView that is the AutomationTimeAxisView that we are on */ TimeAxisView& trackview; /** TimeAxisView that we are a ghost for */ TimeAxisView& source_trackview; - ArdourCanvas::Group* group; - ArdourCanvas::SimpleRect* base_rect; - - static PBD::Signal1 CatchDeletion; + ArdourCanvas::Container* group; + ArdourCanvas::Rectangle* base_rect; }; class AudioGhostRegion : public GhostRegion { public: - AudioGhostRegion(TimeAxisView& tv, TimeAxisView& source_tv, double initial_unit_pos); + AudioGhostRegion(RegionView& rv, + TimeAxisView& tv, + TimeAxisView& source_tv, + double initial_unit_pos); - void set_samples_per_unit(double spu); + void set_samples_per_pixel (double); void set_height(); void set_colors(); @@ -75,44 +79,48 @@ public: class MidiGhostRegion : public GhostRegion { public: - class Event : public sigc::trackable { - public: - Event(ArdourCanvas::CanvasNoteEvent*); - virtual ~Event() {} + class GhostEvent : public sigc::trackable { + public: + GhostEvent(::NoteBase *, ArdourCanvas::Container *); + virtual ~GhostEvent (); - ArdourCanvas::CanvasNoteEvent* event; + NoteBase* event; + ArdourCanvas::Item* item; }; - class Note : public Event { - public: - Note(ArdourCanvas::CanvasNote*, ArdourCanvas::Group*); - ~Note(); + MidiGhostRegion(RegionView& rv, + TimeAxisView& tv, + TimeAxisView& source_tv, + double initial_unit_pos); - ArdourCanvas::SimpleRect* rect; - }; + MidiGhostRegion(RegionView& rv, + MidiStreamView& msv, + TimeAxisView& source_tv, + double initial_unit_pos); - MidiGhostRegion(TimeAxisView& tv, TimeAxisView& source_tv, double initial_unit_pos); - MidiGhostRegion(MidiStreamView& msv, TimeAxisView& source_tv, double initial_unit_pos); ~MidiGhostRegion(); MidiStreamView* midi_view(); void set_height(); - void set_samples_per_unit(double spu); + void set_samples_per_pixel (double spu); void set_colors(); void update_range(); - void add_note(ArdourCanvas::CanvasNote*); - void update_note (ArdourCanvas::CanvasNote *); + void add_note(NoteBase*); + void update_note (Note*); + void update_hit (Hit*); + void remove_note (NoteBase*); void clear_events(); private: + ArdourCanvas::Color _outline; - MidiGhostRegion::Event* find_event (ArdourCanvas::CanvasNote *); + MidiGhostRegion::GhostEvent* find_event (NoteBase*); - typedef std::list EventList; + typedef std::list EventList; EventList events; EventList::iterator _optimization_iterator; };