X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Futil.cc;h=d20fd7dc7b0f4d94cb830dfaf6db4d07683d446d;hb=b81241ce69a689629307832f802ac4faa6ed885f;hp=1cf71ba32090a40963363d8abc37d065c9160124;hpb=ada96204dfa1456da77e2ea7469f492cfc0a5483;p=dcpomatic.git diff --git a/src/lib/util.cc b/src/lib/util.cc index 1cf71ba32..d20fd7dc7 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -36,8 +36,9 @@ #include "digester.h" #include "audio_processor.h" #include "compose.hpp" -#include +#include #include +#include #include #include #include @@ -92,6 +93,8 @@ using boost::optional; using boost::lexical_cast; using boost::bad_lexical_cast; using dcp::Size; +using dcp::raw_convert; +using dcp::locale_convert; /** Path to our executable, required by the stacktrace stuff and filled * in during App::onInit(). @@ -115,14 +118,9 @@ seconds_to_hms (int s) int h = m / 60; m -= (h * 60); - locked_stringstream hms; - hms << h << N_(":"); - hms.width (2); - hms << setfill ('0') << m << N_(":"); - hms.width (2); - hms << setfill ('0') << s; - - return hms.str (); + char buffer[64]; + snprintf (buffer, sizeof(buffer), "%d:%02d:%02d", h, m, s); + return buffer; } /** @param s Number of seconds. @@ -136,7 +134,7 @@ seconds_to_approximate_hms (int s) int h = m / 60; m -= (h * 60); - locked_stringstream ap; + string ap; bool const hours = h > 0; bool const minutes = h < 6 && m > 0; @@ -145,14 +143,14 @@ seconds_to_approximate_hms (int s) if (hours) { if (m > 30 && !minutes) { /// TRANSLATORS: h here is an abbreviation for hours - ap << (h + 1) << _("h"); + ap += locale_convert(h + 1) + _("h"); } else { /// TRANSLATORS: h here is an abbreviation for hours - ap << h << _("h"); + ap += locale_convert(h) + _("h"); } if (minutes || seconds) { - ap << N_(" "); + ap += N_(" "); } } @@ -160,24 +158,24 @@ seconds_to_approximate_hms (int s) /* Minutes */ if (s > 30 && !seconds) { /// TRANSLATORS: m here is an abbreviation for minutes - ap << (m + 1) << _("m"); + ap += locale_convert(m + 1) + _("m"); } else { /// TRANSLATORS: m here is an abbreviation for minutes - ap << m << _("m"); + ap += locale_convert(m) + _("m"); } if (seconds) { - ap << N_(" "); + ap += N_(" "); } } if (seconds) { /* Seconds */ /// TRANSLATORS: s here is an abbreviation for seconds - ap << s << _("s"); + ap += locale_convert(s) + _("s"); } - return ap.str (); + return ap; } double