From 575c7974ebddffe71b1fc673c1463221f134bc16 Mon Sep 17 00:00:00 2001 From: Jesse Chappell Date: Mon, 18 Dec 2006 22:34:51 +0000 Subject: fixed waveform shape and scale issue to maintain the state for all new regions on the track git-svn-id: svn://localhost/ardour2/trunk@1222 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/audio_streamview.cc | 67 +++++++++++++++++++++-------------------- gtk2_ardour/audio_streamview.h | 8 +++-- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc index d5760c7bb6..89d6d394c4 100644 --- a/gtk2_ardour/audio_streamview.cc +++ b/gtk2_ardour/audio_streamview.cc @@ -56,7 +56,9 @@ AudioStreamView::AudioStreamView (AudioTimeAxisView& tv) : StreamView (tv) { crossfades_visible = true; - + _waveform_scale = LinearWaveform; + _waveform_shape = Traditional; + if (tv.is_audio_track()) stream_base_color = color_map[cAudioTrackBase]; else @@ -144,6 +146,14 @@ AudioStreamView::add_region_view_internal (boost::shared_ptr r, bool wai /* great. we already have a AudioRegionView for this Region. use it again. */ (*i)->set_valid (true); + + // this might not be necessary + AudioRegionView* const arv = dynamic_cast(*i); + if (arv) { + arv->set_waveform_scale (_waveform_scale); + arv->set_waveform_shape (_waveform_shape); + } + return; } } @@ -162,6 +172,27 @@ AudioStreamView::add_region_view_internal (boost::shared_ptr r, bool wai region_view->init (region_color, wait_for_waves); region_view->set_amplitude_above_axis(_amplitude_above_axis); region_views.push_front (region_view); + + /* if this was the first one, then lets query the waveform scale and shape. + otherwise, we set it to the current value */ + + if (region_views.size() == 1) { + if (region_view->waveform_logscaled()) { + _waveform_scale = LogWaveform; + } else { + _waveform_scale = LinearWaveform; + } + + if (region_view->waveform_rectified()) { + _waveform_shape = Rectified; + } else { + _waveform_shape = Traditional; + } + } + else { + region_view->set_waveform_scale(_waveform_scale); + region_view->set_waveform_shape(_waveform_shape); + } /* follow global waveform setting */ @@ -382,48 +413,20 @@ AudioStreamView::set_waveform_shape (WaveformShape shape) if (arv) arv->set_waveform_shape (shape); } + _waveform_shape = shape; } -WaveformShape -AudioStreamView::get_waveform_shape () const -{ - // assumes that the first represents all for our purposes - - if (region_views.size() > 0) { - AudioRegionView* const arv = dynamic_cast(region_views.front()); - if (arv) { - if (arv->waveform_rectified()) - return Rectified; - } - } - return Traditional; -} - void AudioStreamView::set_waveform_scale (WaveformScale scale) { for (RegionViewList::iterator i = region_views.begin(); i != region_views.end(); ++i) { AudioRegionView* const arv = dynamic_cast(*i); - if (arv) + if (arv) arv->set_waveform_scale (scale); } + _waveform_scale = scale; } -WaveformScale -AudioStreamView::get_waveform_scale () const -{ - // assumes that the first represents all for our purposes - - if (region_views.size() > 0) { - AudioRegionView* const arv = dynamic_cast(region_views.front()); - if (arv) { - if (arv->waveform_logscaled()) - return LogWaveform; - } - } - return LinearWaveform; -} - void AudioStreamView::setup_rec_box () { diff --git a/gtk2_ardour/audio_streamview.h b/gtk2_ardour/audio_streamview.h index ed9c8b7f7f..295e02d96a 100644 --- a/gtk2_ardour/audio_streamview.h +++ b/gtk2_ardour/audio_streamview.h @@ -59,9 +59,9 @@ class AudioStreamView : public StreamView ~AudioStreamView (); void set_waveform_shape (WaveformShape); - WaveformShape get_waveform_shape () const; + WaveformShape get_waveform_shape () const { return _waveform_shape; } void set_waveform_scale (WaveformScale); - WaveformScale get_waveform_scale () const; + WaveformScale get_waveform_scale () const { return _waveform_scale; } int set_height (gdouble h); int set_samples_per_unit (gdouble spp); @@ -108,7 +108,9 @@ class AudioStreamView : public StreamView list peak_ready_connections; nframes_t last_rec_peak_frame; map, bool> rec_peak_ready_map; - + + WaveformShape _waveform_shape; + WaveformScale _waveform_scale; }; #endif /* __ardour_audio_streamview_h__ */ -- cgit v1.2.3