Fix errors when a custom size is given which is larger than the container (#2404).
[dcpomatic.git] / src / lib / config.cc
index 235bace7b78f6b9c62cc30e450ee9c0a233c747e..e3be484e242542fbdd5f5d3107f306d6ceb479f9 100644 (file)
@@ -23,6 +23,7 @@
 #include "colour_conversion.h"
 #include "compose.hpp"
 #include "config.h"
+#include "constants.h"
 #include "cross.h"
 #include "crypto.h"
 #include "dcp_content_type.h"
@@ -32,8 +33,6 @@
 #include "filter.h"
 #include "log.h"
 #include "ratio.h"
-#include "types.h"
-#include "util.h"
 #include "zipper.h"
 #include <dcp/certificate_chain.h>
 #include <dcp/name_format.h>
@@ -358,6 +357,20 @@ try
        _default_audio_delay = f.optional_number_child<int>("DefaultAudioDelay").get_value_or (0);
        _default_interop = f.optional_bool_child("DefaultInterop").get_value_or (false);
 
+       try {
+               auto al = f.optional_string_child("DefaultAudioLanguage");
+               if (al) {
+                       _default_audio_language = dcp::LanguageTag(*al);
+               }
+       } catch (std::runtime_error&) {}
+
+       try {
+               auto te = f.optional_string_child("DefaultTerritory");
+               if (te) {
+                       _default_territory = dcp::LanguageTag::RegionSubtag(*te);
+               }
+       } catch (std::runtime_error&) {}
+
        for (auto const& i: f.node_children("DefaultMetadata")) {
                _default_metadata[i->string_attribute("key")] = i->content();
        }
@@ -755,6 +768,14 @@ Config::write_config () const
        root->add_child("DefaultAudioDelay")->add_child_text (raw_convert<string> (_default_audio_delay));
        /* [XML] DefaultInterop 1 to default new films to Interop, 0 for SMPTE. */
        root->add_child("DefaultInterop")->add_child_text (_default_interop ? "1" : "0");
+       if (_default_audio_language) {
+               /* [XML] DefaultAudioLanguage Default audio language to use for new films */
+               root->add_child("DefaultAudioLanguage")->add_child_text(_default_audio_language->to_string());
+       }
+       if (_default_territory) {
+               /* [XML] DefaultTerritory Default territory to use for new films */
+               root->add_child("DefaultTerritory")->add_child_text(_default_territory->subtag());
+       }
        for (auto const& i: _default_metadata) {
                auto c = root->add_child("DefaultMetadata");
                c->set_attribute("key", i.first);