Add preference for default KDM duration (#2224).
[dcpomatic.git] / src / lib / config.h
index 39704fde14eba7b7cbdf039b5ae03d37b36a7b54..e425a976cf6c2315dfe31dd3129e33866c5c2571 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2021 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2022 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
  *  @brief Class holding configuration.
  */
 
+
 #ifndef DCPOMATIC_CONFIG_H
 #define DCPOMATIC_CONFIG_H
 
-#include "types.h"
-#include "state.h"
+
 #include "audio_mapping.h"
+#include "rough_duration.h"
+#include "state.h"
+#include "types.h"
 #include <dcp/name_format.h>
 #include <dcp/certificate_chain.h>
 #include <dcp/encrypted_kdm.h>
 #include <boost/filesystem.hpp>
 #include <vector>
 
+
+class Cinema;
 class CinemaSoundProcessor;
 class DCPContentType;
-class Ratio;
-class Cinema;
-class Film;
 class DKDMGroup;
 class DKDMRecipient;
+class Film;
+class Ratio;
 
 
 extern void save_all_config_as_zip (boost::filesystem::path zip_file);
@@ -88,6 +92,7 @@ public:
                HISTORY,
                SHOW_EXPERIMENTAL_AUDIO_PROCESSORS,
                AUDIO_MAPPING,
+               AUTO_CROP_THRESHOLD,
                OTHER
        };
 
@@ -144,11 +149,11 @@ public:
                return _tms_password;
        }
 
-       std::list<std::shared_ptr<Cinema> > cinemas () const {
+       std::list<std::shared_ptr<Cinema>> cinemas () const {
                return _cinemas;
        }
 
-       std::list<std::shared_ptr<DKDMRecipient> > dkdm_recipients () const {
+       std::list<std::shared_ptr<DKDMRecipient>> dkdm_recipients () const {
                return _dkdm_recipients;
        }
 
@@ -164,6 +169,10 @@ public:
                return _allow_any_container;
        }
 
+       bool allow_96khz_audio () const {
+               return _allow_96khz_audio;
+       }
+
        bool show_experimental_audio_processors () const {
                return _show_experimental_audio_processors;
        }
@@ -548,6 +557,30 @@ public:
                return _add_files_path;
        }
 
+       bool use_isdcf_name_by_default () const {
+               return _use_isdcf_name_by_default;
+       }
+
+       bool write_kdms_to_disk () const {
+               return _write_kdms_to_disk;
+       }
+
+       bool email_kdms () const {
+               return _email_kdms;
+       }
+
+       dcp::Formulation default_kdm_type () const {
+               return _default_kdm_type;
+       }
+
+       RoughDuration default_kdm_duration () const {
+               return _default_kdm_duration;
+       }
+
+       double auto_crop_threshold () const {
+               return _auto_crop_threshold;
+       }
+
        /* SET (mostly) */
 
        void set_master_encoding_threads (int n) {
@@ -631,6 +664,10 @@ public:
                maybe_set (_allow_any_container, a);
        }
 
+       void set_allow_96hhz_audio (bool a) {
+               maybe_set (_allow_96khz_audio, a);
+       }
+
        void set_show_experimental_audio_processors (bool e) {
                maybe_set (_show_experimental_audio_processors, e, SHOW_EXPERIMENTAL_AUDIO_PROCESSORS);
        }
@@ -1052,6 +1089,30 @@ public:
                changed ();
        }
 
+       void set_use_isdcf_name_by_default (bool use) {
+               maybe_set (_use_isdcf_name_by_default, use);
+       }
+
+       void set_write_kdms_to_disk (bool write) {
+               maybe_set (_write_kdms_to_disk, write);
+       }
+
+       void set_email_kdms (bool email) {
+               maybe_set (_email_kdms, email);
+       }
+
+       void set_default_kdm_type (dcp::Formulation type) {
+               maybe_set (_default_kdm_type, type);
+       }
+
+       void set_default_kdm_duration (RoughDuration duration) {
+               maybe_set (_default_kdm_duration, duration);
+       }
+
+       void set_auto_crop_threshold (double threshold) {
+               maybe_set (_auto_crop_threshold, threshold, AUTO_CROP_THRESHOLD);
+       }
+
        void changed (Property p = OTHER);
        boost::signals2::signal<void (Property)> Changed;
        /** Emitted if read() failed on an existing Config file.  There is nothing
@@ -1072,7 +1133,7 @@ public:
 
        static boost::signals2::signal<bool (BadReason)> Bad;
 
-       void write () const;
+       void write () const override;
        void write_config () const;
        void write_cinemas () const;
        void write_dkdm_recipients () const;
@@ -1099,7 +1160,7 @@ public:
 
 private:
        Config ();
-       void read ();
+       void read () override;
        void set_defaults ();
        void set_kdm_email_to_default ();
        void set_notification_email_to_default ();
@@ -1163,6 +1224,7 @@ private:
            https://www.dcpomatic.com/forum/viewtopic.php?f=2&t=1119&p=4468
        */
        bool _allow_any_container;
+       bool _allow_96khz_audio;
        /** Offer the upmixers in the audio processor settings */
        bool _show_experimental_audio_processors;
        boost::optional<std::string> _language;
@@ -1186,8 +1248,8 @@ private:
        */
        boost::optional<boost::filesystem::path> _default_kdm_directory;
        bool _upload_after_make_dcp;
-       std::list<std::shared_ptr<Cinema> > _cinemas;
-       std::list<std::shared_ptr<DKDMRecipient> > _dkdm_recipients;
+       std::list<std::shared_ptr<Cinema>> _cinemas;
+       std::list<std::shared_ptr<DKDMRecipient>> _dkdm_recipients;
        std::string _mail_server;
        int _mail_port;
        EmailProtocol _mail_protocol;
@@ -1267,6 +1329,12 @@ private:
        boost::optional<AudioMapping> _audio_mapping;
        std::vector<dcp::LanguageTag> _custom_languages;
        boost::optional<boost::filesystem::path> _add_files_path;
+       bool _use_isdcf_name_by_default;
+       bool _write_kdms_to_disk;
+       bool _email_kdms;
+       dcp::Formulation _default_kdm_type;
+       RoughDuration _default_kdm_duration;
+       double _auto_crop_threshold;
 
        static int const _current_version;