summaryrefslogtreecommitdiff
path: root/src/lib/dcp_subtitle_decoder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/dcp_subtitle_decoder.cc')
-rw-r--r--src/lib/dcp_subtitle_decoder.cc28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/lib/dcp_subtitle_decoder.cc b/src/lib/dcp_subtitle_decoder.cc
index f34c495c0..16a738a51 100644
--- a/src/lib/dcp_subtitle_decoder.cc
+++ b/src/lib/dcp_subtitle_decoder.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2014-2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2014-2020 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
@@ -21,10 +21,14 @@
#include "dcp_subtitle_decoder.h"
#include "dcp_subtitle_content.h"
#include <dcp/interop_subtitle_asset.h>
+#include <dcp/load_font_node.h>
#include <iostream>
-using std::list;
using std::cout;
+using std::list;
+using std::map;
+using std::string;
+using std::vector;
using boost::shared_ptr;
using boost::dynamic_pointer_cast;
using boost::bind;
@@ -43,6 +47,18 @@ DCPSubtitleDecoder::DCPSubtitleDecoder (shared_ptr<const Film> film, shared_ptr<
first = content_time_period(*_next).from;
}
text.push_back (shared_ptr<TextDecoder> (new TextDecoder (this, content->only_text(), first)));
+
+ map<string, dcp::ArrayData> fm = c->font_data();
+ for (map<string, dcp::ArrayData>::const_iterator j = fm.begin(); j != fm.end(); ++j) {
+ _fonts.push_back (FontData(j->first, j->second));
+ }
+
+ /* Add a default font for any LoadFont nodes in our file which we haven't yet found fonts for */
+ BOOST_FOREACH (shared_ptr<dcp::LoadFontNode> i, c->load_font_nodes()) {
+ if (fm.find(i->id) == fm.end()) {
+ _fonts.push_back (FontData(i->id, dcp::ArrayData(default_font_file())));
+ }
+ }
}
void
@@ -105,3 +121,11 @@ DCPSubtitleDecoder::content_time_period (shared_ptr<dcp::Subtitle> s) const
ContentTime::from_seconds (s->out().as_seconds ())
);
}
+
+
+vector<dcpomatic::FontData>
+DCPSubtitleDecoder::fonts () const
+{
+ return _fonts;
+}
+