diff --git a/gtk2_ardour/ardour2_ui_default.conf b/gtk2_ardour/ardour2_ui_default.conf
index 5848bb4d2b..1cce3fb740 100644
--- a/gtk2_ardour/ardour2_ui_default.conf
+++ b/gtk2_ardour/ardour2_ui_default.conf
@@ -64,8 +64,6 @@
-
-
@@ -87,8 +85,12 @@
+
+
+
+
diff --git a/gtk2_ardour/audio_region_view.cc b/gtk2_ardour/audio_region_view.cc
index 16c8e54bed..858fe82710 100644
--- a/gtk2_ardour/audio_region_view.cc
+++ b/gtk2_ardour/audio_region_view.cc
@@ -77,9 +77,10 @@ AudioRegionView::AudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView
{
}
+
AudioRegionView::AudioRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &tv, boost::shared_ptr r, double spu,
- Gdk::Color& basic_color, TimeAxisViewItem::Visibility visibility)
- : RegionView (parent, tv, r, spu, basic_color, visibility)
+ Gdk::Color& basic_color, bool recording, TimeAxisViewItem::Visibility visibility)
+ : RegionView (parent, tv, r, spu, basic_color, recording, visibility)
, sync_mark(0)
, zero_line(0)
, fade_in_shape(0)
@@ -265,7 +266,7 @@ void
AudioRegionView::region_changed (Change what_changed)
{
ENSURE_GUI_THREAD (bind (mem_fun(*this, &AudioRegionView::region_changed), what_changed));
-
+ cerr << "AudioRegionView::region_changed() called" << endl;
RegionView::region_changed(what_changed);
if (what_changed & AudioRegion::ScaleAmplitudeChanged) {
@@ -861,8 +862,15 @@ AudioRegionView::create_one_wave (uint32_t which, bool direct)
wave->property_height() = (double) ht;
wave->property_samples_per_unit() = samples_per_unit;
wave->property_amplitude_above_axis() = _amplitude_above_axis;
- wave->property_wave_color() = _region->muted() ? UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->canvasvar_WaveForm.get(), MUTED_ALPHA) : ARDOUR_UI::config()->canvasvar_WaveForm.get();
- wave->property_fill_color() = ARDOUR_UI::config()->canvasvar_WaveFormFill.get();
+
+ if (_recregion) {
+ wave->property_wave_color() = _region->muted() ? UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->canvasvar_RecWaveForm.get(), MUTED_ALPHA) : ARDOUR_UI::config()->canvasvar_RecWaveForm.get();
+ wave->property_fill_color() = ARDOUR_UI::config()->canvasvar_RecWaveFormFill.get();
+ } else {
+ wave->property_wave_color() = _region->muted() ? UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->canvasvar_WaveForm.get(), MUTED_ALPHA) : ARDOUR_UI::config()->canvasvar_WaveForm.get();
+ wave->property_fill_color() = ARDOUR_UI::config()->canvasvar_WaveFormFill.get();
+ }
+
wave->property_clip_color() = ARDOUR_UI::config()->canvasvar_WaveFormClip.get();
wave->property_zero_color() = ARDOUR_UI::config()->canvasvar_ZeroLine.get();
wave->property_region_start() = _region->start();
@@ -1227,16 +1235,32 @@ AudioRegionView::set_frame_color ()
}
}
} else {
- UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_FrameBase.get(), &r, &g, &b, &a);
- frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a);
+ if (_recregion) {
+ UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_RecordingRect.get(), &r, &g, &b, &a);
+ frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, a);
+ cerr << "Was a recregion" << endl;
- for (vector::iterator w = waves.begin(); w != waves.end(); ++w) {
- if (_region->muted()) {
- (*w)->property_wave_color() = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->canvasvar_WaveForm.get(), MUTED_ALPHA);
- } else {
- (*w)->property_wave_color() = ARDOUR_UI::config()->canvasvar_WaveForm.get();
- (*w)->property_fill_color() = ARDOUR_UI::config()->canvasvar_WaveFormFill.get();
+ for (vector::iterator w = waves.begin(); w != waves.end(); ++w) {
+ if (_region->muted()) {
+ (*w)->property_wave_color() = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->canvasvar_RecWaveForm.get(), MUTED_ALPHA);
+ } else {
+ (*w)->property_wave_color() = ARDOUR_UI::config()->canvasvar_RecWaveForm.get();
+ (*w)->property_fill_color() = ARDOUR_UI::config()->canvasvar_RecWaveFormFill.get();
+ }
+ }
+ } else {
+ UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_FrameBase.get(), &r, &g, &b, &a);
+ frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a);
+
+ for (vector::iterator w = waves.begin(); w != waves.end(); ++w) {
+ if (_region->muted()) {
+ (*w)->property_wave_color() = UINT_RGBA_CHANGE_A(ARDOUR_UI::config()->canvasvar_WaveForm.get(), MUTED_ALPHA);
+ } else {
+ (*w)->property_wave_color() = ARDOUR_UI::config()->canvasvar_WaveForm.get();
+ (*w)->property_fill_color() = ARDOUR_UI::config()->canvasvar_WaveFormFill.get();
+ }
}
}
}
}
+
diff --git a/gtk2_ardour/audio_region_view.h b/gtk2_ardour/audio_region_view.h
index 99029d7afa..a5e3fa5291 100644
--- a/gtk2_ardour/audio_region_view.h
+++ b/gtk2_ardour/audio_region_view.h
@@ -54,6 +54,14 @@ class AudioRegionView : public RegionView
double initial_samples_per_unit,
Gdk::Color& basic_color);
+ AudioRegionView (ArdourCanvas::Group *,
+ RouteTimeAxisView&,
+ boost::shared_ptr,
+ double samples_per_unit,
+ Gdk::Color& basic_color,
+ bool recording,
+ TimeAxisViewItem::Visibility);
+
AudioRegionView (const AudioRegionView& other);
AudioRegionView (const AudioRegionView& other, boost::shared_ptr);
@@ -108,13 +116,6 @@ class AudioRegionView : public RegionView
to the TimeAxisViewItem parent class
*/
- AudioRegionView (ArdourCanvas::Group *,
- RouteTimeAxisView&,
- boost::shared_ptr,
- double samples_per_unit,
- Gdk::Color& basic_color,
- TimeAxisViewItem::Visibility);
-
enum Flags {
EnvelopeVisible = 0x1,
WaveformVisible = 0x4,
diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc
index 475a4a1183..e287fd8ea2 100644
--- a/gtk2_ardour/audio_streamview.cc
+++ b/gtk2_ardour/audio_streamview.cc
@@ -129,7 +129,7 @@ AudioStreamView::set_amplitude_above_axis (gdouble app)
}
void
-AudioStreamView::add_region_view_internal (boost::shared_ptr r, bool wait_for_waves)
+AudioStreamView::add_region_view_internal (boost::shared_ptr r, bool wait_for_waves, bool recording)
{
AudioRegionView *region_view = 0;
@@ -161,8 +161,13 @@ AudioStreamView::add_region_view_internal (boost::shared_ptr r, bool wai
switch (_trackview.audio_track()->mode()) {
case Normal:
- region_view = new AudioRegionView (canvas_group, _trackview, region,
+ 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,
@@ -178,7 +183,6 @@ AudioStreamView::add_region_view_internal (boost::shared_ptr r, bool wai
region_view->set_amplitude_above_axis(_amplitude_above_axis);
region_views.push_front (region_view);
-
/* if its the special single-sample length that we use for rec-regions, make it
insensitive to events
*/
@@ -542,7 +546,8 @@ AudioStreamView::setup_rec_box ()
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_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeAxisFrame.get();
+ rec_rect->property_outline_what() = 0x4 | 0x8; // Draw top and bottom outline to blend with region
rec_rect->property_fill_color_rgba() = fill_color;
RecBoxInfo recbox;
@@ -689,7 +694,7 @@ AudioStreamView::update_rec_regions ()
if (origlen == 1) {
/* our special initial length */
- add_region_view_internal (region, false);
+ add_region_view_internal (region, false, true);
}
/* also update rect */
@@ -714,7 +719,7 @@ AudioStreamView::update_rec_regions ()
if (origlen == 1) {
/* our special initial length */
- add_region_view_internal (region, false);
+ add_region_view_internal (region, false, true);
}
/* also hide rect */
diff --git a/gtk2_ardour/audio_streamview.h b/gtk2_ardour/audio_streamview.h
index 91f5c88fe1..e19ca35eaf 100644
--- a/gtk2_ardour/audio_streamview.h
+++ b/gtk2_ardour/audio_streamview.h
@@ -83,7 +83,7 @@ class AudioStreamView : public StreamView
void rec_peak_range_ready (nframes_t start, nframes_t cnt, boost::weak_ptr src);
void update_rec_regions ();
- void add_region_view_internal (boost::shared_ptr, bool wait_for_waves);
+ void add_region_view_internal (boost::shared_ptr, bool wait_for_waves, bool recording = false);
void remove_region_view (boost::weak_ptr );
void remove_audio_region_view (boost::shared_ptr );
diff --git a/gtk2_ardour/canvas_vars.h b/gtk2_ardour/canvas_vars.h
index 905618f775..3b9c7df050 100644
--- a/gtk2_ardour/canvas_vars.h
+++ b/gtk2_ardour/canvas_vars.h
@@ -23,7 +23,6 @@ CANVAS_VARIABLE(canvasvar_EnteredControlPointOutline, "entered control point out
CANVAS_VARIABLE(canvasvar_EnteredControlPointSelected, "entered control point selected")
CANVAS_VARIABLE(canvasvar_EnteredGainLine, "EnteredGainLine")
CANVAS_VARIABLE(canvasvar_EnteredMarker, "EnteredMarker")
-CANVAS_VARIABLE(canvasvar_FrameBase, "region base")
CANVAS_VARIABLE(canvasvar_FrameHandle, "FrameHandle")
CANVAS_VARIABLE(canvasvar_GainLine, "GainLine")
CANVAS_VARIABLE(canvasvar_GainLineInactive, "GainLineInactive")
@@ -60,7 +59,6 @@ CANVAS_VARIABLE(canvasvar_PunchLine, "PunchLine")
CANVAS_VARIABLE(canvasvar_RangeDragBarRect, "RangeDragBarRect")
CANVAS_VARIABLE(canvasvar_RangeDragRect, "RangeDragRect")
CANVAS_VARIABLE(canvasvar_RangeMarkerBar, "rangemarker bar")
-CANVAS_VARIABLE(canvasvar_RecordingRect, "RecordingRect")
CANVAS_VARIABLE(canvasvar_RedirectAutomationLine, "processor automation line")
CANVAS_VARIABLE(canvasvar_RubberBandRect, "RubberBandRect")
CANVAS_VARIABLE(canvasvar_SelectedCrossfadeEditorLine, "selected crossfade editor line")
@@ -83,8 +81,12 @@ CANVAS_VARIABLE(canvasvar_TrimHandleLocked, "TrimHandleLocked")
CANVAS_VARIABLE(canvasvar_TrimHandle, "TrimHandle")
CANVAS_VARIABLE(canvasvar_VerboseCanvasCursor, "verbose canvas cursor")
CANVAS_VARIABLE(canvasvar_VestigialFrame, "VestigialFrame")
-CANVAS_VARIABLE(canvasvar_WaveFormClip, "clipped waveform")
+CANVAS_VARIABLE(canvasvar_FrameBase, "region base")
CANVAS_VARIABLE(canvasvar_WaveFormFill, "waveform fill")
CANVAS_VARIABLE(canvasvar_WaveForm, "waveform outline")
+CANVAS_VARIABLE(canvasvar_RecordingRect, "recorded region base")
+CANVAS_VARIABLE(canvasvar_RecWaveFormFill, "recorded waveform fill")
+CANVAS_VARIABLE(canvasvar_RecWaveForm, "recorded waveform outline")
+CANVAS_VARIABLE(canvasvar_WaveFormClip, "clipped waveform")
CANVAS_VARIABLE(canvasvar_ZeroLine, "ZeroLine")
CANVAS_VARIABLE(canvasvar_ZoomRect, "ZoomRect")
diff --git a/gtk2_ardour/crossfade_view.cc b/gtk2_ardour/crossfade_view.cc
index 2e442f9b43..4787837617 100644
--- a/gtk2_ardour/crossfade_view.cc
+++ b/gtk2_ardour/crossfade_view.cc
@@ -52,7 +52,7 @@ CrossfadeView::CrossfadeView (ArdourCanvas::Group *parent,
: TimeAxisViewItem ("xfade" /*xf.name()*/, *parent, tv, spu, basic_color, xf->position(),
- xf->length(), TimeAxisViewItem::Visibility (TimeAxisViewItem::ShowFrame)),
+ xf->length(), false, TimeAxisViewItem::Visibility (TimeAxisViewItem::ShowFrame)),
crossfade (xf),
left_view (lview),
right_view (rview)
diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc
index bb16637d6a..71370e163c 100644
--- a/gtk2_ardour/region_view.cc
+++ b/gtk2_ardour/region_view.cc
@@ -62,8 +62,9 @@ RegionView::RegionView (ArdourCanvas::Group* parent,
TimeAxisView& tv,
boost::shared_ptr r,
double spu,
- Gdk::Color& basic_color)
- : TimeAxisViewItem (r->name(), *parent, tv, spu, basic_color, r->position(), r->length(),
+ Gdk::Color& basic_color
+ )
+ : TimeAxisViewItem (r->name(), *parent, tv, spu, basic_color, r->position(), r->length(), false,
TimeAxisViewItem::Visibility (TimeAxisViewItem::ShowNameText|
TimeAxisViewItem::ShowNameHighlight|
TimeAxisViewItem::ShowFrame))
@@ -115,8 +116,9 @@ RegionView::RegionView (ArdourCanvas::Group* parent,
boost::shared_ptr r,
double spu,
Gdk::Color& basic_color,
+ bool recording,
TimeAxisViewItem::Visibility visibility)
- : TimeAxisViewItem (r->name(), *parent, tv, spu, basic_color, r->position(), r->length(), visibility)
+ : TimeAxisViewItem (r->name(), *parent, tv, spu, basic_color, r->position(), r->length(), recording, visibility)
, _region (r)
, sync_mark(0)
, sync_line(0)
@@ -142,7 +144,10 @@ RegionView::init (Gdk::Color& basic_color, bool wfd)
compute_colors (basic_color);
- name_highlight->set_data ("regionview", this);
+ if (name_highlight) {
+ name_highlight->set_data ("regionview", this);
+ name_highlight->signal_event().connect (bind (mem_fun (PublicEditor::instance(), &PublicEditor::canvas_region_view_name_highlight_event), name_highlight, this));
+ }
if (name_text) {
name_text->set_data ("regionview", this);
@@ -155,12 +160,10 @@ RegionView::init (Gdk::Color& basic_color, bool wfd)
_region->StateChanged.connect (mem_fun(*this, &RegionView::region_changed));
group->signal_event().connect (bind (mem_fun (PublicEditor::instance(), &PublicEditor::canvas_region_view_event), group, this));
- name_highlight->signal_event().connect (bind (mem_fun (PublicEditor::instance(), &PublicEditor::canvas_region_view_name_highlight_event), name_highlight, this));
set_colors ();
ColorsChanged.connect (mem_fun (*this, &RegionView::color_handler));
- // set_pango_fontsize();
/* XXX sync mark drag? */
}
diff --git a/gtk2_ardour/region_view.h b/gtk2_ardour/region_view.h
index bc5771e848..c3e779015f 100644
--- a/gtk2_ardour/region_view.h
+++ b/gtk2_ardour/region_view.h
@@ -100,6 +100,7 @@ class RegionView : public TimeAxisViewItem
boost::shared_ptr,
double samples_per_unit,
Gdk::Color& basic_color,
+ bool recording,
TimeAxisViewItem::Visibility);
virtual void region_resized (ARDOUR::Change);
diff --git a/gtk2_ardour/streamview.h b/gtk2_ardour/streamview.h
index f1e0ee27ca..da44a7a2f0 100644
--- a/gtk2_ardour/streamview.h
+++ b/gtk2_ardour/streamview.h
@@ -107,7 +107,7 @@ protected:
void update_rec_box ();
virtual void update_rec_regions () = 0;
- virtual void add_region_view_internal (boost::shared_ptr, bool wait_for_waves) = 0;
+ virtual void add_region_view_internal (boost::shared_ptr, bool wait_for_waves, bool recording = false) = 0;
virtual void remove_region_view (boost::weak_ptr );
//void remove_rec_region (boost::shared_ptr); (unused)
diff --git a/gtk2_ardour/tape_region_view.cc b/gtk2_ardour/tape_region_view.cc
index c198d86066..97fac713c1 100644
--- a/gtk2_ardour/tape_region_view.cc
+++ b/gtk2_ardour/tape_region_view.cc
@@ -53,7 +53,7 @@ TapeAudioRegionView::TapeAudioRegionView (ArdourCanvas::Group *parent, RouteTime
double spu,
Gdk::Color& basic_color)
- : AudioRegionView (parent, tv, r, spu, basic_color,
+ : AudioRegionView (parent, tv, r, spu, basic_color, false,
TimeAxisViewItem::Visibility ((r->position() != 0) ? default_tape_visibility :
TimeAxisViewItem::Visibility (default_tape_visibility|TimeAxisViewItem::HideFrameLeft)))
{
diff --git a/gtk2_ardour/time_axis_view_item.cc b/gtk2_ardour/time_axis_view_item.cc
index 7b74030403..a659eba79c 100644
--- a/gtk2_ardour/time_axis_view_item.cc
+++ b/gtk2_ardour/time_axis_view_item.cc
@@ -69,9 +69,9 @@ double TimeAxisViewItem::NAME_HIGHLIGHT_THRESH;
* @param duration the duration of this item
*/
TimeAxisViewItem::TimeAxisViewItem(const string & it_name, ArdourCanvas::Group& parent, TimeAxisView& tv, double spu, Gdk::Color& base_color,
- nframes_t start, nframes_t duration,
+ nframes_t start, nframes_t duration, bool recording,
Visibility vis)
- : trackview (tv)
+ : trackview (tv), _recregion(recording)
{
if (!have_name_font) {
@@ -798,8 +798,13 @@ TimeAxisViewItem::set_frame_color()
UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_SelectedFrameBase.get(), &r, &g, &b, &a);
frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a);// Lets still use the theme's opacity value if Opaque is not set
} else {
- UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_FrameBase.get(), &r, &g, &b, &a);
- frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a);
+ if (_recregion) {
+ UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_RecordingRect.get(), &r, &g, &b, &a);
+ frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, a);
+ } else {
+ UINT_TO_RGBA(ARDOUR_UI::config()->canvasvar_FrameBase.get(), &r, &g, &b, &a);
+ frame->property_fill_color_rgba() = RGBA_TO_UINT(r, g, b, fill_opacity ? fill_opacity : a);
+ }
}
}
}
@@ -1043,3 +1048,4 @@ TimeAxisViewItem::idle_remove_this_item(TimeAxisViewItem* item, void* src)
item = 0;
return false;
}
+
diff --git a/gtk2_ardour/time_axis_view_item.h b/gtk2_ardour/time_axis_view_item.h
index a9877d5b24..7884c22c1f 100644
--- a/gtk2_ardour/time_axis_view_item.h
+++ b/gtk2_ardour/time_axis_view_item.h
@@ -316,8 +316,6 @@ class TimeAxisViewItem : public Selectable
/** Emitted when the mionimum item duration is changed */
sigc::signal MinDurationChanged ;
- protected:
-
enum Visibility {
ShowFrame = 0x1,
ShowNameHighlight = 0x2,
@@ -328,7 +326,7 @@ class TimeAxisViewItem : public Selectable
HideFrameTB = 0x40,
FullWidthNameHighlight = 0x80
};
-
+ protected:
/**
* Constructs a new TimeAxisViewItem.
*
@@ -341,7 +339,7 @@ class TimeAxisViewItem : public Selectable
* @param duration the duration of this item
*/
TimeAxisViewItem(const std::string & it_name, ArdourCanvas::Group& parent, TimeAxisView& tv, double spu, Gdk::Color& base_color,
- nframes_t start, nframes_t duration, Visibility v = Visibility (0));
+ nframes_t start, nframes_t duration, bool recording = false, Visibility v = Visibility (0));
TimeAxisViewItem (const TimeAxisViewItem& other);
@@ -466,6 +464,8 @@ class TimeAxisViewItem : public Selectable
std::map name_text_size_cache;
Visibility visibility;
+ bool _recregion;
+
}; /* class TimeAxisViewItem */