Fix visibility of automation tracks on reloading sessions.
[ardour.git] / gtk2_ardour / audio_streamview.h
index d05ecd930796ffc82eb7442854b33adcd2c3efaf..85055249c5fc8eba9ed3f32e54368e73f6ac18fd 100644 (file)
 #include <map>
 #include <cmath>
 
+#include <boost/weak_ptr.hpp>
+
 #include <ardour/location.h>
-#include "enums.h"
+#include "editing.h"
 #include "simplerect.h"
-#include "color.h"
 #include "streamview.h"
 
 namespace Gdk {
@@ -56,13 +57,14 @@ class AudioStreamView : public StreamView
        AudioStreamView (AudioTimeAxisView&);
        ~AudioStreamView ();
 
-       void set_waveform_shape (WaveformShape);
-
-       int set_height (gdouble h);
+       void set_waveform_shape (Editing::WaveformShape);
+       Editing::WaveformShape get_waveform_shape () const { return _waveform_shape; }
+       void set_waveform_scale (Editing::WaveformScale);
+       Editing::WaveformScale get_waveform_scale () const { return _waveform_scale; }
 
        int set_samples_per_unit (gdouble spp);
 
-       int set_amplitude_above_axis (gdouble app);
+       int     set_amplitude_above_axis (gdouble app);
        gdouble get_amplitude_above_axis () { return _amplitude_above_axis; }
 
        void set_show_waveforms (bool yn);
@@ -70,6 +72,9 @@ class AudioStreamView : public StreamView
 
        void foreach_crossfadeview (void (CrossfadeView::*pmf)(void));
 
+       void show_all_fades ();
+       void hide_all_fades ();
+
        void show_all_xfades ();
        void hide_all_xfades ();
        void hide_xfades_involving (AudioRegionView&);
@@ -77,35 +82,42 @@ class AudioStreamView : public StreamView
 
   private:
        void setup_rec_box ();
-       void rec_peak_range_ready (jack_nframes_t start, jack_nframes_t cnt, ARDOUR::Source* src); 
+       void rec_peak_range_ready (nframes_t start, nframes_t cnt, boost::weak_ptr<ARDOUR::Source> src); 
        void update_rec_regions ();
        
-       void add_region_view_internal (ARDOUR::Region*, bool wait_for_waves);
-       void remove_region_view (ARDOUR::Region* );
-       void remove_audio_region_view (ARDOUR::AudioRegion* );
-       void remove_audio_rec_region (ARDOUR::AudioRegion*);
+       RegionView* add_region_view_internal (boost::shared_ptr<ARDOUR::Region>, bool wait_for_waves, bool recording = false);
+       void remove_region_view (boost::weak_ptr<ARDOUR::Region> );
+       void remove_audio_region_view (boost::shared_ptr<ARDOUR::AudioRegion> );
 
        void undisplay_diskstream ();
        void redisplay_diskstream ();
-       void playlist_modified ();
-       void playlist_changed (ARDOUR::Diskstream *ds);
+       void playlist_modified_weak (boost::weak_ptr<ARDOUR::Diskstream>);
+       void playlist_modified (boost::shared_ptr<ARDOUR::Diskstream>);
+       void playlist_changed (boost::shared_ptr<ARDOUR::Diskstream>);
 
-       bool crossfades_visible;
-       void add_crossfade (ARDOUR::Crossfade*);
-       void remove_crossfade (ARDOUR::Crossfade*);
+       void add_crossfade (boost::shared_ptr<ARDOUR::Crossfade>);
+       void add_crossfade_weak (boost::weak_ptr<ARDOUR::Crossfade>);
+       void remove_crossfade (boost::shared_ptr<ARDOUR::Region>);
 
-       void color_handler (ColorID id, uint32_t val);
-       
+       void color_handler ();
 
+       void update_contents_height ();
+       
+       double _amplitude_above_axis;
+       
        typedef list<CrossfadeView*> CrossfadeViewList;
        CrossfadeViewList crossfade_views;
+       bool              crossfades_visible;
 
-       double _amplitude_above_axis;
 
-       list<sigc::connection>     peak_ready_connections;
-       jack_nframes_t             last_rec_peak_frame;
-       map<ARDOUR::Source*, bool> rec_peak_ready_map;
-       
+       std::list<sigc::connection>                  rec_data_ready_connections;
+       nframes_t                                    last_rec_data_frame;
+       map<boost::shared_ptr<ARDOUR::Source>, bool> rec_data_ready_map;
+
+       bool outline_region;
+
+       Editing::WaveformShape     _waveform_shape;
+       Editing::WaveformScale     _waveform_scale;
 };
 
 #endif /* __ardour_audio_streamview_h__ */