mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-09 07:05:43 +01:00
Consolidate delta-string format, avoid markup
This commit is contained in:
parent
b36e6b8341
commit
fb203f3df8
6 changed files with 33 additions and 38 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue