Extract part of the content change job to Content.
[dcpomatic.git] / src / lib / atmos_content.cc
index c424f96d3e4b321cb71de6016d495264872fd12d..cc74209e0ee8abc4f2a51fd30afca91cda0b2313 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2020 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2020-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 
 #include "atmos_content.h"
+#include "warnings.h"
 #include <dcp/raw_convert.h>
+DCPOMATIC_DISABLE_WARNINGS
 #include <libxml++/libxml++.h>
+DCPOMATIC_ENABLE_WARNINGS
 
 
+using std::make_shared;
 using std::string;
-using boost::shared_ptr;
+using std::shared_ptr;
 
 
 int const AtmosContentProperty::EDIT_RATE = 700;
@@ -42,23 +46,27 @@ AtmosContent::AtmosContent (Content* parent)
 AtmosContent::AtmosContent (Content* parent, cxml::ConstNodePtr node)
        : ContentPart (parent)
 {
-       _length = node->number_child<Frame>("Length");
-       _edit_rate = dcp::Fraction (node->string_child("EditRate"));
+       _length = node->number_child<Frame>("AtmosLength");
+       _edit_rate = dcp::Fraction (node->string_child("AtmosEditRate"));
 }
 
 
 shared_ptr<AtmosContent>
 AtmosContent::from_xml (Content* parent, cxml::ConstNodePtr node)
 {
-       return shared_ptr<AtmosContent> (new AtmosContent(parent, node));
+       if (!node->optional_node_child("AtmosLength")) {
+               return {};
+       }
+
+       return make_shared<AtmosContent>(parent, node);
 }
 
 
 void
 AtmosContent::as_xml (xmlpp::Node* node) const
 {
-       node->add_child("Length")->add_child_text(dcp::raw_convert<string>(_length));
-       node->add_child("EditRate")->add_child_text(_edit_rate.as_string());
+       node->add_child("AtmosLength")->add_child_text(dcp::raw_convert<string>(_length));
+       node->add_child("AtmosEditRate")->add_child_text(_edit_rate.as_string());
 }