X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fratio.h;h=31ff0935896c4f40a1e82a37e4852263d0055a13;hb=f706bbb9afd10472e81a051cd5db601d6404377c;hp=6916a74912cdaa5c9c322312e867747b40d9f700;hpb=a183c1776cfd020a37d028ebb0f641352f49697b;p=dcpomatic.git diff --git a/src/lib/ratio.h b/src/lib/ratio.h index 6916a7491..31ff09358 100644 --- a/src/lib/ratio.h +++ b/src/lib/ratio.h @@ -1,47 +1,63 @@ /* - Copyright (C) 2013 Carl Hetherington + Copyright (C) 2013-2021 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 . */ + +#ifndef DCPOMATIC_RATIO_H +#define DCPOMATIC_RATIO_H + + +#include +#include #include -#include + +/** @class Ratio + * @brief Description of an image ratio. + */ class Ratio { public: - Ratio (float ratio, std::string id, std::string n, std::string d) + Ratio (float ratio, std::string id, std::string in, boost::optional cn, std::string d) : _ratio (ratio) , _id (id) - , _nickname (n) - , _dci_name (d) + , _image_nickname (in) + , _container_nickname (cn) + , _isdcf_name (d) {} - libdcp::Size size (libdcp::Size) const; - std::string id () const { return _id; } - std::string nickname () const { - return _nickname; + std::string image_nickname () const { + return _image_nickname; + } + + std::string container_nickname () const; + + bool used_for_container () const { + return static_cast(_container_nickname); } - std::string dci_name () const { - return _dci_name; + std::string isdcf_name () const { + return _isdcf_name; } float ratio () const { @@ -50,17 +66,25 @@ public: static void setup_ratios (); static Ratio const * from_id (std::string i); - static std::vector all () { - return _ratios; - } + static Ratio const * from_ratio (float r); + static Ratio const * nearest_from_ratio (float r); + + static std::vector all (); + + static std::vector containers (); private: float _ratio; /** id for use in metadata */ std::string _id; - /** nickname (e.g. Flat, Scope) */ - std::string _nickname; - std::string _dci_name; + /** nickname when used to describe an image ratio (e.g. Flat, Scope) */ + std::string _image_nickname; + /** nickname when used to describe a container ratio */ + boost::optional _container_nickname; + std::string _isdcf_name; - static std::vector _ratios; + static std::vector _ratios; }; + + +#endif