X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fvideo_content_scale.cc;h=73dfd27fef38d9ef4ea5a9cbf707952e0dfee4f7;hp=aae135311c9a23375ff6a16cdfde28c219799549;hb=ee0f2219f3799881bc9f5060edd2ceeecff4217d;hpb=1d68fe1e3ad1a9aa85fa7fc6071a0b8c64973953 diff --git a/src/lib/video_content_scale.cc b/src/lib/video_content_scale.cc index aae135311..73dfd27fe 100644 --- a/src/lib/video_content_scale.cc +++ b/src/lib/video_content_scale.cc @@ -1,30 +1,31 @@ /* - Copyright (C) 2013-2015 Carl Hetherington + Copyright (C) 2013-2018 Carl Hetherington - This program is free software; you can redistribute it and/or modify + 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. - This program is distributed in the hope that it will be useful, + 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 this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ #include "video_content_scale.h" #include "video_content.h" #include "ratio.h" -#include "safe_stringstream.h" #include "util.h" #include #include #include +#include #include "i18n.h" @@ -83,22 +84,18 @@ VideoContentScale::as_xml (xmlpp::Node* node) const string VideoContentScale::id () const { - SafeStringStream s; - if (_ratio) { - s << _ratio->id (); - } else { - s << (_scale ? "S1" : "S0"); + return _ratio->id (); } - return s.str (); + return (_scale ? "S1" : "S0"); } string VideoContentScale::name () const { if (_ratio) { - return _ratio->nickname (); + return _ratio->image_nickname (); } if (_scale) { @@ -108,30 +105,17 @@ VideoContentScale::name () const return _("No scale"); } -VideoContentScale -VideoContentScale::from_id (string id) -{ - Ratio const * r = Ratio::from_id (id); - if (r) { - return VideoContentScale (r); - } - - if (id == "S0") { - return VideoContentScale (false); - } - - return VideoContentScale (true); -} - /** @param display_container Size of the container that we are displaying this content in. * @param film_container The size of the film's image. + * @return Size, in pixels that the VideoContent's image should be scaled to (taking into account its pixel aspect ratio) */ dcp::Size VideoContentScale::size (shared_ptr c, dcp::Size display_container, dcp::Size film_container) const { /* Work out the size of the content if it were put inside film_container */ - dcp::Size const video_size_after_crop = c->video_size_after_crop (); + dcp::Size video_size_after_crop = c->size_after_crop(); + video_size_after_crop.width *= c->sample_aspect_ratio().get_value_or(1); dcp::Size size;