Extract common code out into kdm_for_screen()
[dcpomatic.git] / src / lib / ratio.h
index f1a180d8f9d5ae2c8197ce25a17e59fe0fc18b2b..40f596ab8ea6dd1f3d0aa6a9c9bb6e7b69d4428d 100644 (file)
@@ -1,36 +1,41 @@
 /*
-    Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2013-2018 Carl Hetherington <cth@carlh.net>
 
-    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 <http://www.gnu.org/licenses/>.
 
 */
 
 #ifndef DCPOMATIC_RATIO_H
 #define DCPOMATIC_RATIO_H
 
-#include <vector>
-#include <boost/utility.hpp>
 #include <dcp/util.h>
+#include <boost/utility.hpp>
+#include <vector>
 
+/** @class Ratio
+ *  @brief Description of an image ratio.
+ */
 class Ratio : public boost::noncopyable
 {
 public:
-       Ratio (float ratio, std::string id, std::string n, std::string d)
+       Ratio (float ratio, std::string id, std::string in, boost::optional<std::string> cn, std::string d)
                : _ratio (ratio)
                , _id (id)
-               , _nickname (n)
+               , _image_nickname (in)
+               , _container_nickname (cn)
                , _isdcf_name (d)
        {}
 
@@ -38,8 +43,14 @@ public:
                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<bool> (_container_nickname);
        }
 
        std::string isdcf_name () const {
@@ -54,19 +65,24 @@ public:
        static Ratio const * from_id (std::string i);
        static Ratio const * from_ratio (float r);
        static Ratio const * nearest_from_ratio (float r);
+
        static std::vector<Ratio const *> all () {
                return _ratios;
        }
 
+       static std::vector<Ratio const *> containers ();
+
 private:
        float _ratio;
        /** id for use in metadata */
        std::string _id;
-       /** nickname (e.g. Flat, Scope) */
-       std::string _nickname;
+       /** 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<std::string> _container_nickname;
        std::string _isdcf_name;
 
-       static std::vector<Ratio const *> _ratios;      
+       static std::vector<Ratio const *> _ratios;
 };
 
 #endif