#include <ardour/playlist_templates.h>
#include <ardour/source.h>
#include <ardour/region_factory.h>
+#include <ardour/profile.h>
#include "audio_streamview.h"
#include "audio_region_view.h"
crossfades_visible = true;
_waveform_scale = LinearWaveform;
_waveform_shape = Traditional;
-
- if (tv.is_track())
- stream_base_color = ARDOUR_UI::config()->canvasvar_AudioTrackBase.get();
- else
- stream_base_color = ARDOUR_UI::config()->canvasvar_AudioBusBase.get();
-
- canvas_rect->property_fill_color_rgba() = stream_base_color;
- canvas_rect->property_outline_color_rgba() = RGBA_BLACK;
-
+ color_handler ();
_amplitude_above_axis = 1.0;
- use_rec_regions = tv.editor.show_waveforms_recording ();
-
-
+ use_rec_regions = tv.editor().show_waveforms_recording ();
}
AudioStreamView::~AudioStreamView ()
}
RegionView*
-AudioStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wait_for_waves)
+AudioStreamView::add_region_view_internal (boost::shared_ptr<Region> r, bool wait_for_waves, bool recording)
{
AudioRegionView *region_view = 0;
switch (_trackview.audio_track()->mode()) {
case Normal:
- region_view = new AudioRegionView (canvas_group, _trackview, region,
- _samples_per_unit, region_color);
+ if (recording) {
+ region_view = new AudioRegionView (canvas_group, _trackview, region,
+ _samples_per_unit, region_color, recording, TimeAxisViewItem::Visibility(TimeAxisViewItem::ShowFrame | TimeAxisViewItem::HideFrameRight));
+ } else {
+ region_view = new AudioRegionView (canvas_group, _trackview, region,
+ _samples_per_unit, region_color);
+ }
break;
case Destructive:
region_view = new TapeAudioRegionView (canvas_group, _trackview, region,
region_view->init (region_color, wait_for_waves);
region_view->set_amplitude_above_axis(_amplitude_above_axis);
+ region_view->set_height (child_height ());
region_views.push_front (region_view);
-
/* if its the special single-sample length that we use for rec-regions, make it
insensitive to events
*/
/* follow global waveform setting */
- region_view->set_waveform_visible(_trackview.editor.show_waveforms());
+ region_view->set_waveform_visible(_trackview.editor().show_waveforms());
/* catch regionview going away */
region->GoingAway.connect (bind (mem_fun (*this, &AudioStreamView::remove_region_view), boost::weak_ptr<Region> (r)));
for (list<CrossfadeView *>::iterator i = crossfade_views.begin(); i != crossfade_views.end(); ++i) {
if ((*i)->crossfade == crossfade) {
- if (!crossfades_visible || layer_display == Stacked) {
+ if (!crossfades_visible || _layer_display == Stacked) {
(*i)->hide();
} else {
(*i)->show ();
}
}
- CrossfadeView *cv = new CrossfadeView (_trackview.canvas_display,
+ CrossfadeView *cv = new CrossfadeView (_trackview.canvas_display (),
_trackview,
crossfade,
_samples_per_unit,
cv->set_valid (true);
crossfade->Invalidated.connect (mem_fun (*this, &AudioStreamView::remove_crossfade));
crossfade_views.push_back (cv);
- if (!Config->get_xfades_visible() || !crossfades_visible || layer_display == Stacked) {
+ if (!Config->get_xfades_visible() || !crossfades_visible || _layer_display == Stacked) {
cv->hide ();
}
}
for (xi = crossfade_views.begin(); xi != crossfade_views.end(); ++xi) {
(*xi)->set_valid (false);
- if ((*xi)->visible() && layer_display != Stacked) {
+ if ((*xi)->visible() && _layer_display != Stacked) {
(*xi)->show ();
}
}
apl->foreach_crossfade (this, &AudioStreamView::add_crossfade);
}
- RegionViewList copy;
+ RegionViewList copy;
+ /* Place regions */
for (i = region_views.begin(); i != region_views.end(); ) {
tmp = i;
tmp++;
(*i)->enable_display(true);
}
- /*
- sort regionviews by layer so that when we call region_layered ()
- the canvas layering works out (in non-stacked mode).
- */
+ /* Sort regionviews by layer so that when we call region_layered ()
+ the canvas layering works out (in non-stacked mode). */
if (copy.size() == 0) {
copy.push_front((*i));
}
for (RegionViewList::iterator j = copy.begin(); j != copy.end(); ++j) {
-
if ((*j)->region()->layer() >= (*i)->region()->layer()) {
copy.insert(j, (*i));
break;
}
i = tmp;
-
}
for (xi = crossfade_views.begin(); xi != crossfade_views.end();) {
xi = tmpx;
}
-
- /* now fix canvas layering */
- for (RegionViewList::iterator j = copy.begin(); j != copy.end(); ++j) {
- (*j)->enable_display(true);
- (*j)->set_y_position_and_height(0, height);
- region_layered (*j);
+ /* now fix layering */
+
+ for (RegionViewList::iterator i = copy.begin(); i != copy.end(); ++i) {
+ region_layered (*i);
}
}
{
for (list<RegionView *>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
- if (arv)
+ if (arv) {
arv->set_waveform_visible (yn);
+ }
}
}
void
AudioStreamView::setup_rec_box ()
{
- // cerr << _trackview.name() << " streamview SRB\n";
+ //cerr << _trackview.name() << " streamview SRB region_views.size() = " << region_views.size() << endl;
if (_trackview.session().transport_rolling()) {
if (!rec_active &&
_trackview.session().record_status() == Session::Recording &&
_trackview.get_diskstream()->record_enabled()) {
-
if (_trackview.audio_track()->mode() == Normal && use_rec_regions && rec_regions.size() == rec_rects.size()) {
/* add a new region, but don't bother if they set use_rec_regions mid-record */
(RegionFactory::create (sources, start, 1 , "", 0, (Region::Flag)(Region::DefaultFlags | Region::DoNotSaveState), false)));
assert(region);
region->set_position (_trackview.session().transport_frame(), this);
-
rec_regions.push_back (make_pair(region, (RegionView*)0));
}
at = _trackview.audio_track(); /* we know what it is already */
boost::shared_ptr<AudioDiskstream> ds = at->audio_diskstream();
nframes_t frame_pos = ds->current_capture_start ();
- gdouble xstart = _trackview.editor.frame_to_pixel (frame_pos);
+ gdouble xstart = _trackview.editor().frame_to_pixel (frame_pos);
gdouble xend;
uint32_t fill_color;
rec_rect->property_x1() = xstart;
rec_rect->property_y1() = 1.0;
rec_rect->property_x2() = xend;
- rec_rect->property_y2() = (double) _trackview.height - 1;
- rec_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_RecordingRect.get();
+ rec_rect->property_y2() = child_height ();
+ rec_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeAxisFrame.get();
+ rec_rect->property_outline_what() = 0x1 | 0x2 | 0x4 | 0x8;
rec_rect->property_fill_color_rgba() = fill_color;
rec_rect->lower_to_bottom();
} else if (rec_active &&
(_trackview.session().record_status() != Session::Recording ||
!_trackview.get_diskstream()->record_enabled())) {
-
screen_update_connection.disconnect();
rec_active = false;
rec_updating = false;
-
}
} else {
AudioStreamView::update_rec_regions ()
{
if (use_rec_regions) {
-
uint32_t n = 0;
for (list<pair<boost::shared_ptr<Region>,RegionView*> >::iterator iter = rec_regions.begin(); iter != rec_regions.end(); n++) {
if (origlen == 1) {
/* our special initial length */
- add_region_view_internal (region, false);
+ add_region_view_internal (region, false, true);
}
/* also update rect */
ArdourCanvas::SimpleRect * rect = rec_rects[n].rectangle;
- gdouble xend = _trackview.editor.frame_to_pixel (region->position() + region->length());
+ gdouble xend = _trackview.editor().frame_to_pixel (region->position() + region->length());
rect->property_x2() = xend;
}
}
if (origlen == 1) {
/* our special initial length */
- add_region_view_internal (region, false);
+ add_region_view_internal (region, false, true);
}
/* also hide rect */
}
}
+void
+AudioStreamView::show_all_fades ()
+{
+ for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
+ AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
+ if (arv) {
+ arv->set_fade_visibility (true);
+ }
+ }
+}
+
+void
+AudioStreamView::hide_all_fades ()
+{
+ for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
+ AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
+ if (arv) {
+ arv->set_fade_visibility (false);
+ }
+ }
+}
+
void
AudioStreamView::show_all_xfades ()
{
AudioStreamView::reveal_xfades_involving (AudioRegionView& rv)
{
for (list<CrossfadeView *>::iterator i = crossfade_views.begin(); i != crossfade_views.end(); ++i) {
- if ((*i)->crossfade->involves (rv.audio_region()) && (*i)->visible() && layer_display != Stacked) {
+ if ((*i)->crossfade->involves (rv.audio_region()) && (*i)->visible() && _layer_display != Stacked) {
(*i)->show ();
}
}
//case cAudioBusBase:
if (!_trackview.is_track()) {
- canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioBusBase.get();
+ if (Profile->get_sae() && _trackview.route()->is_master()) {
+ canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioMasterBusBase.get();
+ } else {
+ canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioBusBase.get();
+ }
}
-
}
void
-AudioStreamView::update_contents_y_position_and_height ()
+AudioStreamView::update_contents_height ()
{
- StreamView::update_contents_y_position_and_height ();
+ StreamView::update_contents_height ();
for (CrossfadeViewList::iterator i = crossfade_views.begin(); i != crossfade_views.end(); ++i) {
- if (layer_display == Overlaid) {
+ if (_layer_display == Overlaid) {
(*i)->show ();
- (*i)->set_y_position_and_height (0, height);
+ (*i)->set_height (height);
} else {
(*i)->hide ();
}