X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpbd%2Fconvert.cc;h=832c54acd84c186eb1cc21b55c01b87ee51cb2f3;hb=f7151b732b1b0211b1d01cb1435c57d4741f140e;hp=60d39c91e2d675eff6825a3fd9931b9b2cf35c92;hpb=79986643c0c904f6574bb5323e2233a43a9e622e;p=ardour.git diff --git a/libs/pbd/convert.cc b/libs/pbd/convert.cc index 60d39c91e2..832c54acd8 100644 --- a/libs/pbd/convert.cc +++ b/libs/pbd/convert.cc @@ -19,6 +19,10 @@ #include #include +#ifndef __STDC_FORMAT_MACROS +#define __STDC_FORMAT_MACROS +#endif +#include #include "pbd/convert.h" @@ -106,12 +110,12 @@ atof (const string& s) } vector -internationalize (const char **array) +internationalize (const char *package_name, const char **array) { vector v; for (uint32_t i = 0; array[i]; ++i) { - v.push_back (_(array[i])); + v.push_back (dgettext(package_name, array[i])); } return v; @@ -190,23 +194,44 @@ url_decode (string& url) } } +#if 0 string length2string (const int32_t frames, const float sample_rate) { - int secs = (int) (frames / sample_rate); - int hrs = secs / 3600; + int32_t secs = (int32_t) (frames / sample_rate); + int32_t hrs = secs / 3600; secs -= (hrs * 3600); - int mins = secs / 60; + int32_t mins = secs / 60; secs -= (mins * 60); - int total_secs = (hrs * 3600) + (mins * 60) + secs; - int frames_remaining = (int) floor (frames - (total_secs * sample_rate)); + int32_t total_secs = (hrs * 3600) + (mins * 60) + secs; + int32_t frames_remaining = (int) floor (frames - (total_secs * sample_rate)); float fractional_secs = (float) frames_remaining / sample_rate; char duration_str[32]; - sprintf (duration_str, "%02d:%02d:%05.2f", hrs, mins, (float) secs + fractional_secs); + sprintf (duration_str, "%02" PRIi32 ":%02" PRIi32 ":%05.2f", hrs, mins, (float) secs + fractional_secs); return duration_str; } +#endif + +string +length2string (const int64_t frames, const double sample_rate) +{ + int64_t secs = (int64_t) floor (frames / sample_rate); + int64_t hrs = secs / 3600LL; + secs -= (hrs * 3600LL); + int64_t mins = secs / 60LL; + secs -= (mins * 60LL); + + int64_t total_secs = (hrs * 3600LL) + (mins * 60LL) + secs; + int64_t frames_remaining = (int64_t) floor (frames - (total_secs * sample_rate)); + float fractional_secs = (float) frames_remaining / sample_rate; + + char duration_str[64]; + sprintf (duration_str, "%02" PRIi64 ":%02" PRIi64 ":%05.2f", hrs, mins, (float) secs + fractional_secs); + + return duration_str; +} } // namespace PBD