summaryrefslogtreecommitdiff
path: root/libs/pbd/convert.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/pbd/convert.cc')
-rw-r--r--libs/pbd/convert.cc41
1 files changed, 33 insertions, 8 deletions
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 <cmath>
#include <stdint.h>
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif
+#include <inttypes.h>
#include "pbd/convert.h"
@@ -106,12 +110,12 @@ atof (const string& s)
}
vector<string>
-internationalize (const char **array)
+internationalize (const char *package_name, const char **array)
{
vector<string> 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