summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2026-03-02 23:16:32 +0100
committerCarl Hetherington <cth@carlh.net>2026-03-02 23:16:32 +0100
commit8ed27c4278bc147b99602f59ede8639bbc8d00e6 (patch)
tree6642179a5018f216cadf8a859019900c10350a08
parent262acaf9ad9b617bfab496df6011acf61cc4d525 (diff)
Use new SubtitleFormat enum instead of dcp::Standard.
-rw-r--r--src/lib/subtitle_film_encoder.cc22
-rw-r--r--src/lib/subtitle_film_encoder.h5
-rw-r--r--src/lib/subtitle_format.h32
-rw-r--r--src/tools/dcpomatic.cc2
-rw-r--r--src/wx/export_subtitles_dialog.cc20
-rw-r--r--src/wx/export_subtitles_dialog.h3
6 files changed, 59 insertions, 25 deletions
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<dcp::InteropTextAsset>();
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<dcp::SMPTETextAsset>();
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<DCPTextTrack>
if (!_assets[_reel_index].first) {
shared_ptr<dcp::TextAsset> asset;
auto const lang = _film->open_text_languages();
- switch (_standard) {
- case dcp::Standard::INTEROP:
+ switch (_format) {
+ case SubtitleFormat::XML:
{
auto s = make_shared<dcp::InteropTextAsset>();
s->set_movie_title(_film->name());
@@ -168,7 +168,7 @@ SubtitleFilmEncoder::text(PlayerText subs, TextType type, optional<DCPTextTrack>
_assets[_reel_index].first = s;
break;
}
- case dcp::Standard::SMPTE:
+ case SubtitleFormat::MXF:
{
auto s = make_shared<dcp::SMPTETextAsset>();
s->set_content_title_text(_film->name());
@@ -194,7 +194,7 @@ SubtitleFilmEncoder::text(PlayerText subs, TextType type, optional<DCPTextTrack>
/* 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<dcp::TextString>(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<dcpomatic::DCPTime> _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 <cth@carlh.net>
+
+ 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 <http://www.gnu.org/licenses/>.
+
+*/
+
+
+#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 <dcp/types.h>
#include <dcp/warnings.h>
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();