From: Carl Hetherington Date: Sat, 3 Apr 2021 18:08:12 +0000 (+0200) Subject: Move luminance to Interop/SMPTE metadata and remove the ISDCF metadata dialogue. X-Git-Tag: v2.15.138~5^2~1 X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=8336cba4e6a8c594680696d2337ddc800d84c267 Move luminance to Interop/SMPTE metadata and remove the ISDCF metadata dialogue. --- diff --git a/src/lib/config.cc b/src/lib/config.cc index 0dcc84117..6ec3b0588 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -309,12 +309,6 @@ try _dcp_product_version = f.optional_string_child("DCPProductVersion").get_value_or(""); _dcp_j2k_comment = f.optional_string_child("DCPJ2KComment").get_value_or(""); - if (version && version.get() >= 2) { - _default_isdcf_metadata = ISDCFMetadata (f.node_child ("ISDCFMetadata")); - } else { - _default_isdcf_metadata = ISDCFMetadata (f.node_child ("DCIMetadata")); - } - _default_still_length = f.optional_number_child("DefaultStillLength").get_value_or (10); _default_j2k_bandwidth = f.optional_number_child("DefaultJ2KBandwidth").get_value_or (200000000); _default_audio_delay = f.optional_number_child("DefaultAudioDelay").get_value_or (0); @@ -688,14 +682,6 @@ Config::write_config () const /* [XML] UploadAfterMakeDCP 1 to upload to a TMS after making a DCP, 0 for no upload. */ root->add_child("UploadAfterMakeDCP")->add_child_text (_upload_after_make_dcp ? "1" : "0"); - /* [XML] ISDCFMetadata Default ISDCF metadata to use for new films; child tags are <ContentVersion>, - <AudioLanguage>, <SubtitleLanguage>, <Territory>, - <Rating>, <Studio>, <Facility>, <TempVersion>, - <PreRelease>, <RedBand>, <Chain>, <TwoDVersionOFThreeD>, - <MasteredLuminance>. - */ - _default_isdcf_metadata.as_xml (root->add_child ("ISDCFMetadata")); - /* [XML] DefaultStillLength Default length (in seconds) for still images in new films. */ root->add_child("DefaultStillLength")->add_child_text (raw_convert (_default_still_length)); /* [XML] DefaultJ2KBandwidth Default bitrate (in bits per second) for JPEG2000 data in new films. */ diff --git a/src/lib/config.h b/src/lib/config.h index 0a48a00e1..eb8f88da9 100644 --- a/src/lib/config.h +++ b/src/lib/config.h @@ -25,7 +25,6 @@ #ifndef DCPOMATIC_CONFIG_H #define DCPOMATIC_CONFIG_H -#include "isdcf_metadata.h" #include "types.h" #include "state.h" #include "edid.h" @@ -166,10 +165,6 @@ public: return _show_experimental_audio_processors; } - ISDCFMetadata default_isdcf_metadata () const { - return _default_isdcf_metadata; - } - boost::optional language () const { return _language; } @@ -636,10 +631,6 @@ public: maybe_set (_show_experimental_audio_processors, e, SHOW_EXPERIMENTAL_AUDIO_PROCESSORS); } - void set_default_isdcf_metadata (ISDCFMetadata d) { - maybe_set (_default_isdcf_metadata, d); - } - void set_language (std::string l) { if (_language && _language.get() == l) { return; @@ -1174,8 +1165,6 @@ private: bool _allow_any_container; /** Offer the upmixers in the audio processor settings */ bool _show_experimental_audio_processors; - /** Default ISDCF metadata for newly-created Films */ - ISDCFMetadata _default_isdcf_metadata; boost::optional _language; /** Default length of still image content (seconds) */ int _default_still_length; diff --git a/src/lib/film.cc b/src/lib/film.cc index 147470585..a9ac82b5a 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -155,7 +155,6 @@ Film::Film (optional dir) , _encrypted (false) , _context_id (dcp::make_uuid ()) , _j2k_bandwidth (Config::instance()->default_j2k_bandwidth ()) - , _isdcf_metadata (Config::instance()->default_isdcf_metadata ()) , _video_frame_rate (24) , _audio_channels (Config::instance()->default_dcp_audio_channels ()) , _three_d (false) @@ -446,7 +445,6 @@ Film::metadata (bool with_content_paths) const root->add_child("Resolution")->add_child_text (resolution_to_string (_resolution)); root->add_child("J2KBandwidth")->add_child_text (raw_convert (_j2k_bandwidth)); - _isdcf_metadata.as_xml (root->add_child ("ISDCFMetadata")); root->add_child("VideoFrameRate")->add_child_text (raw_convert (_video_frame_rate)); root->add_child("ISDCFDate")->add_child_text (boost::gregorian::to_iso_string (_isdcf_date)); root->add_child("AudioChannels")->add_child_text (raw_convert (_audio_channels)); @@ -572,11 +570,9 @@ Film::read_metadata (optional path) _name = f.string_child ("Name"); if (_state_version >= 9) { _use_isdcf_name = f.bool_child ("UseISDCFName"); - _isdcf_metadata = ISDCFMetadata (f.node_child ("ISDCFMetadata")); _isdcf_date = boost::gregorian::from_undelimited_string (f.string_child ("ISDCFDate")); } else { _use_isdcf_name = f.bool_child ("UseDCIName"); - _isdcf_metadata = ISDCFMetadata (f.node_child ("DCIMetadata")); _isdcf_date = boost::gregorian::from_undelimited_string (f.string_child ("DCIDate")); } @@ -872,8 +868,6 @@ Film::isdcf_name (bool if_created_now) const d += "-" + version; } - auto const dm = isdcf_metadata (); - if (_temp_version) { d += "-Temp"; } @@ -898,8 +892,11 @@ Film::isdcf_name (bool if_created_now) const d += "-2D"; } - if (!dm.mastered_luminance.empty ()) { - d += "-" + dm.mastered_luminance; + if (_luminance) { + auto fl = _luminance->value_in_foot_lamberts(); + char buffer[64]; + snprintf (buffer, sizeof(buffer), "%.1f", fl); + d += String::compose("-%1fl", buffer); } if (video_frame_rate() != 24) { @@ -1129,13 +1126,6 @@ Film::set_j2k_bandwidth (int b) _j2k_bandwidth = b; } -void -Film::set_isdcf_metadata (ISDCFMetadata m) -{ - FilmChangeSignaller ch (this, Property::ISDCF_METADATA); - _isdcf_metadata = m; -} - /** @param f New frame rate. * @param user_explicit true if this comes from a direct user instruction, false if it is from * DCP-o-matic being helpful. @@ -1889,7 +1879,6 @@ Film::use_template (string name) _audio_processor = _template_film->_audio_processor; _reel_type = _template_film->_reel_type; _reel_length = _template_film->_reel_length; - _isdcf_metadata = _template_film->_isdcf_metadata; } pair diff --git a/src/lib/film.h b/src/lib/film.h index e0c5cb2f7..5fc56acfb 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -29,7 +29,6 @@ #include "change_signaller.h" #include "dcp_text_track.h" #include "frame_rate_change.h" -#include "isdcf_metadata.h" #include "signaller.h" #include "types.h" #include "util.h" @@ -217,7 +216,6 @@ public: RESOLUTION, ENCRYPTED, J2K_BANDWIDTH, - ISDCF_METADATA, VIDEO_FRAME_RATE, AUDIO_CHANNELS, /** The setting of _three_d has changed */ @@ -286,10 +284,6 @@ public: return _j2k_bandwidth; } - ISDCFMetadata isdcf_metadata () const { - return _isdcf_metadata; - } - /** @return The frame rate of the DCP */ int video_frame_rate () const { return _video_frame_rate; @@ -418,7 +412,6 @@ public: void set_resolution (Resolution, bool user_explicit = true); void set_encrypted (bool); void set_j2k_bandwidth (int); - void set_isdcf_metadata (ISDCFMetadata); void set_video_frame_rate (int rate, bool user_explicit = false); void set_audio_channels (int); void set_three_d (bool); @@ -518,8 +511,6 @@ private: std::string _context_id; /** bandwidth for J2K files in bits per second */ int _j2k_bandwidth; - /** ISDCF naming stuff */ - ISDCFMetadata _isdcf_metadata; /** Frames per second to run our DCP at */ int _video_frame_rate; /** The date that we should use in a ISDCF name */ diff --git a/src/lib/isdcf_metadata.cc b/src/lib/isdcf_metadata.cc deleted file mode 100644 index 22e094b1b..000000000 --- a/src/lib/isdcf_metadata.cc +++ /dev/null @@ -1,52 +0,0 @@ -/* - Copyright (C) 2012-2019 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 . - -*/ - -#include "isdcf_metadata.h" -#include "warnings.h" -#include -#include -DCPOMATIC_DISABLE_WARNINGS -#include -DCPOMATIC_ENABLE_WARNINGS -#include - -#include "i18n.h" - -using std::string; -using std::shared_ptr; -using dcp::raw_convert; - -ISDCFMetadata::ISDCFMetadata (cxml::ConstNodePtr node) - : mastered_luminance (node->optional_string_child ("MasteredLuminance").get_value_or ("")) -{ - -} - -void -ISDCFMetadata::as_xml (xmlpp::Node* root) const -{ - root->add_child("MasteredLuminance")->add_child_text (mastered_luminance); -} - -bool -operator== (ISDCFMetadata const & a, ISDCFMetadata const & b) -{ - return a.mastered_luminance == b.mastered_luminance; -} diff --git a/src/lib/isdcf_metadata.h b/src/lib/isdcf_metadata.h deleted file mode 100644 index 4237b6a3e..000000000 --- a/src/lib/isdcf_metadata.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - Copyright (C) 2012-2019 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_ISDCF_METADATA_H -#define DCPOMATIC_ISDCF_METADATA_H - -#include -#include - -namespace xmlpp { - class Node; -} - -class ISDCFMetadata -{ -public: - ISDCFMetadata () {} - explicit ISDCFMetadata (cxml::ConstNodePtr); - - void as_xml (xmlpp::Node *) const; - void read_old_metadata (std::string, std::string); - - /** mastered luminance if there are multiple versions distributed (e.g. 35, 4fl, 6fl etc.) */ - std::string mastered_luminance; -}; - -bool operator== (ISDCFMetadata const & a, ISDCFMetadata const & b); - -#endif diff --git a/src/lib/wscript b/src/lib/wscript index 1b45152a4..7cbd85a4c 100644 --- a/src/lib/wscript +++ b/src/lib/wscript @@ -121,7 +121,6 @@ sources = """ image_examiner.cc image_filename_sorter.cc image_proxy.cc - isdcf_metadata.cc j2k_image_proxy.cc job.cc job_manager.cc diff --git a/src/wx/dcp_panel.cc b/src/wx/dcp_panel.cc index a6f4d53c0..302ed4184 100644 --- a/src/wx/dcp_panel.cc +++ b/src/wx/dcp_panel.cc @@ -20,7 +20,6 @@ #include "dcp_panel.h" #include "wx_util.h" -#include "isdcf_metadata_dialog.h" #include "audio_dialog.h" #include "focus_manager.h" #include "check_box.h" @@ -85,7 +84,6 @@ DCPPanel::DCPPanel (wxNotebook* n, shared_ptr film, weak_ptr v FocusManager::instance()->add(_name); _use_isdcf_name = new CheckBox (_panel, _("Use ISDCF name")); - _edit_isdcf_button = new Button (_panel, _("Details...")); _copy_isdcf_name_button = new Button (_panel, _("Copy as name")); /* wxST_ELLIPSIZE_MIDDLE works around a bug in GTK2 and/or wxWidgets, see @@ -126,7 +124,6 @@ DCPPanel::DCPPanel (wxNotebook* n, shared_ptr film, weak_ptr v _name->Bind (wxEVT_TEXT, boost::bind (&DCPPanel::name_changed, this)); _use_isdcf_name->Bind (wxEVT_CHECKBOX, boost::bind (&DCPPanel::use_isdcf_name_toggled, this)); - _edit_isdcf_button->Bind (wxEVT_BUTTON, boost::bind (&DCPPanel::edit_isdcf_button_clicked, this)); _copy_isdcf_name_button->Bind(wxEVT_BUTTON, boost::bind (&DCPPanel::copy_isdcf_name_button_clicked, this)); _dcp_content_type->Bind (wxEVT_CHOICE, boost::bind (&DCPPanel::dcp_content_type_changed, this)); _encrypted->Bind (wxEVT_CHECKBOX, boost::bind (&DCPPanel::encrypted_toggled, this)); @@ -162,8 +159,8 @@ DCPPanel::add_to_grid () auto name_sizer = new wxBoxSizer (wxHORIZONTAL); name_sizer->Add (_name_label, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP); - name_sizer->Add (_name, 1, wxALIGN_CENTER_VERTICAL); - _grid->Add (name_sizer, wxGBPosition(r, 0), wxGBSpan(1, 2), wxEXPAND); + name_sizer->Add (_name, 1, wxRIGHT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP); + _grid->Add (name_sizer, wxGBPosition(r, 0), wxGBSpan(1, 2), wxRIGHT | wxEXPAND, DCPOMATIC_DIALOG_BORDER); ++r; int flags = wxALIGN_CENTER_VERTICAL; @@ -173,14 +170,13 @@ DCPPanel::add_to_grid () _grid->Add (_use_isdcf_name, wxGBPosition (r, 0), wxDefaultSpan, flags); { - wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); - s->Add (_edit_isdcf_button, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_X_GAP); - s->Add (_copy_isdcf_name_button, 1, wxEXPAND | wxLEFT, DCPOMATIC_SIZER_X_GAP); + auto s = new wxBoxSizer (wxHORIZONTAL); + s->Add (_copy_isdcf_name_button, 0, wxLEFT, DCPOMATIC_SIZER_X_GAP); _grid->Add (s, wxGBPosition (r, 1), wxDefaultSpan, wxEXPAND); } ++r; - _grid->Add (_dcp_name, wxGBPosition(r, 0), wxGBSpan (1, 2), wxALIGN_CENTER_VERTICAL | wxEXPAND); + _grid->Add (_dcp_name, wxGBPosition(r, 0), wxGBSpan(1, 2), wxALIGN_CENTER_VERTICAL); ++r; add_label_to_sizer (_grid, _dcp_content_type_label, true, wxGBPosition (r, 0)); @@ -379,12 +375,8 @@ DCPPanel::film_changed (Film::Property p) } } setup_dcp_name (); - _edit_isdcf_button->Enable (_film->use_isdcf_name ()); break; } - case Film::Property::ISDCF_METADATA: - setup_dcp_name (); - break; case Film::Property::VIDEO_FRAME_RATE: { bool done = false; @@ -457,6 +449,7 @@ DCPPanel::film_changed (Film::Property p) case Film::Property::RED_BAND: case Film::Property::TWO_D_VERSION_OF_THREE_D: case Film::Property::CHAIN: + case Film::Property::LUMINANCE: setup_dcp_name (); break; default: @@ -575,7 +568,6 @@ DCPPanel::set_film (shared_ptr film) film_changed (Film::Property::RESOLUTION); film_changed (Film::Property::ENCRYPTED); film_changed (Film::Property::J2K_BANDWIDTH); - film_changed (Film::Property::ISDCF_METADATA); film_changed (Film::Property::VIDEO_FRAME_RATE); film_changed (Film::Property::AUDIO_CHANNELS); film_changed (Film::Property::SEQUENCE); @@ -601,7 +593,6 @@ DCPPanel::setup_sensitivity () { _name->Enable (_generally_sensitive); _use_isdcf_name->Enable (_generally_sensitive); - _edit_isdcf_button->Enable (_generally_sensitive); _dcp_content_type->Enable (_generally_sensitive); _copy_isdcf_name_button->Enable (_generally_sensitive); _encrypted->Enable (_generally_sensitive); @@ -647,19 +638,6 @@ DCPPanel::use_isdcf_name_toggled () _film->set_use_isdcf_name (_use_isdcf_name->GetValue ()); } -void -DCPPanel::edit_isdcf_button_clicked () -{ - if (!_film) { - return; - } - - auto d = new ISDCFMetadataDialog (_panel, _film->isdcf_metadata ()); - d->ShowModal (); - _film->set_isdcf_metadata (d->isdcf_metadata ()); - d->Destroy (); -} - void DCPPanel::setup_dcp_name () { diff --git a/src/wx/dcp_panel.h b/src/wx/dcp_panel.h index 9b362a26c..a076e4bb4 100644 --- a/src/wx/dcp_panel.h +++ b/src/wx/dcp_panel.h @@ -64,7 +64,6 @@ public: private: void name_changed (); void use_isdcf_name_toggled (); - void edit_isdcf_button_clicked (); void copy_isdcf_name_button_clicked (); void container_changed (); void dcp_content_type_changed (); @@ -118,7 +117,6 @@ private: wxStaticText* _container_label; wxChoice* _container; wxStaticText* _container_size; - wxButton* _edit_isdcf_button; wxButton* _copy_isdcf_name_button; wxStaticText* _j2k_bandwidth_label; wxStaticText* _mbits_label; diff --git a/src/wx/full_config_dialog.cc b/src/wx/full_config_dialog.cc index 27159e7f2..962295528 100644 --- a/src/wx/full_config_dialog.cc +++ b/src/wx/full_config_dialog.cc @@ -28,7 +28,6 @@ #include "filter_dialog.h" #include "dir_picker_ctrl.h" #include "file_picker_ctrl.h" -#include "isdcf_metadata_dialog.h" #include "server_dialog.h" #include "make_chain_dialog.h" #include "email_dialog.h" @@ -275,10 +274,6 @@ private: #endif table->Add (_directory, 1, wxEXPAND); - add_label_to_sizer (table, _panel, _("Default ISDCF name details"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); - _isdcf_metadata_button = new Button (_panel, _("Edit...")); - table->Add (_isdcf_metadata_button); - add_label_to_sizer (table, _panel, _("Default container"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTRE_VERTICAL); _container = new wxChoice (_panel, wxID_ANY); table->Add (_container); @@ -328,8 +323,6 @@ private: _directory->Bind (wxEVT_DIRPICKER_CHANGED, boost::bind (&DefaultsPage::directory_changed, this)); _kdm_directory->Bind (wxEVT_DIRPICKER_CHANGED, boost::bind (&DefaultsPage::kdm_directory_changed, this)); - _isdcf_metadata_button->Bind (wxEVT_BUTTON, boost::bind (&DefaultsPage::edit_isdcf_metadata_clicked, this)); - for (auto i: Ratio::containers()) { _container->Append (std_to_wx(i->container_nickname())); } @@ -414,14 +407,6 @@ private: Config::instance()->set_default_kdm_directory (wx_to_std (_kdm_directory->GetPath ())); } - void edit_isdcf_metadata_clicked () - { - auto d = new ISDCFMetadataDialog (_panel, Config::instance()->default_isdcf_metadata ()); - d->ShowModal (); - Config::instance()->set_default_isdcf_metadata (d->isdcf_metadata ()); - d->Destroy (); - } - void still_length_changed () { Config::instance()->set_default_still_length (_still_length->GetValue ()); @@ -446,7 +431,6 @@ private: wxSpinCtrl* _j2k_bandwidth; wxSpinCtrl* _audio_delay; - wxButton* _isdcf_metadata_button; wxSpinCtrl* _still_length; #ifdef DCPOMATIC_USE_OWN_PICKER DirPickerCtrl* _directory; diff --git a/src/wx/isdcf_metadata_dialog.cc b/src/wx/isdcf_metadata_dialog.cc deleted file mode 100644 index ea390c1bb..000000000 --- a/src/wx/isdcf_metadata_dialog.cc +++ /dev/null @@ -1,55 +0,0 @@ -/* - Copyright (C) 2012-2019 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 . - -*/ - -#include "isdcf_metadata_dialog.h" -#include "wx_util.h" -#include "check_box.h" -#include "lib/film.h" -#include -#include -#include - -using std::shared_ptr; - -/** @param parent Parent window. - * @param dm Initial ISDCF metadata. - * @param threed true if the film is in 3D. - */ -ISDCFMetadataDialog::ISDCFMetadataDialog (wxWindow* parent, ISDCFMetadata dm) - : TableDialog (parent, _("ISDCF name"), 2, 1, true) -{ - add (_("Mastered luminance (e.g. 14fl)"), true); - _mastered_luminance = add (new wxTextCtrl (this, wxID_ANY)); - - _mastered_luminance->SetValue (std_to_wx (dm.mastered_luminance)); - - layout (); -} - - -ISDCFMetadata -ISDCFMetadataDialog::isdcf_metadata () const -{ - ISDCFMetadata dm; - - dm.mastered_luminance = wx_to_std (_mastered_luminance->GetValue ()); - - return dm; -} diff --git a/src/wx/isdcf_metadata_dialog.h b/src/wx/isdcf_metadata_dialog.h deleted file mode 100644 index 1eb7c8693..000000000 --- a/src/wx/isdcf_metadata_dialog.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - Copyright (C) 2012-2019 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 . - -*/ - -#include "table_dialog.h" -#include "lib/isdcf_metadata.h" -#include - -class wxSpinCtrl; -class Film; - -class ISDCFMetadataDialog : public TableDialog -{ -public: - ISDCFMetadataDialog (wxWindow *, ISDCFMetadata); - - ISDCFMetadata isdcf_metadata () const; - -private: - wxTextCtrl* _mastered_luminance; -}; diff --git a/src/wx/metadata_dialog.cc b/src/wx/metadata_dialog.cc index c6d28922b..c0e543b34 100644 --- a/src/wx/metadata_dialog.cc +++ b/src/wx/metadata_dialog.cc @@ -27,6 +27,7 @@ #include #include #include +#include #include @@ -84,6 +85,9 @@ MetadataDialog::setup () _pre_release->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::pre_release_changed, this)); _red_band->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::red_band_changed, this)); _two_d_version_of_three_d->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::two_d_version_of_three_d_changed, this)); + _enable_luminance->Bind (wxEVT_CHECKBOX, boost::bind(&MetadataDialog::enable_luminance_changed, this)); + _luminance_value->Bind (wxEVT_SPINCTRLDOUBLE, boost::bind(&MetadataDialog::luminance_changed, this)); + _luminance_unit->Bind (wxEVT_CHOICE, boost::bind(&MetadataDialog::luminance_changed, this)); _film_changed_connection = film()->Change.connect(boost::bind(&MetadataDialog::film_changed, this, _1, _2)); @@ -95,6 +99,7 @@ MetadataDialog::setup () film_changed (ChangeType::DONE, Film::Property::RED_BAND); film_changed (ChangeType::DONE, Film::Property::TWO_D_VERSION_OF_THREE_D); film_changed (ChangeType::DONE, Film::Property::CHAIN); + film_changed (ChangeType::DONE, Film::Property::LUMINANCE); setup_sensitivity (); } @@ -137,6 +142,20 @@ MetadataDialog::film_changed (ChangeType type, Film::Property property) checked_set (_red_band, film()->red_band()); } else if (property == Film::Property::TWO_D_VERSION_OF_THREE_D) { checked_set (_two_d_version_of_three_d, film()->two_d_version_of_three_d()); + } else if (property == Film::Property::LUMINANCE) { + auto lum = film()->luminance(); + checked_set (_enable_luminance, static_cast(lum)); + if (lum) { + checked_set (_luminance_value, lum->value()); + switch (lum->unit()) { + case dcp::Luminance::Unit::CANDELA_PER_SQUARE_METRE: + checked_set (_luminance_unit, 0); + break; + case dcp::Luminance::Unit::FOOT_LAMBERT: + checked_set (_luminance_unit, 1); + break; + } + } } } @@ -181,6 +200,8 @@ MetadataDialog::setup_sensitivity () _facility->Enable (_enable_facility->GetValue()); _chain->Enable (_enable_chain->GetValue()); _studio->Enable (_enable_studio->GetValue()); + _luminance_value->Enable (_enable_luminance->GetValue()); + _luminance_unit->Enable (_enable_luminance->GetValue()); } @@ -229,6 +250,23 @@ MetadataDialog::setup_advanced (wxPanel* panel, wxSizer* sizer) _two_d_version_of_three_d = new wxCheckBox (panel, wxID_ANY, _("2D version of 3D DCP")); sizer->Add (_two_d_version_of_three_d, 0, wxALIGN_CENTER_VERTICAL); sizer->AddSpacer (0); + + _enable_luminance = new wxCheckBox (panel, wxID_ANY, _("Luminance")); + sizer->Add (_enable_luminance, 0, wxALIGN_CENTER_VERTICAL); + { + auto s = new wxBoxSizer (wxHORIZONTAL); + _luminance_value = new wxSpinCtrlDouble (panel, wxID_ANY); + _luminance_value->SetDigits (1); + _luminance_value->SetIncrement (0.1); + s->Add (_luminance_value, 0); + _luminance_unit = new wxChoice (panel, wxID_ANY); + s->Add (_luminance_unit, 0, wxLEFT, DCPOMATIC_SIZER_X_GAP); + sizer->Add (s, 1, wxEXPAND); + } + + _luminance_unit->Append (wxString::FromUTF8(_("candela per m²"))); + _luminance_unit->Append (_("foot lambert")); + } @@ -310,10 +348,40 @@ MetadataDialog::enable_chain_changed () { setup_sensitivity (); if (_enable_chain->GetValue()) { - film()->set_chain (wx_to_std(_chain->GetValue())); + chain_changed (); } else { film()->set_chain (); } } +void +MetadataDialog::enable_luminance_changed () +{ + setup_sensitivity (); + if (_enable_luminance->GetValue()) { + luminance_changed (); + } else { + film()->set_luminance (); + } +} + + +void +MetadataDialog::luminance_changed () +{ + dcp::Luminance::Unit unit; + switch (_luminance_unit->GetSelection()) { + case 0: + unit = dcp::Luminance::Unit::CANDELA_PER_SQUARE_METRE; + break; + case 1: + unit = dcp::Luminance::Unit::FOOT_LAMBERT; + break; + default: + DCPOMATIC_ASSERT (false); + } + + film()->set_luminance (dcp::Luminance(_luminance_value->GetValue(), unit)); +} + diff --git a/src/wx/metadata_dialog.h b/src/wx/metadata_dialog.h index 3ac5d10a3..7c4471e59 100644 --- a/src/wx/metadata_dialog.h +++ b/src/wx/metadata_dialog.h @@ -33,6 +33,7 @@ DCPOMATIC_ENABLE_WARNINGS class Button; +class wxSpinCtrlDouble; class MetadataDialog : public wxDialog, public WeakFilm @@ -61,6 +62,8 @@ private: void two_d_version_of_three_d_changed (); void chain_changed (); void enable_chain_changed (); + void enable_luminance_changed (); + void luminance_changed (); wxCheckBox* _enable_release_territory; /** The current release territory displayed in the UI; since we can't easily convert @@ -80,6 +83,9 @@ private: wxCheckBox* _pre_release; wxCheckBox* _red_band; wxCheckBox* _two_d_version_of_three_d; + wxCheckBox* _enable_luminance; + wxSpinCtrlDouble* _luminance_value; + wxChoice* _luminance_unit; boost::signals2::scoped_connection _film_changed_connection; }; diff --git a/src/wx/player_config_dialog.cc b/src/wx/player_config_dialog.cc index c32e892d9..3c480e37e 100644 --- a/src/wx/player_config_dialog.cc +++ b/src/wx/player_config_dialog.cc @@ -28,7 +28,6 @@ #include "filter_dialog.h" #include "file_picker_ctrl.h" #include "dir_picker_ctrl.h" -#include "isdcf_metadata_dialog.h" #include "server_dialog.h" #include "make_chain_dialog.h" #include "email_dialog.h" diff --git a/src/wx/smpte_metadata_dialog.cc b/src/wx/smpte_metadata_dialog.cc index 3bc676052..e4d2d9622 100644 --- a/src/wx/smpte_metadata_dialog.cc +++ b/src/wx/smpte_metadata_dialog.cc @@ -115,18 +115,6 @@ SMPTEMetadataDialog::setup_advanced (wxPanel* panel, wxSizer* sizer) _distributor = new wxTextCtrl (panel, wxID_ANY); sizer->Add (_distributor, 1, wxEXPAND); - add_label_to_sizer (sizer, panel, _("Luminance"), true, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL); - { - auto s = new wxBoxSizer (wxHORIZONTAL); - _luminance_value = new wxSpinCtrlDouble (panel, wxID_ANY); - _luminance_value->SetDigits (1); - _luminance_value->SetIncrement (0.1); - s->Add (_luminance_value, 0); - _luminance_unit = new wxChoice (panel, wxID_ANY); - s->Add (_luminance_unit, 0, wxLEFT, DCPOMATIC_SIZER_X_GAP); - sizer->Add (s, 1, wxEXPAND); - } - { int flags = wxALIGN_TOP | wxRIGHT | wxTOP; #ifdef __WXOSX__ @@ -167,23 +155,17 @@ SMPTEMetadataDialog::setup () _status->Append (_("Pre-release")); _status->Append (_("Final")); - _luminance_unit->Append (wxString::FromUTF8(_("candela per m²"))); - _luminance_unit->Append (_("foot lambert")); - _name_language->Changed.connect (boost::bind(&SMPTEMetadataDialog::name_language_changed, this, _1)); _version_number->Bind (wxEVT_SPINCTRL, boost::bind(&SMPTEMetadataDialog::version_number_changed, this)); _status->Bind (wxEVT_CHOICE, boost::bind(&SMPTEMetadataDialog::status_changed, this)); _enable_distributor->Bind (wxEVT_CHECKBOX, boost::bind(&SMPTEMetadataDialog::enable_distributor_changed, this)); _distributor->Bind (wxEVT_TEXT, boost::bind(&SMPTEMetadataDialog::distributor_changed, this)); - _luminance_value->Bind (wxEVT_SPINCTRLDOUBLE, boost::bind(&SMPTEMetadataDialog::luminance_changed, this)); - _luminance_unit->Bind (wxEVT_CHOICE, boost::bind(&SMPTEMetadataDialog::luminance_changed, this)); film_changed (ChangeType::DONE, Film::Property::NAME_LANGUAGE); film_changed (ChangeType::DONE, Film::Property::VERSION_NUMBER); film_changed (ChangeType::DONE, Film::Property::STATUS); film_changed (ChangeType::DONE, Film::Property::DISTRIBUTOR); film_changed (ChangeType::DONE, Film::Property::CONTENT_VERSIONS); - film_changed (ChangeType::DONE, Film::Property::LUMINANCE); setup_sensitivity (); } @@ -219,22 +201,6 @@ SMPTEMetadataDialog::film_changed (ChangeType type, Film::Property property) if (film()->distributor()) { checked_set (_distributor, *film()->distributor()); } - } else if (property == Film::Property::LUMINANCE) { - auto lum = film()->luminance(); - if (lum) { - checked_set (_luminance_value, lum->value()); - switch (lum->unit()) { - case dcp::Luminance::Unit::CANDELA_PER_SQUARE_METRE: - checked_set (_luminance_unit, 0); - break; - case dcp::Luminance::Unit::FOOT_LAMBERT: - checked_set (_luminance_unit, 1); - break; - } - } else { - checked_set (_luminance_value, 4.5); - checked_set (_luminance_unit, 1); - } } } @@ -305,25 +271,6 @@ SMPTEMetadataDialog::distributor_changed () } -void -SMPTEMetadataDialog::luminance_changed () -{ - dcp::Luminance::Unit unit; - switch (_luminance_unit->GetSelection()) { - case 0: - unit = dcp::Luminance::Unit::CANDELA_PER_SQUARE_METRE; - break; - case 1: - unit = dcp::Luminance::Unit::FOOT_LAMBERT; - break; - default: - DCPOMATIC_ASSERT (false); - } - - film()->set_luminance (dcp::Luminance(_luminance_value->GetValue(), unit)); -} - - void SMPTEMetadataDialog::setup_sensitivity () { diff --git a/src/wx/smpte_metadata_dialog.h b/src/wx/smpte_metadata_dialog.h index acf1ac111..d1a792a36 100644 --- a/src/wx/smpte_metadata_dialog.h +++ b/src/wx/smpte_metadata_dialog.h @@ -58,7 +58,6 @@ private: void version_number_changed (); void status_changed (); void distributor_changed (); - void luminance_changed (); void enable_distributor_changed (); LanguageTagWidget* _name_language; @@ -66,8 +65,6 @@ private: wxChoice* _status; wxCheckBox* _enable_distributor; wxTextCtrl* _distributor; - wxSpinCtrlDouble* _luminance_value; - wxChoice* _luminance_unit; EditableList* _ratings; EditableList* _content_versions; }; diff --git a/src/wx/wscript b/src/wx/wscript index 013377e16..1d0fb0810 100644 --- a/src/wx/wscript +++ b/src/wx/wscript @@ -85,7 +85,6 @@ sources = """ image_sequence_dialog.cc instant_i18n_dialog.cc interop_metadata_dialog.cc - isdcf_metadata_dialog.cc job_manager_view.cc job_view.cc job_view_dialog.cc diff --git a/test/isdcf_name_test.cc b/test/isdcf_name_test.cc index c559e433f..325ee62f4 100644 --- a/test/isdcf_name_test.cc +++ b/test/isdcf_name_test.cc @@ -66,8 +66,6 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test) film->set_ratings({dcp::Rating("BBFC", "PG")}); film->set_studio (string("ST")); film->set_facility (string("FAC")); - ISDCFMetadata m; - film->set_isdcf_metadata (m); film->set_interop (true); BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilm_FTR-1_F_EN-XX_GB-PG_10_2K_ST_20140704_FAC_IOP_OV"); @@ -99,7 +97,6 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test) BOOST_REQUIRE (!wait_for_jobs()); BOOST_REQUIRE (audio->audio); audio->audio->set_language (dcp::LanguageTag("de-DE")); - film->set_isdcf_metadata (m); film->set_interop (false); BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_TLR-2_S_DE-fr_US-R_MOS_4K_DI_20140704_PPF_SMPTE_OV"); @@ -144,8 +141,7 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test) film->set_red_band (true); film->set_two_d_version_of_three_d (true); film->set_chain (string("MyChain")); - m.mastered_luminance = "4fl"; - film->set_isdcf_metadata (m); + film->set_luminance (dcp::Luminance(4.5, dcp::Luminance::Unit::FOOT_LAMBERT)); film->set_video_frame_rate (48); BOOST_CHECK_EQUAL (film->isdcf_name(false), "MyNiceFilmWith_XSN-2-Temp-Pre-RedBand-MyChain-2D-4fl-48_F-133_DE-fr_US-R_MOS_4K_DI_20140704_PPF_SMPTE_OV"); @@ -157,8 +153,7 @@ BOOST_AUTO_TEST_CASE (isdcf_name_test) film->set_red_band (false); film->set_two_d_version_of_three_d (false); film->set_chain (string("")); - m.mastered_luminance = ""; - film->set_isdcf_metadata (m); + film->set_luminance (boost::none); film->set_video_frame_rate (24); film->set_name ("IKnowCamels"); BOOST_CHECK_EQUAL (film->isdcf_name(false), "IKnowCamels_XSN-2_F-133_DE-fr_US-R_MOS_4K_DI_20140704_PPF_SMPTE_OV"); diff --git a/test/test.cc b/test/test.cc index 8cbb2408b..ed8a93135 100644 --- a/test/test.cc +++ b/test/test.cc @@ -105,7 +105,6 @@ setup_test_config () Config::instance()->set_master_encoding_threads (boost::thread::hardware_concurrency()); Config::instance()->set_server_encoding_threads (1); Config::instance()->set_server_port_base (61921); - Config::instance()->set_default_isdcf_metadata (ISDCFMetadata ()); Config::instance()->set_default_container (Ratio::from_id ("185")); Config::instance()->set_default_dcp_content_type (static_cast (0)); Config::instance()->set_default_audio_delay (0);