summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Chappell <jesse@essej.net>2006-12-18 22:34:51 +0000
committerJesse Chappell <jesse@essej.net>2006-12-18 22:34:51 +0000
commit575c7974ebddffe71b1fc673c1463221f134bc16 (patch)
tree0f08f32746355b21dec5f40460bb8eff3750b418
parentba4ca9db6dbb1872f3733626c00418884d5fc8f1 (diff)
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
-rw-r--r--gtk2_ardour/audio_streamview.cc67
-rw-r--r--gtk2_ardour/audio_streamview.h8
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<Region> 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<AudioRegionView*>(*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<Region> 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<AudioRegionView*>(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<AudioRegionView*>(*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<AudioRegionView*>(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<sigc::connection> peak_ready_connections;
nframes_t last_rec_peak_frame;
map<boost::shared_ptr<ARDOUR::Source>, bool> rec_peak_ready_map;
-
+
+ WaveformShape _waveform_shape;
+ WaveformScale _waveform_scale;
};
#endif /* __ardour_audio_streamview_h__ */