From: Carl Hetherington Date: Wed, 25 Nov 2020 22:58:25 +0000 (+0100) Subject: Disallow referring to subtitles / closed captions with start trim. X-Git-Tag: v2.15.108~11 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=67bd4a37f5836ef34d9b5752744061d4be07e6e1 Disallow referring to subtitles / closed captions with start trim. Since per Bv2.1 we can't have subs / closed captions with non-zero entry point I think we have no choice but to rewrite in that case (#1802). --- diff --git a/src/lib/dcp_content.cc b/src/lib/dcp_content.cc index f695332ec..3b90c9c4f 100644 --- a/src/lib/dcp_content.cc +++ b/src/lib/dcp_content.cc @@ -35,7 +35,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -734,18 +736,39 @@ DCPContent::can_reference_text (shared_ptr film, TextType type, stri } BOOST_FOREACH (shared_ptr i, decoder->reels()) { - if (type == TEXT_OPEN_SUBTITLE && !i->main_subtitle()) { - /// TRANSLATORS: this string will follow "Cannot reference this DCP: " - why_not = _("it does not have open subtitles in all its reels."); - return false; + if (type == TEXT_OPEN_SUBTITLE) { + if (!i->main_subtitle()) { + /// TRANSLATORS: this string will follow "Cannot reference this DCP: " + why_not = _("it does not have open subtitles in all its reels."); + return false; + } else if (i->main_subtitle()->entry_point().get_value_or(0) != 0) { + /// TRANSLATORS: this string will follow "Cannot reference this DCP: " + why_not = _("one if its subtitle reels has a non-zero entry point so it must be re-written."); + return false; + } } - if (type == TEXT_CLOSED_CAPTION && i->closed_captions().empty()) { - /// TRANSLATORS: this string will follow "Cannot reference this DCP: " - why_not = _("it does not have closed captions in all its reels."); - return false; + if (type == TEXT_CLOSED_CAPTION) { + if (i->closed_captions().empty()) { + /// TRANSLATORS: this string will follow "Cannot reference this DCP: " + why_not = _("it does not have closed captions in all its reels."); + return false; + } + BOOST_FOREACH (shared_ptr j, i->closed_captions()) { + if (j->entry_point().get_value_or(0) != 0) { + /// TRANSLATORS: this string will follow "Cannot reference this DCP: " + why_not = _("one if its closed caption has a non-zero entry point so it must be re-written."); + return false; + } + } } } + if (trim_start() != dcpomatic::ContentTime()) { + /// TRANSLATORS: this string will follow "Cannot reference this DCP: " + why_not = _("it has a start trim so its subtitles or closed captions must be re-written."); + return false; + } + /// TRANSLATORS: this string will follow "Cannot reference this DCP: " return can_reference (film, bind (&check_text, _1), _("it overlaps other text content; remove the other content."), why_not); } diff --git a/src/wx/text_panel.cc b/src/wx/text_panel.cc index 30c2010d0..b21d33ce5 100644 --- a/src/wx/text_panel.cc +++ b/src/wx/text_panel.cc @@ -456,6 +456,8 @@ TextPanel::film_content_changed (int property) setup_sensitivity (); } else if (property == DCPContentProperty::TEXTS) { setup_sensitivity (); + } else if (property == ContentProperty::TRIM_START) { + setup_sensitivity (); } }