X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fdcp_content_type.cc;h=6d7286a488970861930e10a17e1271ebacb001b6;hb=423996af81218d48dbeaccef52ff822e02c43128;hp=4fedd366c896c15adae703f09ce38a0f53729a67;hpb=f525fad0c38e198f35055e639184fa983a3d5d56;p=dcpomatic.git diff --git a/src/lib/dcp_content_type.cc b/src/lib/dcp_content_type.cc index 4fedd366c..6d7286a48 100644 --- a/src/lib/dcp_content_type.cc +++ b/src/lib/dcp_content_type.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2012-2020 Carl Hetherington + Copyright (C) 2012-2021 Carl Hetherington This file is part of DCP-o-matic. @@ -24,14 +24,17 @@ #include "dcp_content_type.h" #include "dcpomatic_assert.h" -#include #include "i18n.h" + +using boost::optional; using namespace std; + vector DCPContentType::_dcp_content_types; + DCPContentType::DCPContentType (string p, dcp::ContentKind k, string d) : _pretty_name (p) , _libdcp_kind (k) @@ -40,27 +43,31 @@ DCPContentType::DCPContentType (string p, dcp::ContentKind k, string d) } + void DCPContentType::setup_dcp_content_types () { - _dcp_content_types.push_back (new DCPContentType (_("Feature"), dcp::FEATURE, N_("FTR"))); - _dcp_content_types.push_back (new DCPContentType (_("Short"), dcp::SHORT, N_("SHR"))); - _dcp_content_types.push_back (new DCPContentType (_("Trailer"), dcp::TRAILER, N_("TLR"))); - _dcp_content_types.push_back (new DCPContentType (_("Test"), dcp::TEST, N_("TST"))); - _dcp_content_types.push_back (new DCPContentType (_("Transitional"), dcp::TRANSITIONAL, N_("XSN"))); - _dcp_content_types.push_back (new DCPContentType (_("Rating"), dcp::RATING, N_("RTG"))); - _dcp_content_types.push_back (new DCPContentType (_("Teaser"), dcp::TEASER, N_("TSR"))); - _dcp_content_types.push_back (new DCPContentType (_("Policy"), dcp::POLICY, N_("POL"))); - _dcp_content_types.push_back (new DCPContentType (_("Public Service Announcement"), dcp::PUBLIC_SERVICE_ANNOUNCEMENT, N_("PSA"))); - _dcp_content_types.push_back (new DCPContentType (_("Advertisement"), dcp::ADVERTISEMENT, N_("ADV"))); - _dcp_content_types.push_back (new DCPContentType (_("Episode"), dcp::EPISODE, N_("EPS"))); - _dcp_content_types.push_back (new DCPContentType (_("Promo"), dcp::PROMO, N_("PRO"))); + _dcp_content_types = { + new DCPContentType(_("Feature"), dcp::ContentKind::FEATURE, N_("FTR")), + new DCPContentType(_("Short"), dcp::ContentKind::SHORT, N_("SHR")), + new DCPContentType(_("Trailer"), dcp::ContentKind::TRAILER, N_("TLR")), + new DCPContentType(_("Test"), dcp::ContentKind::TEST, N_("TST")), + new DCPContentType(_("Transitional"), dcp::ContentKind::TRANSITIONAL, N_("XSN")), + new DCPContentType(_("Rating"), dcp::ContentKind::RATING, N_("RTG")), + new DCPContentType(_("Teaser"), dcp::ContentKind::TEASER, N_("TSR")), + new DCPContentType(_("Policy"), dcp::ContentKind::POLICY, N_("POL")), + new DCPContentType(_("Public Service Announcement"), dcp::ContentKind::PUBLIC_SERVICE_ANNOUNCEMENT, N_("PSA")), + new DCPContentType(_("Advertisement"), dcp::ContentKind::ADVERTISEMENT, N_("ADV")), + new DCPContentType(_("Episode"), dcp::ContentKind::EPISODE, N_("EPS")), + new DCPContentType(_("Promo"), dcp::ContentKind::PROMO, N_("PRO")) + }; } + DCPContentType const * DCPContentType::from_isdcf_name (string n) { - BOOST_FOREACH (DCPContentType const * i, _dcp_content_types) { + for (auto i: _dcp_content_types) { if (i->isdcf_name() == n) { return i; } @@ -69,28 +76,30 @@ DCPContentType::from_isdcf_name (string n) return 0; } + DCPContentType const * DCPContentType::from_libdcp_kind (dcp::ContentKind kind) { - BOOST_FOREACH (DCPContentType const * i, _dcp_content_types) { + for (auto i: _dcp_content_types) { if (i->libdcp_kind() == kind) { return i; } } DCPOMATIC_ASSERT (false); - return 0; + return nullptr; } DCPContentType const * DCPContentType::from_index (int n) { - DCPOMATIC_ASSERT (n >= 0 && n < int (_dcp_content_types.size ())); + DCPOMATIC_ASSERT (n >= 0 && n < int(_dcp_content_types.size())); return _dcp_content_types[n]; } -int + +optional DCPContentType::as_index (DCPContentType const * c) { vector::size_type i = 0; @@ -98,13 +107,14 @@ DCPContentType::as_index (DCPContentType const * c) ++i; } - if (i == _dcp_content_types.size ()) { - return -1; + if (i == _dcp_content_types.size()) { + return {}; } return i; } + vector DCPContentType::all () {