#include <glib.h>
#include <pangomm/init.h>
#include <boost/algorithm/string.hpp>
+#include <boost/range/algorithm/replace_if.hpp>
#include <boost/thread.hpp>
#include <boost/filesystem.hpp>
#ifdef DCPOMATIC_WINDOWS
while (i < int64_t (files.size()) && to_do > 0) {
FILE* f = fopen_boost (files[i], "rb");
if (!f) {
- throw OpenFileError (files[i].string());
+ throw OpenFileError (files[i].string(), errno, true);
}
boost::uintmax_t this_time = min (to_do, boost::filesystem::file_size (files[i]));
while (i >= 0 && to_do > 0) {
FILE* f = fopen_boost (files[i], "rb");
if (!f) {
- throw OpenFileError (files[i].string());
+ throw OpenFileError (files[i].string(), errno, true);
}
boost::uintmax_t this_time = min (to_do, boost::filesystem::file_size (files[i]));
DCPOMATIC_ASSERT (MAX_DCP_AUDIO_CHANNELS == 16);
/// TRANSLATORS: these are the names of audio channels; Lfe (sub) is the low-frequency
- /// enhancement channel (sub-woofer). HI is the hearing-impaired audio track and
- /// VI is the visually-impaired audio track (audio describe).
+ /// enhancement channel (sub-woofer).
string const channels[] = {
_("Left"),
_("Right"),
return channels[c];
}
+string
+short_audio_channel_name (int c)
+{
+ DCPOMATIC_ASSERT (MAX_DCP_AUDIO_CHANNELS == 16);
+
+ /// TRANSLATORS: these are short names of audio channels; Lfe is the low-frequency
+ /// enhancement channel (sub-woofer). HI is the hearing-impaired audio track and
+ /// VI is the visually-impaired audio track (audio describe). DBP is the D-BOX
+ /// primary channel and DBS is the D-BOX secondary channel.
+ string const channels[] = {
+ _("L"),
+ _("R"),
+ _("C"),
+ _("Lfe"),
+ _("Ls"),
+ _("Rs"),
+ _("HI"),
+ _("VI"),
+ _("Lc"),
+ _("Rc"),
+ _("BsL"),
+ _("BsR"),
+ _("DBP"),
+ _("DBS"),
+ _(""),
+ _("")
+ };
+
+ return channels[c];
+}
+
+
bool
valid_image_file (boost::filesystem::path f)
{
string
tidy_for_filename (string f)
{
- string t;
- for (size_t i = 0; i < f.length(); ++i) {
- if (isalnum (f[i]) || f[i] == '_' || f[i] == '-') {
- t += f[i];
- } else {
- t += '_';
- }
- }
-
- return t;
+ boost::replace_if (f, boost::is_any_of ("\\/:"), '_');
+ return f;
}
dcp::Size
return lexical_cast<float> (s);
}
}
-
-bool
-string_not_empty (string s)
-{
- return !s.empty ();
-}