From fb203f3df8d6b062ac6c8cf71306c4c73f94a360 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 12 May 2020 14:59:44 +0200 Subject: Consolidate delta-string format, avoid markup --- libs/ardour/transport_master.cc | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'libs/ardour/transport_master.cc') 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); +} -- cgit v1.2.3