diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-04-02 23:45:19 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-04-04 20:48:35 +0200 |
| commit | ea51ac3483161343b7aefabe54420c6cb431c0fe (patch) | |
| tree | d795c52c13989af628a28abad11d91c2d14f2405 /src | |
| parent | 48bfa4b2040d2bacd6befdab6c12b2ee3e9be5a1 (diff) | |
Use studio and facility from Interop/SMPTE metadata rather than ISDCF.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/film.cc | 20 | ||||
| -rw-r--r-- | src/lib/film.h | 7 | ||||
| -rw-r--r-- | src/lib/isdcf_metadata.cc | 11 | ||||
| -rw-r--r-- | src/lib/isdcf_metadata.h | 2 | ||||
| -rw-r--r-- | src/wx/dcp_panel.cc | 2 | ||||
| -rw-r--r-- | src/wx/isdcf_metadata_dialog.cc | 10 | ||||
| -rw-r--r-- | src/wx/isdcf_metadata_dialog.h | 2 | ||||
| -rw-r--r-- | src/wx/metadata_dialog.cc | 75 | ||||
| -rw-r--r-- | src/wx/metadata_dialog.h | 10 | ||||
| -rw-r--r-- | src/wx/smpte_metadata_dialog.cc | 33 | ||||
| -rw-r--r-- | src/wx/smpte_metadata_dialog.h | 4 |
11 files changed, 111 insertions, 65 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc index 1f188021b..1275c571b 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -490,6 +490,9 @@ Film::metadata (bool with_content_paths) const if (_facility) { root->add_child("Facility")->add_child_text(*_facility); } + if (_studio) { + root->add_child("Studio")->add_child_text(*_studio); + } if (_luminance) { root->add_child("LuminanceValue")->add_child_text(raw_convert<string>(_luminance->value())); root->add_child("LuminanceUnit")->add_child_text(dcp::Luminance::unit_to_string(_luminance->unit())); @@ -666,6 +669,7 @@ Film::read_metadata (optional<boost::filesystem::path> path) _chain = f.optional_string_child("Chain"); _distributor = f.optional_string_child("Distributor"); _facility = f.optional_string_child("Facility"); + _studio = f.optional_string_child("Studio"); auto value = f.optional_number_child<float>("LuminanceValue"); auto unit = f.optional_string_child("LuminanceUnit"); @@ -986,8 +990,8 @@ Film::isdcf_name (bool if_created_now) const d += "_" + resolution_to_string (_resolution); - if (!dm.studio.empty ()) { - d += "_" + dm.studio; + if (_studio && _studio->length() >= 2) { + d += "_" + to_upper (_studio->substr(0, 4)); } if (if_created_now) { @@ -996,8 +1000,8 @@ Film::isdcf_name (bool if_created_now) const d += "_" + boost::gregorian::to_iso_string (_isdcf_date); } - if (!dm.facility.empty ()) { - d += "_" + dm.facility; + if (_facility && _facility->length() >= 3) { + d += "_" + to_upper(_facility->substr(0, 3)); } if (_interop) { @@ -2061,6 +2065,14 @@ Film::set_facility (optional<string> f) } +void +Film::set_studio (optional<string> s) +{ + FilmChangeSignaller ch (this, Property::STUDIO); + _studio = s; +} + + optional<DCPTime> Film::marker (dcp::Marker type) const { diff --git a/src/lib/film.h b/src/lib/film.h index 6b50bba5e..fa87c6c35 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -239,6 +239,7 @@ public: CHAIN, DISTRIBUTOR, FACILITY, + STUDIO, LUMINANCE, }; @@ -373,6 +374,10 @@ public: return _facility; } + boost::optional<std::string> studio () const { + return _studio; + } + boost::optional<dcp::Luminance> luminance () const { return _luminance; } @@ -416,6 +421,7 @@ public: void set_status (dcp::Status s); void set_chain (boost::optional<std::string> c = boost::none); void set_facility (boost::optional<std::string> f = boost::none); + void set_studio (boost::optional<std::string> s = boost::none); void set_distributor (boost::optional<std::string> d = boost::none); void set_luminance (boost::optional<dcp::Luminance> l = boost::none); @@ -522,6 +528,7 @@ private: boost::optional<std::string> _chain; boost::optional<std::string> _distributor; boost::optional<std::string> _facility; + boost::optional<std::string> _studio; boost::optional<dcp::Luminance> _luminance; int _state_version; diff --git a/src/lib/isdcf_metadata.cc b/src/lib/isdcf_metadata.cc index c190ba3dc..eb8bcb1a5 100644 --- a/src/lib/isdcf_metadata.cc +++ b/src/lib/isdcf_metadata.cc @@ -34,10 +34,7 @@ using std::shared_ptr; using dcp::raw_convert; ISDCFMetadata::ISDCFMetadata (cxml::ConstNodePtr node) - : studio (node->string_child ("Studio")) - , facility (node->string_child ("Facility")) - /* This stuff was added later */ - , temp_version (node->optional_bool_child ("TempVersion").get_value_or (false)) + : temp_version (node->optional_bool_child ("TempVersion").get_value_or (false)) , pre_release (node->optional_bool_child ("PreRelease").get_value_or (false)) , red_band (node->optional_bool_child ("RedBand").get_value_or (false)) , chain (node->optional_string_child ("Chain").get_value_or ("")) @@ -50,8 +47,6 @@ ISDCFMetadata::ISDCFMetadata (cxml::ConstNodePtr node) void ISDCFMetadata::as_xml (xmlpp::Node* root) const { - root->add_child("Studio")->add_child_text (studio); - root->add_child("Facility")->add_child_text (facility); root->add_child("TempVersion")->add_child_text (temp_version ? "1" : "0"); root->add_child("PreRelease")->add_child_text (pre_release ? "1" : "0"); root->add_child("RedBand")->add_child_text (red_band ? "1" : "0"); @@ -63,9 +58,7 @@ ISDCFMetadata::as_xml (xmlpp::Node* root) const bool operator== (ISDCFMetadata const & a, ISDCFMetadata const & b) { - return a.studio == b.studio && - a.facility == b.facility && - a.temp_version == b.temp_version && + return a.temp_version == b.temp_version && a.pre_release == b.pre_release && a.red_band == b.red_band && a.chain == b.chain && diff --git a/src/lib/isdcf_metadata.h b/src/lib/isdcf_metadata.h index 1c80e7b5d..b578dc997 100644 --- a/src/lib/isdcf_metadata.h +++ b/src/lib/isdcf_metadata.h @@ -43,8 +43,6 @@ public: void as_xml (xmlpp::Node *) const; void read_old_metadata (std::string, std::string); - std::string studio; - std::string facility; /** true if this is a temporary version (without final picture or sound) */ bool temp_version; /** true if this is a pre-release version (final picture and sound, but without accessibility features) */ diff --git a/src/wx/dcp_panel.cc b/src/wx/dcp_panel.cc index 6d0e64965..a46ae0226 100644 --- a/src/wx/dcp_panel.cc +++ b/src/wx/dcp_panel.cc @@ -450,6 +450,8 @@ DCPPanel::film_changed (Film::Property p) case Film::Property::VERSION_NUMBER: case Film::Property::RELEASE_TERRITORY: case Film::Property::RATINGS: + case Film::Property::FACILITY: + case Film::Property::STUDIO: setup_dcp_name (); break; default: diff --git a/src/wx/isdcf_metadata_dialog.cc b/src/wx/isdcf_metadata_dialog.cc index f7cb8df8c..559047742 100644 --- a/src/wx/isdcf_metadata_dialog.cc +++ b/src/wx/isdcf_metadata_dialog.cc @@ -35,12 +35,6 @@ using std::shared_ptr; ISDCFMetadataDialog::ISDCFMetadataDialog (wxWindow* parent, ISDCFMetadata dm, bool threed) : TableDialog (parent, _("ISDCF name"), 2, 1, true) { - add (_("Studio (e.g. TCF)"), true); - _studio = add (new wxTextCtrl (this, wxID_ANY)); - - add (_("Facility (e.g. DLA)"), true); - _facility = add (new wxTextCtrl (this, wxID_ANY)); - _temp_version = add (new CheckBox(this, _("Temp version"))); add_spacer (); @@ -63,8 +57,6 @@ ISDCFMetadataDialog::ISDCFMetadataDialog (wxWindow* parent, ISDCFMetadata dm, bo add (_("Mastered luminance (e.g. 14fl)"), true); _mastered_luminance = add (new wxTextCtrl (this, wxID_ANY)); - _studio->SetValue (std_to_wx (dm.studio)); - _facility->SetValue (std_to_wx (dm.facility)); _temp_version->SetValue (dm.temp_version); _pre_release->SetValue (dm.pre_release); _red_band->SetValue (dm.red_band); @@ -81,8 +73,6 @@ ISDCFMetadataDialog::isdcf_metadata () const { ISDCFMetadata dm; - dm.studio = wx_to_std (_studio->GetValue ()); - dm.facility = wx_to_std (_facility->GetValue ()); dm.temp_version = _temp_version->GetValue (); dm.pre_release = _pre_release->GetValue (); dm.red_band = _red_band->GetValue (); diff --git a/src/wx/isdcf_metadata_dialog.h b/src/wx/isdcf_metadata_dialog.h index 2fc8ca8c3..47cfd54a7 100644 --- a/src/wx/isdcf_metadata_dialog.h +++ b/src/wx/isdcf_metadata_dialog.h @@ -33,8 +33,6 @@ public: ISDCFMetadata isdcf_metadata () const; private: - wxTextCtrl* _studio; - wxTextCtrl* _facility; wxCheckBox* _temp_version; wxCheckBox* _pre_release; wxCheckBox* _red_band; diff --git a/src/wx/metadata_dialog.cc b/src/wx/metadata_dialog.cc index 376591ca2..17151161c 100644 --- a/src/wx/metadata_dialog.cc +++ b/src/wx/metadata_dialog.cc @@ -72,9 +72,18 @@ MetadataDialog::setup () overall_sizer->Layout (); overall_sizer->SetSizeHints (this); + _enable_facility->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::enable_facility_changed, this)); + _facility->Bind (wxEVT_TEXT, boost::bind(&MetadataDialog::facility_changed, this)); + _enable_studio->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::enable_studio_changed, this)); + _studio->Bind (wxEVT_TEXT, boost::bind(&MetadataDialog::studio_changed, this)); + _film_changed_connection = film()->Change.connect(boost::bind(&MetadataDialog::film_changed, this, _1, _2)); film_changed (ChangeType::DONE, Film::Property::RELEASE_TERRITORY); + film_changed (ChangeType::DONE, Film::Property::FACILITY); + film_changed (ChangeType::DONE, Film::Property::STUDIO); + + setup_sensitivity (); } @@ -92,6 +101,16 @@ MetadataDialog::film_changed (ChangeType type, Film::Property property) _release_territory = *rt; checked_set (_release_territory_text, std_to_wx(*dcp::LanguageTag::get_subtag_description(*_release_territory))); } + } else if (property == Film::Property::FACILITY) { + checked_set (_enable_facility, static_cast<bool>(film()->facility())); + if (film()->facility()) { + checked_set (_facility, *film()->facility()); + } + } else if (property == Film::Property::STUDIO) { + checked_set (_enable_studio, static_cast<bool>(film()->studio())); + if (film()->studio()) { + checked_set (_studio, *film()->studio()); + } } } @@ -136,6 +155,8 @@ MetadataDialog::setup_sensitivity () auto const enabled = _enable_release_territory->GetValue(); _release_territory_text->Enable (enabled); _edit_release_territory->Enable (enabled); + _facility->Enable (_enable_facility->GetValue()); + _studio->Enable (_enable_studio->GetValue()); } @@ -150,3 +171,57 @@ MetadataDialog::enable_release_territory_changed () } } + +void +MetadataDialog::setup_advanced (wxPanel* panel, wxSizer* sizer) +{ + _enable_facility = new wxCheckBox (panel, wxID_ANY, _("Facility")); + sizer->Add (_enable_facility, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL); + _facility = new wxTextCtrl (panel, wxID_ANY); + sizer->Add (_facility, 1, wxEXPAND); + + _enable_studio = new wxCheckBox (panel, wxID_ANY, _("Studio")); + sizer->Add (_enable_studio, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL); + _studio = new wxTextCtrl (panel, wxID_ANY); + sizer->Add (_studio, 1, wxEXPAND); +} + + +void +MetadataDialog::facility_changed () +{ + film()->set_facility (wx_to_std(_facility->GetValue())); +} + + +void +MetadataDialog::enable_facility_changed () +{ + setup_sensitivity (); + if (_enable_facility->GetValue()) { + film()->set_facility (wx_to_std(_facility->GetValue())); + } else { + film()->set_facility (); + } +} + + +void +MetadataDialog::studio_changed () +{ + film()->set_studio (wx_to_std(_studio->GetValue())); +} + + +void +MetadataDialog::enable_studio_changed () +{ + setup_sensitivity (); + if (_enable_studio->GetValue()) { + film()->set_studio (wx_to_std(_studio->GetValue())); + } else { + film()->set_studio (); + } +} + + diff --git a/src/wx/metadata_dialog.h b/src/wx/metadata_dialog.h index 8483d8615..50533fc0f 100644 --- a/src/wx/metadata_dialog.h +++ b/src/wx/metadata_dialog.h @@ -44,13 +44,17 @@ public: protected: virtual void setup_standard (wxPanel*, wxSizer*); - virtual void setup_advanced (wxPanel*, wxSizer*) {} + virtual void setup_advanced (wxPanel*, wxSizer*); virtual void film_changed (ChangeType type, Film::Property property); virtual void setup_sensitivity (); private: void edit_release_territory (); void enable_release_territory_changed (); + void facility_changed (); + void enable_facility_changed (); + void studio_changed (); + void enable_studio_changed (); wxCheckBox* _enable_release_territory; /** The current release territory displayed in the UI; since we can't easily convert @@ -60,6 +64,10 @@ private: boost::optional<dcp::LanguageTag::RegionSubtag> _release_territory; wxStaticText* _release_territory_text; Button* _edit_release_territory; + wxCheckBox* _enable_facility; + wxTextCtrl* _facility; + wxCheckBox* _enable_studio; + wxTextCtrl* _studio; boost::signals2::scoped_connection _film_changed_connection; }; diff --git a/src/wx/smpte_metadata_dialog.cc b/src/wx/smpte_metadata_dialog.cc index 857be282c..37a957921 100644 --- a/src/wx/smpte_metadata_dialog.cc +++ b/src/wx/smpte_metadata_dialog.cc @@ -120,11 +120,6 @@ SMPTEMetadataDialog::setup_advanced (wxPanel* panel, wxSizer* sizer) _distributor = new wxTextCtrl (panel, wxID_ANY); sizer->Add (_distributor, 1, wxEXPAND); - _enable_facility = new wxCheckBox (panel, wxID_ANY, _("Facility")); - sizer->Add (_enable_facility, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL); - _facility = new wxTextCtrl (panel, wxID_ANY); - sizer->Add (_facility, 1, wxEXPAND); - add_label_to_sizer (sizer, panel, _("Luminance"), true, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL); { auto s = new wxBoxSizer (wxHORIZONTAL); @@ -187,8 +182,6 @@ SMPTEMetadataDialog::setup () _chain->Bind (wxEVT_TEXT, boost::bind(&SMPTEMetadataDialog::chain_changed, this)); _enable_distributor->Bind (wxEVT_CHECKBOX, boost::bind(&SMPTEMetadataDialog::enable_distributor_changed, this)); _distributor->Bind (wxEVT_TEXT, boost::bind(&SMPTEMetadataDialog::distributor_changed, this)); - _enable_facility->Bind (wxEVT_CHECKBOX, boost::bind(&SMPTEMetadataDialog::enable_facility_changed, this)); - _facility->Bind (wxEVT_TEXT, boost::bind(&SMPTEMetadataDialog::facility_changed, this)); _luminance_value->Bind (wxEVT_SPINCTRLDOUBLE, boost::bind(&SMPTEMetadataDialog::luminance_changed, this)); _luminance_unit->Bind (wxEVT_CHOICE, boost::bind(&SMPTEMetadataDialog::luminance_changed, this)); @@ -197,7 +190,6 @@ SMPTEMetadataDialog::setup () film_changed (ChangeType::DONE, Film::Property::STATUS); film_changed (ChangeType::DONE, Film::Property::CHAIN); film_changed (ChangeType::DONE, Film::Property::DISTRIBUTOR); - film_changed (ChangeType::DONE, Film::Property::FACILITY); film_changed (ChangeType::DONE, Film::Property::CONTENT_VERSIONS); film_changed (ChangeType::DONE, Film::Property::LUMINANCE); @@ -240,11 +232,6 @@ SMPTEMetadataDialog::film_changed (ChangeType type, Film::Property property) if (film()->distributor()) { checked_set (_distributor, *film()->distributor()); } - } else if (property == Film::Property::FACILITY) { - checked_set (_enable_facility, static_cast<bool>(film()->facility())); - if (film()->facility()) { - checked_set (_facility, *film()->facility()); - } } else if (property == Film::Property::LUMINANCE) { auto lum = film()->luminance(); if (lum) { @@ -339,13 +326,6 @@ SMPTEMetadataDialog::distributor_changed () void -SMPTEMetadataDialog::facility_changed () -{ - film()->set_facility (wx_to_std(_facility->GetValue())); -} - - -void SMPTEMetadataDialog::luminance_changed () { dcp::Luminance::Unit unit; @@ -371,7 +351,6 @@ SMPTEMetadataDialog::setup_sensitivity () _chain->Enable (_enable_chain->GetValue()); _distributor->Enable (_enable_distributor->GetValue()); - _facility->Enable (_enable_facility->GetValue()); } @@ -399,15 +378,3 @@ SMPTEMetadataDialog::enable_distributor_changed () } -void -SMPTEMetadataDialog::enable_facility_changed () -{ - setup_sensitivity (); - if (_enable_facility->GetValue()) { - film()->set_facility (wx_to_std(_facility->GetValue())); - } else { - film()->set_facility (); - } -} - - diff --git a/src/wx/smpte_metadata_dialog.h b/src/wx/smpte_metadata_dialog.h index 28cc38143..f1cbee977 100644 --- a/src/wx/smpte_metadata_dialog.h +++ b/src/wx/smpte_metadata_dialog.h @@ -59,11 +59,9 @@ private: void status_changed (); void chain_changed (); void distributor_changed (); - void facility_changed (); void luminance_changed (); void enable_chain_changed (); void enable_distributor_changed (); - void enable_facility_changed (); LanguageTagWidget* _name_language; wxSpinCtrl* _version_number; @@ -72,8 +70,6 @@ private: wxTextCtrl* _chain; wxCheckBox* _enable_distributor; wxTextCtrl* _distributor; - wxCheckBox* _enable_facility; - wxTextCtrl* _facility; wxSpinCtrlDouble* _luminance_value; wxChoice* _luminance_unit; EditableList<dcp::Rating, RatingDialog>* _ratings; |
