Extract common code out into kdm_for_screen()
[dcpomatic.git] / src / lib / ratio.h
index 9e9d58a4043355455a9c0b4281732611ce4d6039..40f596ab8ea6dd1f3d0aa6a9c9bb6e7b69d4428d 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2013-2018 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 #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)
        {}
 
@@ -39,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 {
@@ -55,16 +65,21 @@ 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;