#include "crypto.h"
#include "compose.hpp"
#include "audio_buffers.h"
+#include "string_text.h"
+#include "font.h"
+#include "render_text.h"
#include <dcp/locale_convert.h>
#include <dcp/util.h>
#include <dcp/raw_convert.h>
set_terminate (terminate);
+#ifdef DCPOMATIC_WINDOWS
+ putenv ("PANGOCAIRO_BACKEND=fontconfig");
+ putenv (String::compose("FONTCONFIG_PATH=%1", shared_path().string()).c_str());
+#endif
+
+#ifdef DCPOMATIC_OSX
+ setenv ("PANGOCAIRO_BACKEND", "fontconfig", 1);
+ setenv ("FONTCONFIG_PATH", shared_path().string().c_str(), 1);
+#endif
+
Pango::init ();
dcp::init ();
+#ifdef DCPOMATIC_WINDOWS
+ /* Render something to fontconfig to create its cache */
+ list<StringText> subs;
+ dcp::SubtitleString ss(
+ optional<string>(), false, false, false, dcp::Colour(), 42, 1, dcp::Time(), dcp::Time(), 0, dcp::HALIGN_CENTER, 0, dcp::VALIGN_CENTER, dcp::DIRECTION_LTR,
+ "Hello dolly", dcp::NONE, dcp::Colour(), dcp::Time(), dcp::Time()
+ );
+ subs.push_back (StringText(ss, 0));
+ render_text (subs, list<shared_ptr<Font> >(), dcp::Size(640, 480), DCPTime(), 24);
+#endif
+
Ratio::setup_ratios ();
PresetColourConversion::setup_colour_conversion_presets ();
VideoContentScale::setup_scales ();
try {
boost::algorithm::replace_all (s, ",", ".");
return lexical_cast<float> (s);
- } catch (bad_lexical_cast) {
+ } catch (bad_lexical_cast &) {
boost::algorithm::replace_all (s, ".", ",");
return lexical_cast<float> (s);
}
}
}
+size_t
+utf8_strlen (string s)
+{
+ size_t const len = s.length ();
+ int N = 0;
+ for (size_t i = 0; i < len; ++i) {
+ unsigned char c = s[i];
+ if ((c & 0xe0) == 0xc0) {
+ ++i;
+ } else if ((c & 0xf0) == 0xe0) {
+ i += 2;
+ } else if ((c & 0xf8) == 0xf0) {
+ i += 3;
+ }
+ ++N;
+ }
+ return N;
+}
+
+string
+day_of_week_to_string (boost::gregorian::greg_weekday d)
+{
+ switch (d.as_enum()) {
+ case boost::date_time::Sunday:
+ return _("Sunday");
+ case boost::date_time::Monday:
+ return _("Monday");
+ case boost::date_time::Tuesday:
+ return _("Tuesday");
+ case boost::date_time::Wednesday:
+ return _("Wednesday");
+ case boost::date_time::Thursday:
+ return _("Thursday");
+ case boost::date_time::Friday:
+ return _("Friday");
+ case boost::date_time::Saturday:
+ return _("Saturday");
+ }
+
+ return d.as_long_string ();
+}
+
#ifdef DCPOMATIC_VARIANT_SWAROOP
/* Make up a key from the machine UUID */
void
write_swaroop_chain (shared_ptr<const dcp::CertificateChain> chain, boost::filesystem::path output)
{
- cout << "write " << output.string() << "\n";
-
scoped_array<uint8_t> buffer (new uint8_t[65536]);
Header* header = (Header *) buffer.get();
memset (header, 0, sizeof(Header));