summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-05-12 14:59:44 +0200
committerRobin Gareus <robin@gareus.org>2020-05-12 14:59:44 +0200
commitfb203f3df8d6b062ac6c8cf71306c4c73f94a360 (patch)
treeae20f5dcbd61bc57a63f3aec1bb59b056de23cd8 /libs
parentb36e6b8341ef8e044b1fbadd9462c454a82b85e3 (diff)
Consolidate delta-string format, avoid markup
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/transport_master.h6
-rw-r--r--libs/ardour/engine_slave.cc2
-rw-r--r--libs/ardour/ltc_slave.cc18
-rw-r--r--libs/ardour/midi_clock_slave.cc7
-rw-r--r--libs/ardour/mtc_slave.cc15
-rw-r--r--libs/ardour/transport_master.cc23
6 files changed, 33 insertions, 38 deletions
diff --git a/libs/ardour/ardour/transport_master.h b/libs/ardour/ardour/transport_master.h
index aebd4cfe06..02f728e483 100644
--- a/libs/ardour/ardour/transport_master.h
+++ b/libs/ardour/ardour/transport_master.h
@@ -43,10 +43,6 @@
#include "midi++/parser.h"
#include "midi++/types.h"
-/* used for delta_string(): (note: \u00B1 is the plus-or-minus sign) */
-#define PLUSMINUS(A) (((A) < 0) ? "-" : (((A) > 0) ? "+" : "\u00B1"))
-#define LEADINGZERO(A) ((A) < 10 ? " " : (A) < 100 ? " " : (A) < 1000 ? " " : (A) < 10000 ? " " : "")
-
namespace ARDOUR {
class TempoMap;
@@ -449,6 +445,8 @@ protected:
PBD::ScopedConnection backend_connection;
virtual void register_properties ();
+
+ virtual std::string format_delta_time (sampleoffset_t) const;
};
/** a helper class for any TransportMaster that receives its input via a MIDI
diff --git a/libs/ardour/engine_slave.cc b/libs/ardour/engine_slave.cc
index 374564e7c6..23be6ecd5b 100644
--- a/libs/ardour/engine_slave.cc
+++ b/libs/ardour/engine_slave.cc
@@ -123,7 +123,7 @@ Engine_TransportMaster::position_string () const
std::string
Engine_TransportMaster::delta_string () const
{
- return string ("\u0394 0");
+ return string ("\u0394 0 ");
}
bool
diff --git a/libs/ardour/ltc_slave.cc b/libs/ardour/ltc_slave.cc
index bbd82c0556..266a9bc305 100644
--- a/libs/ardour/ltc_slave.cc
+++ b/libs/ardour/ltc_slave.cc
@@ -696,23 +696,11 @@ LTC_TransportMaster::position_string() const
std::string
LTC_TransportMaster::delta_string() const
{
- char delta[128];
-
if (!_collect || current.timestamp == 0) {
- snprintf (delta, sizeof(delta), "\u2012\u2012\u2012\u2012");
+ return X_("\u2012\u2012\u2012\u2012");
} else if ((monotonic_cnt - current.timestamp) > 2 * samples_per_ltc_frame) {
- snprintf (delta, sizeof(delta), "%s", _("flywheel"));
+ return _("flywheel");
} else {
- if (abs (_current_delta) > ENGINE->sample_rate()) {
- int secs = rint ((double) _current_delta / ENGINE->sample_rate());
- snprintf(delta, sizeof(delta), "\u0394<span face=\"monospace\" >%s%s%d</span><span face=\"monospace\"> s</span>",
- LEADINGZERO(abs(secs)), PLUSMINUS(-secs), abs(secs));
- } else {
- snprintf (delta, sizeof(delta), "\u0394<span %s face=\"monospace\" >%s%s%lld</span><span face=\"monospace\">sm</span>",
- _sclock_synced && sync_lock_broken ? "foreground=\"red\"" : "",
- PLUSMINUS(-_current_delta), LEADINGZERO(::llabs(_current_delta)), ::llabs(_current_delta));
- }
+ return format_delta_time (_current_delta);
}
-
- return delta;
}
diff --git a/libs/ardour/midi_clock_slave.cc b/libs/ardour/midi_clock_slave.cc
index b9e1e31e6c..f3d2f3cceb 100644
--- a/libs/ardour/midi_clock_slave.cc
+++ b/libs/ardour/midi_clock_slave.cc
@@ -404,17 +404,14 @@ MIDIClock_TransportMaster::position_string () const
std::string
MIDIClock_TransportMaster::delta_string() const
{
- char delta[80];
SafeTime last;
current.safe_read (last);
if (last.timestamp == 0 || starting()) {
- snprintf(delta, sizeof(delta), "\u2012\u2012\u2012\u2012");
+ return X_("\u2012\u2012\u2012\u2012");
} else {
- snprintf(delta, sizeof(delta), "\u0394<span foreground=\"green\" face=\"monospace\" >%s%s%" PRIi64 "</span>sm",
- LEADINGZERO(abs(_current_delta)), PLUSMINUS(-_current_delta), abs(_current_delta));
+ return format_delta_time (_current_delta);
}
- return std::string(delta);
}
void
diff --git a/libs/ardour/mtc_slave.cc b/libs/ardour/mtc_slave.cc
index c0578d0908..181c4f277e 100644
--- a/libs/ardour/mtc_slave.cc
+++ b/libs/ardour/mtc_slave.cc
@@ -598,25 +598,14 @@ MTC_TransportMaster::position_string() const
std::string
MTC_TransportMaster::delta_string () const
{
- char delta[128];
SafeTime last;
current.safe_read (last);
- delta[0] = '\0';
-
if (last.timestamp == 0 || reset_pending) {
- snprintf(delta, sizeof(delta), "\u2012\u2012\u2012\u2012");
+ return X_("\u2012\u2012\u2012\u2012");
} else {
- if (abs (_current_delta) > _session->sample_rate()) {
- int secs = rint ((double) _current_delta / _session->sample_rate());
- snprintf(delta, sizeof(delta), "\u0394<span face=\"monospace\" >%s%s%d</span><span face=\"monospace\"> s</span>",
- LEADINGZERO(abs(secs)), PLUSMINUS(-secs), abs(secs));
- } else {
- snprintf(delta, sizeof(delta), "\u0394<span face=\"monospace\" >%s%s%" PRIi64 "</span><span face=\"monospace\">sm</span>",
- PLUSMINUS(-_current_delta), LEADINGZERO(abs(_current_delta)), abs(_current_delta));
- }
+ return format_delta_time (_current_delta);
}
- return std::string(delta);
}
void
diff --git a/libs/ardour/transport_master.cc b/libs/ardour/transport_master.cc
index 2faa5dc715..d7e0a040c5 100644
--- a/libs/ardour/transport_master.cc
+++ b/libs/ardour/transport_master.cc
@@ -531,3 +531,26 @@ TimecodeTransportMaster::set_fr2997 (bool yn)
PropertyChanged (Properties::fr2997);
}
}
+
+/* used for delta_string(): (note: \u00B1 is the plus-or-minus sign) */
+#define PLUSMINUS(A) (((A) < 0) ? "-" : (((A) > 0) ? "+" : "\u00B1"))
+#define LEADINGZERO(A) ((A) < 10 ? " " : (A) < 100 ? " " : (A) < 1000 ? " " : (A) < 10000 ? " " : "")
+
+std::string
+TransportMaster::format_delta_time (sampleoffset_t delta) const
+{
+ char buf[64];
+ if (_session) {
+ samplecnt_t sr = _session->sample_rate();
+ if (abs (_current_delta) >= sr) {
+ int secs = rint ((double) delta / sr);
+ snprintf(buf, sizeof(buf), "\u0394%s%s%d s", LEADINGZERO(abs(secs)), PLUSMINUS(-secs), abs(secs));
+ buf[63] = '\0';
+ return std::string(buf);
+ }
+ }
+ /* left-align sign, to make it readable when decimals jitter */
+ snprintf (buf, sizeof(buf), "\u0394%s%s%lldsm", PLUSMINUS(-delta), LEADINGZERO(::llabs(delta)), ::llabs(delta));
+ buf[63] = '\0';
+ return std::string(buf);
+}