X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fformat.cc;h=a83d53ebd1aa3ba01a486c488cb35d90b3645e67;hb=47f25009bcbc765e397bcb471dd361a511c99daf;hp=addab2b600f35c0984536147c27d640488431856;hpb=d62877ae6c4e316e43f4052e4b9ba673610012cf;p=dcpomatic.git diff --git a/src/lib/format.cc b/src/lib/format.cc index addab2b60..a83d53ebd 100644 --- a/src/lib/format.cc +++ b/src/lib/format.cc @@ -51,7 +51,7 @@ FixedFormat::name () const s << _nickname << N_(" ("); } - s << setprecision(3) << (_ratio / 100.0) << N_(":1"); + s << setprecision(3) << _ratio << N_(":1"); if (!_nickname.empty ()) { s << N_(")"); @@ -73,47 +73,51 @@ 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") + new FixedFormat (1.19, 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") + new FixedFormat (4.0 / 3.0, libdcp::Size (1436, 1080), N_("133"), _("4:3"), N_("F") )); _formats.push_back ( - new FixedFormat (138, libdcp::Size (1485, 1080), N_("138"), _("1.375"), N_("F") + new FixedFormat (1.38, 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") + new FixedFormat (4.0 / 3.0, 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") + new FixedFormat (1.37, 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") + new FixedFormat (1.66, 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") + new FixedFormat (1.66, 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") + new FixedFormat (1.78, 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") + new FixedFormat (1.78, 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") + new FixedFormat (1.85, libdcp::Size (1998, 1080), N_("185"), _("Flat"), N_("F") )); _formats.push_back ( - new FixedFormat (239, libdcp::Size (2048, 858), N_("239"), _("Scope"), N_("S") + new FixedFormat (1.78, libdcp::Size (2048, 858), N_("178-in-scope"), _("16:9 within Scope"), N_("S") + )); + + _formats.push_back ( + new FixedFormat (2.39, libdcp::Size (2048, 858), N_("239"), _("Scope"), N_("S") )); _formats.push_back ( @@ -178,12 +182,12 @@ Format::all () return _formats; } -/** @param r Ratio multiplied by 100 (e.g. 185) +/** @param r Ratio * @param dcp Size (in pixels) of the images that we should put in a DCP. * @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) +FixedFormat::FixedFormat (float r, libdcp::Size dcp, string id, string n, string d) : Format (dcp, id, n, d) , _ratio (r) { @@ -196,18 +200,18 @@ FixedFormat::FixedFormat (int r, libdcp::Size dcp, string id, string n, string d int Format::dcp_padding (shared_ptr f) const { - int pad = rint ((_dcp_size.width - (_dcp_size.height * ratio_as_integer(f) / 100.0)) / 2.0); + int p = rint ((_dcp_size.width - (_dcp_size.height * ratio(f))) / 2.0); /* This comes out -ve for Scope; bodge it */ - if (pad < 0) { - pad = 0; + if (p < 0) { + p = 0; } - return pad; + return p; } float -Format::container_ratio_as_float () const +Format::container_ratio () const { return static_cast (_dcp_size.width) / _dcp_size.height; } @@ -218,16 +222,11 @@ VariableFormat::VariableFormat (libdcp::Size dcp, string id, string n, string d) } -int -VariableFormat::ratio_as_integer (shared_ptr f) const -{ - return rint (ratio_as_float (f) * 100); -} - float -VariableFormat::ratio_as_float (shared_ptr f) const +VariableFormat::ratio (shared_ptr f) const { - return float (f->video_size().width) / f->video_size().height; + libdcp::Size const c = f->cropped_size (f->video_size ()); + return float (c.width) / c.height; } /** @return A name to be presented to the user */