#include "ardour/rc_configuration.h"
#include "ardour/session.h"
+#include "canvas/rectangle.h"
+
#include "audio_streamview.h"
#include "audio_region_view.h"
#include "tape_region_view.h"
#include "audio_time_axis.h"
-#include "canvas-waveview.h"
-#include "canvas-simplerect.h"
#include "region_selection.h"
#include "selection.h"
#include "public_editor.h"
{
color_handler ();
_amplitude_above_axis = 1.0;
-
- Config->ParameterChanged.connect (*this, invalidator (*this), boost::bind (&AudioStreamView::parameter_changed, this, _1), gui_context());
}
int
case Normal:
if (recording) {
region_view = new AudioRegionView (_canvas_group, _trackview, region,
- _samples_per_unit, region_color, recording, TimeAxisViewItem::Visibility(
- TimeAxisViewItem::ShowFrame |
- TimeAxisViewItem::HideFrameRight |
- TimeAxisViewItem::HideFrameLeft |
- TimeAxisViewItem::HideFrameTB));
+ _samples_per_pixel, region_color, recording, TimeAxisViewItem::Visibility(
+ TimeAxisViewItem::ShowFrame |
+ TimeAxisViewItem::HideFrameRight |
+ TimeAxisViewItem::HideFrameLeft |
+ TimeAxisViewItem::HideFrameTB));
} else {
region_view = new AudioRegionView (_canvas_group, _trackview, region,
- _samples_per_unit, region_color);
+ _samples_per_pixel, region_color);
}
break;
case Destructive:
region_view = new TapeAudioRegionView (_canvas_group, _trackview, region,
- _samples_per_unit, region_color);
+ _samples_per_pixel, region_color);
break;
default:
fatal << string_compose (_("programming error: %1"), "illegal track mode in ::add_region_view_internal") << endmsg;
region_view->set_sensitive (false);
}
- region_view->set_waveform_scale (Config->get_waveform_scale ());
- region_view->set_waveform_shape (Config->get_waveform_shape ());
- region_view->set_waveform_visible (Config->get_show_waveforms ());
-
return region_view;
}
layer_regions();
}
-void
-AudioStreamView::set_show_waveforms (bool yn)
-{
- for (list<RegionView *>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
- AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
- if (arv) {
- arv->set_waveform_visible (yn);
- }
- }
-}
-
-void
-AudioStreamView::set_waveform_shape (WaveformShape shape)
-{
- for (RegionViewList::iterator i = region_views.begin(); i != region_views.end(); ++i) {
- AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
- if (arv)
- arv->set_waveform_shape (shape);
- }
-}
-
-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) {
- arv->set_waveform_scale (scale);
- }
- }
-}
-
void
AudioStreamView::setup_rec_box ()
{
at = _trackview.audio_track(); /* we know what it is already */
framepos_t const frame_pos = at->current_capture_start ();
- gdouble xstart = _trackview.editor().frame_to_pixel (frame_pos);
- gdouble xend;
+ gdouble xstart = _trackview.editor().sample_to_pixel (frame_pos);
+ gdouble xend = xstart; /* keeps gcc optimized happy, really set in switch() below */
uint32_t fill_color;
switch (_trackview.audio_track()->mode()) {
case Normal:
case NonLayered:
xend = xstart;
- fill_color = ARDOUR_UI::config()->canvasvar_RecordingRect.get();
+ fill_color = ARDOUR_UI::config()->get_canvasvar_RecordingRect();
break;
case Destructive:
xend = xstart + 2;
- fill_color = ARDOUR_UI::config()->canvasvar_RecordingRect.get();
+ fill_color = ARDOUR_UI::config()->get_canvasvar_RecordingRect();
/* make the recording rect translucent to allow
the user to see the peak data coming in, etc.
*/
break;
}
- ArdourCanvas::SimpleRect * rec_rect = new Gnome::Canvas::SimpleRect (*_canvas_group);
- rec_rect->property_x1() = xstart;
- rec_rect->property_y1() = 1.0;
- rec_rect->property_x2() = xend;
- rec_rect->property_y2() = child_height ();
- rec_rect->property_outline_what() = 0x0;
- rec_rect->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeAxisFrame.get();
- rec_rect->property_fill_color_rgba() = fill_color;
+ ArdourCanvas::Rectangle * rec_rect = new ArdourCanvas::Rectangle (_canvas_group);
+ rec_rect->set_x0 (xstart);
+ rec_rect->set_y0 (1);
+ rec_rect->set_x1 (xend);
+ rec_rect->set_y1 (child_height ());
+ rec_rect->set_outline_what (ArdourCanvas::Rectangle::What (0));
+ rec_rect->set_outline_color (ARDOUR_UI::config()->get_canvasvar_TimeAxisFrame());
+ rec_rect->set_fill_color (fill_color);
rec_rect->lower_to_bottom();
RecBoxInfo recbox;
assert (n < rec_rects.size());
- if (!canvas_item_visible (rec_rects[n].rectangle)) {
+ if (!rec_rects[n].rectangle->visible()) {
/* rect already hidden, this region is done */
iter = tmp;
continue;
check_record_layers (region, (region->position() - region->start() + start + cnt));
/* also update rect */
- ArdourCanvas::SimpleRect * rect = rec_rects[n].rectangle;
- gdouble xend = _trackview.editor().frame_to_pixel (region->position() + region->length());
- rect->property_x2() = xend;
+ ArdourCanvas::Rectangle * rect = rec_rects[n].rectangle;
+ gdouble xend = _trackview.editor().sample_to_pixel (region->position() + region->length());
+ rect->set_x1 (xend);
}
} else {
}
/** Hide xfades for regions that overlap ar.
- * @return AudioRegionViews that xfades were hidden for.
+ * @return Pair of lists; first is the AudioRegionViews that start xfades were hidden for,
+ * second is the AudioRegionViews that end xfades were hidden for.
*/
-list<AudioRegionView*>
+pair<list<AudioRegionView*>, list<AudioRegionView*> >
AudioStreamView::hide_xfades_with (boost::shared_ptr<AudioRegion> ar)
{
- list<AudioRegionView*> hidden;
+ list<AudioRegionView*> start_hidden;
+ list<AudioRegionView*> end_hidden;
for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
case Evoral::OverlapNone:
break;
default:
+ if (arv->start_xfade_visible ()) {
+ start_hidden.push_back (arv);
+ }
+ if (arv->end_xfade_visible ()) {
+ end_hidden.push_back (arv);
+ }
arv->hide_xfades ();
- hidden.push_back (arv);
break;
}
}
}
- return hidden;
+ return make_pair (start_hidden, end_hidden);
}
void
{
//case cAudioTrackBase:
if (_trackview.is_track()) {
- canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioTrackBase.get();
+ canvas_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_AudioTrackBase());
}
//case cAudioBusBase:
if (!_trackview.is_track()) {
if (Profile->get_sae() && _trackview.route()->is_master()) {
- canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioMasterBusBase.get();
+ canvas_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_AudioMasterBusBase());
} else {
- canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_AudioBusBase.get();
+ canvas_rect->set_fill_color (ARDOUR_UI::config()->get_canvasvar_AudioBusBase());
}
}
}
-
-void
-AudioStreamView::parameter_changed (string const & p)
-{
- if (p == "show-waveforms") {
- set_show_waveforms (Config->get_show_waveforms ());
- } else if (p == "waveform-scale") {
- set_waveform_scale (Config->get_waveform_scale ());
- } else if (p == "waveform-shape") {
- set_waveform_shape (Config->get_waveform_shape ());
- }
-}
-