summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_regions.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-01-27 17:35:06 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-01-27 17:35:06 +0000
commitea655d711c03f9d41425b952b1b0648ebcf2a21f (patch)
tree87f15df30a2d1ddafd738bee8c02b1918b32e801 /gtk2_ardour/editor_regions.cc
parent27747a6ee29ce8877f3bc736732379011b0b0fa3 (diff)
fix #4663, partly by more efficiently generating the relevant string, and secondly by making the region list pay attention to fade in/out *active*, not just length
git-svn-id: svn://localhost/ardour2/branches/3.0@11364 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_regions.cc')
-rw-r--r--gtk2_ardour/editor_regions.cc50
1 files changed, 28 insertions, 22 deletions
diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc
index fa2a06a285..672a0c5b8e 100644
--- a/gtk2_ardour/editor_regions.cc
+++ b/gtk2_ardour/editor_regions.cc
@@ -485,6 +485,8 @@ EditorRegions::region_changed (boost::shared_ptr<Region> r, const PropertyChange
our_interests.add (ARDOUR::Properties::opaque);
our_interests.add (ARDOUR::Properties::fade_in);
our_interests.add (ARDOUR::Properties::fade_out);
+ our_interests.add (ARDOUR::Properties::fade_in_active);
+ our_interests.add (ARDOUR::Properties::fade_out_active);
if (what_changed.contains (our_interests)) {
@@ -686,7 +688,7 @@ EditorRegions::update_all_rows ()
}
void
-EditorRegions::format_position (framepos_t pos, char* buf, size_t bufsize)
+EditorRegions::format_position (framepos_t pos, char* buf, size_t bufsize, bool onoff)
{
Timecode::BBT_Time bbt;
Timecode::Time timecode;
@@ -694,7 +696,11 @@ EditorRegions::format_position (framepos_t pos, char* buf, size_t bufsize)
switch (ARDOUR_UI::instance()->secondary_clock->mode ()) {
case AudioClock::BBT:
_session->tempo_map().bbt_time (pos, bbt);
- snprintf (buf, bufsize, "%03d|%02d|%04d" , bbt.bars, bbt.beats, bbt.ticks);
+ if (onoff) {
+ snprintf (buf, bufsize, "%03d|%02d|%04d" , bbt.bars, bbt.beats, bbt.ticks);
+ } else {
+ snprintf (buf, bufsize, "(%03d|%02d|%04d)" , bbt.bars, bbt.beats, bbt.ticks);
+ }
break;
case AudioClock::MinSec:
@@ -709,17 +715,29 @@ EditorRegions::format_position (framepos_t pos, char* buf, size_t bufsize)
mins = (int) floor (left / (_session->frame_rate() * 60.0f));
left -= (framecnt_t) floor (mins * _session->frame_rate() * 60.0f);
secs = left / (float) _session->frame_rate();
- snprintf (buf, bufsize, "%02d:%02d:%06.3f", hrs, mins, secs);
+ if (onoff) {
+ snprintf (buf, bufsize, "%02d:%02d:%06.3f", hrs, mins, secs);
+ } else {
+ snprintf (buf, bufsize, "(%02d:%02d:%06.3f)", hrs, mins, secs);
+ }
break;
case AudioClock::Frames:
- snprintf (buf, bufsize, "%" PRId64, pos);
+ if (onoff) {
+ snprintf (buf, bufsize, "%" PRId64, pos);
+ } else {
+ snprintf (buf, bufsize, "(%" PRId64 ")", pos);
+ }
break;
case AudioClock::Timecode:
default:
_session->timecode_time (pos, timecode);
- snprintf (buf, bufsize, "%02d:%02d:%02d:%02d", timecode.hours, timecode.minutes, timecode.seconds, timecode.frames);
+ if (onoff) {
+ snprintf (buf, bufsize, "%02d:%02d:%02d:%02d", timecode.hours, timecode.minutes, timecode.seconds, timecode.frames);
+ } else {
+ snprintf (buf, bufsize, "(%02d:%02d:%02d:%02d)", timecode.hours, timecode.minutes, timecode.seconds, timecode.frames);
+ }
break;
}
}
@@ -851,16 +869,9 @@ EditorRegions::populate_row_fade_in (boost::shared_ptr<Region> region, TreeModel
if (used > 1) {
row[_columns.fadein] = _("Multiple");
} else {
-
- char buf[16];
- format_position (audioregion->fade_in()->back()->when, buf, sizeof (buf));
+ char buf[32];
+ format_position (audioregion->fade_in()->back()->when, buf, sizeof (buf), audioregion->fade_in_active());
row[_columns.fadein] = buf;
-
- if (audioregion->fade_in_active()) {
- row[_columns.fadein] = string_compose("%1%2%3", " ", buf, " ");
- } else {
- row[_columns.fadein] = string_compose("%1%2%3", "(", buf, ")");
- }
}
}
}
@@ -874,14 +885,9 @@ EditorRegions::populate_row_fade_out (boost::shared_ptr<Region> region, TreeMode
if (used > 1) {
row[_columns.fadeout] = _("Multiple");
} else {
- char buf[16];
- format_position (audioregion->fade_out()->back()->when, buf, sizeof (buf));
-
- if (audioregion->fade_out_active()) {
- row[_columns.fadeout] = string_compose("%1%2%3", " ", buf, " ");
- } else {
- row[_columns.fadeout] = string_compose("%1%2%3", "(", buf, ")");
- }
+ char buf[32];
+ format_position (audioregion->fade_out()->back()->when, buf, sizeof (buf), audioregion->fade_out_active());
+ row[_columns.fadeout] = buf;
}
}
}