From 8ed27c4278bc147b99602f59ede8639bbc8d00e6 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 2 Mar 2026 23:16:32 +0100 Subject: Use new SubtitleFormat enum instead of dcp::Standard. --- src/lib/subtitle_film_encoder.cc | 22 +++++++++++----------- src/lib/subtitle_film_encoder.h | 5 +++-- src/lib/subtitle_format.h | 32 ++++++++++++++++++++++++++++++++ src/tools/dcpomatic.cc | 2 +- src/wx/export_subtitles_dialog.cc | 20 ++++++++++---------- src/wx/export_subtitles_dialog.h | 3 ++- 6 files changed, 59 insertions(+), 25 deletions(-) create mode 100644 src/lib/subtitle_format.h diff --git a/src/lib/subtitle_film_encoder.cc b/src/lib/subtitle_film_encoder.cc index 4a29ebcfa..feca363eb 100644 --- a/src/lib/subtitle_film_encoder.cc +++ b/src/lib/subtitle_film_encoder.cc @@ -56,21 +56,21 @@ SubtitleFilmEncoder::SubtitleFilmEncoder( string initial_name, bool split_reels, bool include_font, - dcp::Standard standard + SubtitleFormat format ) : FilmEncoder(film, job) , _split_reels(split_reels) , _include_font(include_font) , _reel_index(0) , _length(film->length()) - , _standard(standard) + , _format(format) { _player.set_play_referenced(); _player.set_ignore_video(); _player.set_ignore_audio(); _player.Text.connect(boost::bind(&SubtitleFilmEncoder::text, this, _1, _2, _3, _4)); - string const extension = standard == dcp::Standard::INTEROP ? ".xml" : ".mxf"; + string const extension = format == SubtitleFormat::XML ? ".xml" : ".mxf"; int const files = split_reels ? film->reels().size() : 1; for (int i = 0; i < files; ++i) { @@ -114,8 +114,8 @@ SubtitleFilmEncoder::go() for (auto& i: _assets) { if (!i.first) { /* No subtitles arrived for this asset; make an empty one so we write something to the output */ - switch (_standard) { - case dcp::Standard::INTEROP: + switch (_format) { + case SubtitleFormat::XML: { auto s = make_shared(); s->set_movie_title(_film->name()); @@ -123,7 +123,7 @@ SubtitleFilmEncoder::go() i.first = s; break; } - case dcp::Standard::SMPTE: + case SubtitleFormat::MXF: { auto s = make_shared(); s->set_content_title_text(_film->name()); @@ -134,7 +134,7 @@ SubtitleFilmEncoder::go() } } - if (_standard == dcp::Standard::SMPTE || _include_font) { + if (_format == SubtitleFormat::MXF || _include_font) { for (auto j: _player.get_subtitle_fonts()) { i.first->add_font(j->id(), j->data().get_value_or(_default_font)); } @@ -156,8 +156,8 @@ SubtitleFilmEncoder::text(PlayerText subs, TextType type, optional if (!_assets[_reel_index].first) { shared_ptr asset; auto const lang = _film->open_text_languages(); - switch (_standard) { - case dcp::Standard::INTEROP: + switch (_format) { + case SubtitleFormat::XML: { auto s = make_shared(); s->set_movie_title(_film->name()); @@ -168,7 +168,7 @@ SubtitleFilmEncoder::text(PlayerText subs, TextType type, optional _assets[_reel_index].first = s; break; } - case dcp::Standard::SMPTE: + case SubtitleFormat::MXF: { auto s = make_shared(); s->set_content_title_text(_film->name()); @@ -194,7 +194,7 @@ SubtitleFilmEncoder::text(PlayerText subs, TextType type, optional /* XXX: couldn't / shouldn't we use period here rather than getting time from the subtitle? */ i.set_in (i.in()); i.set_out(i.out()); - if (_standard == dcp::Standard::INTEROP && !_include_font) { + if (_format == SubtitleFormat::XML && !_include_font) { i.unset_font(); } _assets[_reel_index].first->add(make_shared(i)); diff --git a/src/lib/subtitle_film_encoder.h b/src/lib/subtitle_film_encoder.h index 0fbb830c3..7a5e11779 100644 --- a/src/lib/subtitle_film_encoder.h +++ b/src/lib/subtitle_film_encoder.h @@ -23,6 +23,7 @@ #include "dcpomatic_time.h" #include "film_encoder.h" #include "player_text.h" +#include "subtitle_format.h" namespace dcp { @@ -46,7 +47,7 @@ public: std::string initial_name, bool split_reels, bool include_font, - dcp::Standard standard + SubtitleFormat format ); void go() override; @@ -68,6 +69,6 @@ private: int _reel_index; boost::optional _last; dcpomatic::DCPTime _length; - dcp::Standard _standard; + SubtitleFormat _format; dcp::ArrayData _default_font; }; diff --git a/src/lib/subtitle_format.h b/src/lib/subtitle_format.h new file mode 100644 index 000000000..dbcbf6d17 --- /dev/null +++ b/src/lib/subtitle_format.h @@ -0,0 +1,32 @@ +/* + Copyright (C) 2026 Carl Hetherington + + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + DCP-o-matic is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with DCP-o-matic. If not, see . + +*/ + + +#ifndef DCPOMATIC_SUBTITLE_FORMAT_H +#define DCPOMATIC_SUBTITLE_FORMAT_H + + +enum class SubtitleFormat { + XML, + MXF +}; + + +#endif diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index 691841bbc..93b5a2c41 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -1070,7 +1070,7 @@ private: _film->isdcf_name(true), dialog.split_reels(), dialog.include_font(), - dialog.standard() + dialog.format() ) ); JobManager::instance()->add(job); diff --git a/src/wx/export_subtitles_dialog.cc b/src/wx/export_subtitles_dialog.cc index bbc8cfc01..5ce97c93c 100644 --- a/src/wx/export_subtitles_dialog.cc +++ b/src/wx/export_subtitles_dialog.cc @@ -101,30 +101,30 @@ ExportSubtitlesDialog::format_changed() void ExportSubtitlesDialog::setup_wildcard() { - _file->set_wildcard(standard() == dcp::Standard::INTEROP ? _("Subtitle files (.xml)|*.xml") : _("Subtitle files (.mxf)|*.mxf")); + _file->set_wildcard(format() == SubtitleFormat::XML ? _("Subtitle files (.xml)|*.xml") : _("Subtitle files (.mxf)|*.mxf")); } -dcp::Standard -ExportSubtitlesDialog::standard() const +SubtitleFormat +ExportSubtitlesDialog::format() const { switch (_format->get().get_value_or(0)) { case 0: - return dcp::Standard::INTEROP; + return SubtitleFormat::XML; case 1: - return dcp::Standard::SMPTE; + return SubtitleFormat::MXF; } DCPOMATIC_ASSERT(false); - return dcp::Standard::SMPTE; + return SubtitleFormat::MXF; } void ExportSubtitlesDialog::setup_sensitivity() { - bool const multi = split_reels() || (standard() == dcp::Standard::INTEROP && _include_font->GetValue()); - _include_font->Enable(standard() == dcp::Standard::INTEROP); + bool const multi = split_reels() || (format() == SubtitleFormat::XML && _include_font->GetValue()); + _include_font->Enable(format() == SubtitleFormat::XML); _file_label->Enable(!multi); _file->Enable(!multi); _dir_label->Enable(multi); @@ -145,7 +145,7 @@ ExportSubtitlesDialog::path() const if (_file->IsEnabled()) { if (auto path = _file->path()) { wxFileName fn(std_to_wx(path->string())); - fn.SetExt(char_to_wx(standard() == dcp::Standard::INTEROP ? "xml" : "mxf")); + fn.SetExt(char_to_wx(format() == SubtitleFormat::XML ? "xml" : "mxf")); return wx_to_std(fn.GetFullPath()); } } @@ -164,6 +164,6 @@ ExportSubtitlesDialog::split_reels() const bool ExportSubtitlesDialog::include_font() const { - return standard() == dcp::Standard::SMPTE || _include_font->GetValue(); + return format() == SubtitleFormat::MXF || _include_font->GetValue(); } diff --git a/src/wx/export_subtitles_dialog.h b/src/wx/export_subtitles_dialog.h index 6c18555c0..cccb016a7 100644 --- a/src/wx/export_subtitles_dialog.h +++ b/src/wx/export_subtitles_dialog.h @@ -20,6 +20,7 @@ #include "dir_picker_ctrl.h" +#include "lib/subtitle_format.h" #include #include LIBDCP_DISABLE_WARNINGS @@ -42,7 +43,7 @@ public: boost::filesystem::path path() const; bool split_reels() const; bool include_font() const; - dcp::Standard standard() const; + SubtitleFormat format() const; private: void format_changed(); -- cgit v1.2.3