for (int i = 0; i < examiner->text_count(TextType::OPEN_SUBTITLE); ++i) {
auto c = make_shared<TextContent>(this, TextType::OPEN_SUBTITLE, TextType::OPEN_SUBTITLE);
c->set_language (examiner->open_subtitle_language());
- add_fonts_from_examiner(c, examiner->fonts());
+ examiner->add_fonts(c);
new_text.push_back (c);
}
for (int i = 0; i < examiner->text_count(TextType::CLOSED_CAPTION); ++i) {
auto c = make_shared<TextContent>(this, TextType::CLOSED_CAPTION, TextType::CLOSED_CAPTION);
c->set_dcp_track (examiner->dcp_text_track(i));
- add_fonts_from_examiner(c, examiner->fonts());
+ examiner->add_fonts(c);
new_text.push_back (c);
}
}
boost::mutex::scoped_lock lm (_mutex);
+
node->add_child("Name")->add_child_text (_name);
node->add_child("Encrypted")->add_child_text (_encrypted ? "1" : "0");
node->add_child("NeedsAssets")->add_child_text (_needs_assets ? "1" : "0");
s += i->identifier () + " ";
}
+ boost::mutex::scoped_lock lm(_mutex);
+
s += string (_reference_video ? "1" : "0");
for (auto text: _reference_text) {
s += string(text ? "1" : "0");
/// TRANSLATORS: this string will follow "Cannot reference this DCP: "
return can_reference(
film,
- [](shared_ptr<const Content> c) {
- return !c->text.empty();
+ [type](shared_ptr<const Content> c) {
+ return std::find_if(c->text.begin(), c->text.end(), [type](shared_ptr<const TextContent> t) { return t->type() == type; }) != c->text.end();
},
_("they overlap other text content; remove the other content."),
why_not
return;
}
+ if (this == dc.get()) {
+ return;
+ }
+
+ boost::mutex::scoped_lock lm(_mutex);
+ boost::mutex::scoped_lock lm2(dc->_mutex);
+
_reference_video = dc->_reference_video;
_reference_audio = dc->_reference_audio;
_reference_text = dc->_reference_text;
}
-void
-add_fonts_from_examiner(shared_ptr<TextContent> text, vector<vector<shared_ptr<Font>>> const & all_fonts)
-{
- int reel_number = 0;
- for (auto reel_fonts: all_fonts) {
- for (auto font: reel_fonts) {
- /* Each reel could have its own font with the same ID, so we disambiguate them here
- * by prepending the reel number. We do the same disambiguation when emitting the
- * subtitles in the DCP decoder.
- */
- auto font_copy = make_shared<dcpomatic::Font>(*font);
- font_copy->set_id(id_for_font_in_reel(font->id(), reel_number));
- text->add_font(font_copy);
- }
- ++reel_number;
- }
-
-}
-
-
-string
-id_for_font_in_reel(string id, int reel)
-{
- return String::compose("%1_%2", reel, id);
-}
-
-
void
DCPContent::check_font_ids()
{
}
DCPExaminer examiner(shared_from_this(), true);
- add_fonts_from_examiner(text.front(), examiner.fonts());
+ examiner.add_fonts(text.front());
}