From ec5ff2e9bf1c81f9a11ff22ede039c83c2163885 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 7 Apr 2013 15:09:20 +0100 Subject: [PATCH] Add more explanatory text for what is going on with scaling etc. (#106). --- ChangeLog | 3 ++ src/lib/format.cc | 47 +++++++++---------------- src/lib/format.h | 12 ++----- src/wx/film_editor.cc | 80 +++++++++++++++++++++++++++++++++++-------- src/wx/film_editor.h | 3 +- 5 files changed, 91 insertions(+), 54 deletions(-) diff --git a/ChangeLog b/ChangeLog index edce0136f..ece1117b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,9 @@ * Speculative fix for error on forcing language to English (#103). + * Add more explanatory text to describe what is + happening with scaling, cropping and padding (#106). + 2013-04-01 Carl Hetherington * Version 0.79 released. diff --git a/src/lib/format.cc b/src/lib/format.cc index b506c7000..21f8fb9a2 100644 --- a/src/lib/format.cc +++ b/src/lib/format.cc @@ -72,68 +72,55 @@ Format::setup_formats () { /// TRANSLATORS: these are film picture aspect ratios; "Academy" means 1.37, "Flat" 1.85 and "Scope" 2.39. _formats.push_back ( - new FixedFormat (119, libdcp::Size (1285, 1080), N_("119"), _("1.19"), N_("F"), - _("Source scaled to 1.19:1") + new FixedFormat (119, libdcp::Size (1285, 1080), N_("119"), _("1.19"), N_("F") )); _formats.push_back ( - new FixedFormat (133, libdcp::Size (1436, 1080), N_("133"), _("1.33"), N_("F"), - _("Source scaled to 1.33:1") + new FixedFormat (133, libdcp::Size (1436, 1080), N_("133"), _("1.33"), N_("F") )); _formats.push_back ( - new FixedFormat (138, libdcp::Size (1485, 1080), N_("138"), _("1.375"), N_("F"), - _("Source scaled to 1.375:1") + new FixedFormat (138, libdcp::Size (1485, 1080), N_("138"), _("1.375"), N_("F") )); _formats.push_back ( - new FixedFormat (133, libdcp::Size (1998, 1080), N_("133-in-flat"), _("4:3 within Flat"), N_("F"), - _("Source scaled to 1.33:1 then pillarboxed to Flat") + new FixedFormat (133, libdcp::Size (1998, 1080), N_("133-in-flat"), _("4:3 within Flat"), N_("F") )); _formats.push_back ( - new FixedFormat (137, libdcp::Size (1480, 1080), N_("137"), _("Academy"), N_("F"), - _("Source scaled to 1.37:1 (Academy ratio)") + new FixedFormat (137, libdcp::Size (1480, 1080), N_("137"), _("Academy"), N_("F") )); _formats.push_back ( - new FixedFormat (166, libdcp::Size (1793, 1080), N_("166"), _("1.66"), N_("F"), - _("Source scaled to 1.66:1") + new FixedFormat (166, libdcp::Size (1793, 1080), N_("166"), _("1.66"), N_("F") )); _formats.push_back ( - new FixedFormat (166, libdcp::Size (1998, 1080), N_("166-in-flat"), _("1.66 within Flat"), N_("F"), - _("Source scaled to 1.66:1 then pillarboxed to Flat") + new FixedFormat (166, libdcp::Size (1998, 1080), N_("166-in-flat"), _("1.66 within Flat"), N_("F") )); _formats.push_back ( - new FixedFormat (178, libdcp::Size (1998, 1080), N_("178-in-flat"), _("16:9 within Flat"), N_("F"), - _("Source scaled to 1.78:1 then pillarboxed to Flat") + new FixedFormat (178, libdcp::Size (1998, 1080), N_("178-in-flat"), _("16:9 within Flat"), N_("F") )); _formats.push_back ( - new FixedFormat (178, libdcp::Size (1920, 1080), N_("178"), _("16:9"), N_("F"), - _("Source scaled to 1.78:1") + new FixedFormat (178, libdcp::Size (1920, 1080), N_("178"), _("16:9"), N_("F") )); _formats.push_back ( - new FixedFormat (185, libdcp::Size (1998, 1080), N_("185"), _("Flat"), N_("F"), - _("Source scaled to Flat (1.85:1)") + new FixedFormat (185, libdcp::Size (1998, 1080), N_("185"), _("Flat"), N_("F") )); _formats.push_back ( - new FixedFormat (239, libdcp::Size (2048, 858), N_("239"), _("Scope"), N_("S"), - _("Source scaled to Scope (2.39:1)") + new FixedFormat (239, libdcp::Size (2048, 858), N_("239"), _("Scope"), N_("S") )); _formats.push_back ( - new VariableFormat (libdcp::Size (1998, 1080), N_("var-185"), _("Flat without stretch"), N_("F"), - _("Source scaled to fit Flat preserving its aspect ratio") + new VariableFormat (libdcp::Size (1998, 1080), N_("var-185"), _("Flat without stretch"), N_("F") )); _formats.push_back ( - new VariableFormat (libdcp::Size (2048, 858), N_("var-239"), _("Scope without stretch"), N_("S"), - _("Source scaled to fit Scope preserving its aspect ratio") + new VariableFormat (libdcp::Size (2048, 858), N_("var-239"), _("Scope without stretch"), N_("S") )); } @@ -195,8 +182,8 @@ Format::all () * @param id ID (e.g. 185) * @param n Nick name (e.g. Flat) */ -FixedFormat::FixedFormat (int r, libdcp::Size dcp, string id, string n, string d, string e) - : Format (dcp, id, n, d, e) +FixedFormat::FixedFormat (int r, libdcp::Size dcp, string id, string n, string d) + : Format (dcp, id, n, d) , _ratio (r) { @@ -224,8 +211,8 @@ Format::container_ratio_as_float () const return static_cast (_dcp_size.width) / _dcp_size.height; } -VariableFormat::VariableFormat (libdcp::Size dcp, string id, string n, string d, string e) - : Format (dcp, id, n, d, e) +VariableFormat::VariableFormat (libdcp::Size dcp, string id, string n, string d) + : Format (dcp, id, n, d) { } diff --git a/src/lib/format.h b/src/lib/format.h index 305524628..783ff25ce 100644 --- a/src/lib/format.h +++ b/src/lib/format.h @@ -31,12 +31,11 @@ class Film; class Format { public: - Format (libdcp::Size dcp, std::string id, std::string n, std::string d, std::string e) + Format (libdcp::Size dcp, std::string id, std::string n, std::string d) : _dcp_size (dcp) , _id (id) , _nickname (n) , _dci_name (d) - , _description (e) {} /** @return the aspect ratio multiplied by 100 @@ -76,10 +75,6 @@ public: return _dci_name; } - std::string description () const { - return _description; - } - std::string as_metadata () const; static Format const * from_nickname (std::string n); @@ -99,7 +94,6 @@ protected: /** nickname (e.g. Flat, Scope) */ std::string _nickname; std::string _dci_name; - std::string _description; private: /** all available formats */ @@ -113,7 +107,7 @@ private: class FixedFormat : public Format { public: - FixedFormat (int, libdcp::Size, std::string, std::string, std::string, std::string); + FixedFormat (int, libdcp::Size, std::string, std::string, std::string); int ratio_as_integer (boost::shared_ptr) const { return _ratio; @@ -134,7 +128,7 @@ private: class VariableFormat : public Format { public: - VariableFormat (libdcp::Size, std::string, std::string, std::string, std::string); + VariableFormat (libdcp::Size, std::string, std::string, std::string); int ratio_as_integer (boost::shared_ptr f) const; float ratio_as_float (boost::shared_ptr f) const; diff --git a/src/wx/film_editor.cc b/src/wx/film_editor.cc index 79a174901..916d86cc0 100644 --- a/src/wx/film_editor.cc +++ b/src/wx/film_editor.cc @@ -270,14 +270,6 @@ FilmEditor::make_video_panel () grid->Add (_format, wxGBPosition (r, 1)); ++r; - _format_description = new wxStaticText (_video_panel, wxID_ANY, wxT (""), wxDefaultPosition, wxDefaultSize); - grid->Add (_format_description, wxGBPosition (r, 0), wxGBSpan (1, 2), wxEXPAND | wxALIGN_CENTER_VERTICAL | wxALL, 6); - wxFont font = _format_description->GetFont(); - font.SetStyle(wxFONTSTYLE_ITALIC); - font.SetPointSize(font.GetPointSize() - 1); - _format_description->SetFont(font); - ++r; - add_label_to_grid_bag_sizer (grid, _video_panel, _("Left crop"), wxGBPosition (r, 0)); _left_crop = new wxSpinCtrl (_video_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (64, -1)); grid->Add (_left_crop, wxGBPosition (r, 1)); @@ -298,6 +290,14 @@ FilmEditor::make_video_panel () grid->Add (_bottom_crop, wxGBPosition (r, 1)); ++r; + _scaling_description = new wxStaticText (_video_panel, wxID_ANY, wxT ("\n \n \n \n"), wxDefaultPosition, wxDefaultSize); + grid->Add (_scaling_description, wxGBPosition (r, 0), wxGBSpan (1, 2), wxEXPAND | wxALIGN_CENTER_VERTICAL | wxALL, 6); + wxFont font = _scaling_description->GetFont(); + font.SetStyle(wxFONTSTYLE_ITALIC); + font.SetPointSize(font.GetPointSize() - 1); + _scaling_description->SetFont(font); + ++r; + /* VIDEO-only stuff */ { video_control (add_label_to_grid_bag_sizer (grid, _video_panel, _("Filters"), wxGBPosition (r, 0))); @@ -648,12 +648,7 @@ FilmEditor::film_changed (Film::Property p) checked_set (_format, n); } setup_dcp_name (); - - if (_film->format ()) { - _format_description->SetLabel (std_to_wx (_film->format()->description ())); - } else { - _format_description->SetLabel (wxT ("")); - } + setup_scaling_description (); break; } case Film::CROP: @@ -661,6 +656,7 @@ FilmEditor::film_changed (Film::Property p) checked_set (_right_crop, _film->crop().right); checked_set (_top_crop, _film->crop().top); checked_set (_bottom_crop, _film->crop().bottom); + setup_scaling_description (); break; case Film::FILTERS: { @@ -689,6 +685,7 @@ FilmEditor::film_changed (Film::Property p) s << _film->size().width << " x " << _film->size().height; _original_size->SetLabel (std_to_wx (s.str ())); } + setup_scaling_description (); break; case Film::LENGTH: if (_film->source_frame_rate() > 0 && _film->length()) { @@ -1305,3 +1302,58 @@ FilmEditor::setup_show_audio_sensitivity () { _show_audio->Enable (_film && _film->has_audio ()); } + +void +FilmEditor::setup_scaling_description () +{ + wxString d; + + int lines = 0; + + d << wxString::Format ( + _("Original video is %dx%d (%.2f:1)\n"), + _film->size().width, _film->size().height, + float (_film->size().width) / _film->size().height + ); + + ++lines; + + Crop const crop = _film->crop (); + if (crop.left || crop.right || crop.top || crop.bottom) { + libdcp::Size const cropped = _film->cropped_size (_film->size ()); + d << wxString::Format ( + _("Cropped to %dx%d (%.2f:1)\n"), + cropped.width, cropped.height, + float (cropped.width) / cropped.height + ); + ++lines; + } + + Format const * format = _film->format (); + if (format) { + int const padding = format->dcp_padding (_film); + libdcp::Size scaled = format->dcp_size (); + scaled.width -= padding * 2; + d << wxString::Format ( + _("Scaled to %dx%d (%.2f:1)\n"), + scaled.width, scaled.height, + float (scaled.width) / scaled.height + ); + ++lines; + + if (padding) { + d << wxString::Format ( + _("Padded with black to %dx%d (%.2f:1)\n"), + format->dcp_size().width, format->dcp_size().height, + float (format->dcp_size().width) / format->dcp_size().height + ); + ++lines; + } + } + + for (int i = lines; i < 4; ++i) { + d << " \n"; + } + + _scaling_description->SetLabel (d); +} diff --git a/src/wx/film_editor.h b/src/wx/film_editor.h index e5b619886..7de63014e 100644 --- a/src/wx/film_editor.h +++ b/src/wx/film_editor.h @@ -99,6 +99,7 @@ private: void setup_audio_details (); void setup_dcp_name (); void setup_show_audio_sensitivity (); + void setup_scaling_description (); wxControl* video_control (wxControl *); wxControl* still_control (wxControl *); @@ -124,7 +125,7 @@ private: wxButton* _edit_dci_button; /** The Film's format */ wxChoice* _format; - wxStaticText* _format_description; + wxStaticText* _scaling_description; /** The Film's content file */ wxFilePickerCtrl* _content; wxCheckBox* _trust_content_header; -- 2.30.2