From ef9671811920cbef50f0f01d063eab418de8925e Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 25 Apr 2022 23:31:13 +0200 Subject: Tidy up write_xml() API a little. --- src/dcp.cc | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 70 insertions(+), 10 deletions(-) (limited to 'src/dcp.cc') diff --git a/src/dcp.cc b/src/dcp.cc index f7b83b01..ff51a28f 100644 --- a/src/dcp.cc +++ b/src/dcp.cc @@ -371,14 +371,7 @@ DCP::write_volindex (Standard standard) const void -DCP::write_xml ( - string issuer, - string creator, - string issue_date, - string annotation_text, - shared_ptr signer, - NameFormat name_format - ) +DCP::write_xml (shared_ptr signer, NameFormat name_format) { if (_cpls.empty()) { throw MiscError ("Cannot write DCP with no CPLs."); @@ -401,7 +394,15 @@ DCP::write_xml ( } if (_pkls.empty()) { - _pkls.push_back(make_shared(standard, annotation_text, issue_date, issuer, creator)); + _pkls.push_back( + make_shared( + standard, + _new_annotation_text.get_value_or(String::compose("Created by libdcp %1", dcp::version)), + _new_issue_date.get_value_or(LocalTime().as_string()), + _new_issuer.get_value_or(String::compose("libdcp %1", dcp::version)), + _new_creator.get_value_or(String::compose("libdcp %1", dcp::version)) + ) + ); } auto pkl = _pkls.front(); @@ -418,7 +419,13 @@ DCP::write_xml ( pkl->write (pkl_path, signer); if (!_asset_map) { - _asset_map = AssetMap(standard, annotation_text, issue_date, issuer, creator); + _asset_map = AssetMap( + standard, + _new_annotation_text.get_value_or(String::compose("Created by libdcp %1", dcp::version)), + _new_issue_date.get_value_or(LocalTime().as_string()), + _new_issuer.get_value_or(String::compose("libdcp %1", dcp::version)), + _new_creator.get_value_or(String::compose("libdcp %1", dcp::version)) + ); } /* The assets may have changed since we read the asset map, so re-add them */ @@ -490,3 +497,56 @@ DCP::directories_from_files (vector files) } return d; } + + +void +DCP::set_issuer(string issuer) +{ + for (auto pkl: _pkls) { + pkl->set_issuer(issuer); + } + if (_asset_map) { + _asset_map->set_issuer(issuer); + } + _new_issuer = issuer; +} + + +void +DCP::set_creator(string creator) +{ + for (auto pkl: _pkls) { + pkl->set_creator(creator); + } + if (_asset_map) { + _asset_map->set_creator(creator); + } + _new_creator = creator; +} + + +void +DCP::set_issue_date(string issue_date) +{ + for (auto pkl: _pkls) { + pkl->set_issue_date(issue_date); + } + if (_asset_map) { + _asset_map->set_issue_date(issue_date); + } + _new_issue_date = issue_date; +} + + +void +DCP::set_annotation_text(string annotation_text) +{ + for (auto pkl: _pkls) { + pkl->set_annotation_text(annotation_text); + } + if (_asset_map) { + _asset_map->set_annotation_text(annotation_text); + } + _new_annotation_text = annotation_text; +} + -- cgit v1.2.3