#include "ardour/audioregion.h"
#include "ardour/audiofilesource.h"
#include "ardour/audio_track.h"
+#include "ardour/record_enable_control.h"
#include "ardour/region_factory.h"
#include "ardour/profile.h"
#include "ardour/rc_configuration.h"
#include "tape_region_view.h"
#include "audio_time_axis.h"
#include "region_selection.h"
+#include "region_gain_line.h"
#include "selection.h"
#include "public_editor.h"
-#include "ardour_ui.h"
#include "rgb_macros.h"
#include "gui_thread.h"
+#include "ui_config.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace std;
using namespace ARDOUR;
break;
case Destructive:
region_view = new TapeAudioRegionView (_canvas_group, _trackview, region,
- _samples_per_pixel, region_color);
+ _samples_per_pixel, region_color);
break;
default:
fatal << string_compose (_("programming error: %1"), "illegal track mode in ::create_region_view()") << endmsg;
region_views.push_front (region_view);
- if (_trackview.editor().internal_editing()) {
- region_view->hide_rect ();
- } else {
- region_view->show_rect ();
- }
-
/* catch region going away */
r->DropReferences.connect (*this, invalidator (*this), boost::bind (&AudioStreamView::remove_region_view, this, boost::weak_ptr<Region> (r)), gui_context());
{
//cerr << _trackview.name() << " streamview SRB region_views.size() = " << region_views.size() << endl;
- if (_trackview.session()->transport_rolling()) {
+ if (!_trackview.session()->transport_stopped()) {
// cerr << "\trolling\n";
if (!rec_active &&
_trackview.session()->record_status() == Session::Recording &&
- _trackview.track()->record_enabled()) {
- if (_trackview.audio_track()->mode() == Normal && Config->get_show_waveforms_while_recording() && rec_regions.size() == rec_rects.size()) {
+ _trackview.track()->rec_enable_control()->get_value()) {
+ if (_trackview.audio_track()->mode() == Normal && UIConfiguration::instance().get_show_waveforms_while_recording() && rec_regions.size() == rec_rects.size()) {
/* add a new region, but don't bother if they set show-waveforms-while-recording mid-record */
/* start a new rec box */
- boost::shared_ptr<AudioTrack> at;
-
- at = _trackview.audio_track(); /* we know what it is already */
+ boost::shared_ptr<AudioTrack> at = _trackview.audio_track();
framepos_t const frame_pos = at->current_capture_start ();
- 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()->get_RecordingRect();
- break;
-
- case Destructive:
- xend = xstart + 2;
- fill_color = ARDOUR_UI::config()->get_RecordingRect();
- /* make the recording rect translucent to allow
- the user to see the peak data coming in, etc.
- */
- fill_color = UINT_RGBA_CHANGE_A (fill_color, 120);
- break;
- }
+ double const width = ((at->mode() == Destructive) ? 2 : 0);
- ArdourCanvas::Rectangle * rec_rect = new ArdourCanvas::TimeRectangle (_canvas_group);
- rec_rect->set_x0 (xstart);
- rec_rect->set_y0 (0);
- 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_TimeAxisFrame());
- rec_rect->set_fill_color (fill_color);
-
- RecBoxInfo recbox;
- recbox.rectangle = rec_rect;
-
- if (rec_rects.empty()) {
- recbox.start = _trackview.session()->record_location ();
- } else {
- recbox.start = _trackview.session()->transport_frame ();
- }
- recbox.length = 0;
-
- rec_rects.push_back (recbox);
-
- screen_update_connection.disconnect();
- screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect (
- sigc::mem_fun (*this, &AudioStreamView::update_rec_box));
- rec_updating = true;
- rec_active = true;
+ create_rec_box(frame_pos, width);
} else if (rec_active &&
- (_trackview.session()->record_status() != Session::Recording ||
- !_trackview.track()->record_enabled())) {
+ (_trackview.session()->record_status() != Session::Recording ||
+ !_trackview.track()->rec_enable_control()->get_value())) {
screen_update_connection.disconnect();
rec_active = false;
rec_updating = false;
void
AudioStreamView::update_rec_regions (framepos_t start, framecnt_t cnt)
{
- if (!Config->get_show_waveforms_while_recording ()) {
+ if (!UIConfiguration::instance().get_show_waveforms_while_recording ()) {
return;
}
if (nlen != region->length()) {
region->suspend_property_changes ();
+ /* set non-musical position / length */
region->set_position (_trackview.track()->get_capture_start_frame(n));
- region->set_length (nlen);
+ region->set_length (nlen, 0);
region->resume_property_changes ();
if (origlen == 1) {
region->suspend_property_changes ();
region->set_position (_trackview.track()->get_capture_start_frame(n));
- region->set_length (nlen);
+ region->set_length (nlen, 0);
region->resume_property_changes ();
if (origlen == 1) {
{
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);
if (arv) {
{
//case cAudioTrackBase:
if (_trackview.is_track()) {
- canvas_rect->set_fill_color (ARDOUR_UI::config()->get_AudioTrackBase());
+ canvas_rect->set_fill_color (UIConfiguration::instance().color_mod ("audio track base", "audio track base"));
}
//case cAudioBusBase:
if (!_trackview.is_track()) {
- if (Profile->get_sae() && _trackview.route()->is_master()) {
- canvas_rect->set_fill_color (ARDOUR_UI::config()->get_AudioMasterBusBase());
- } else {
- canvas_rect->set_fill_color (ARDOUR_UI::config()->get_AudioBusBase());
+ canvas_rect->set_fill_color (UIConfiguration::instance().color_mod ("audio bus base", "audio bus base"));
+ }
+}
+
+void
+AudioStreamView::set_selected_points (PointSelection& points)
+{
+ for (list<RegionView *>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
+ AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*i);
+ if (arv && arv->get_gain_line ()) {
+ arv->get_gain_line ()->set_selected_points (points);
}
}
}