1 #ifndef __ardour_gtk_region_selection_h__
2 #define __ardour_gtk_region_selection_h__
6 #include <sigc++/signal.h>
7 #include <ardour/types.h>
12 class AudioRegionView;
14 struct AudioRegionComparator {
15 bool operator() (const AudioRegionView* a, const AudioRegionView* b) const;
18 class AudioRegionSelection : public set<AudioRegionView*, AudioRegionComparator>, public sigc::trackable
21 AudioRegionSelection();
22 AudioRegionSelection (const AudioRegionSelection&);
24 AudioRegionSelection& operator= (const AudioRegionSelection&);
26 void add (AudioRegionView*, bool dosort = true);
27 bool remove (AudioRegionView*);
28 bool contains (AudioRegionView*);
32 jack_nframes_t start () const {
33 return _current_start;
36 /* collides with list<>::end */
38 jack_nframes_t end_frame () const {
42 const list<AudioRegionView *> & by_layer() const { return _bylayer; }
43 void by_position (list<AudioRegionView*>&) const;
46 void remove_it (AudioRegionView*);
48 void add_to_layer (AudioRegionView *);
50 jack_nframes_t _current_start;
51 jack_nframes_t _current_end;
53 list<AudioRegionView *> _bylayer;
56 #endif /* __ardour_gtk_region_selection_h__ */