summaryrefslogtreecommitdiff
path: root/src/lib/kdm_util.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2023-11-19 21:34:56 +0100
committerCarl Hetherington <cth@carlh.net>2023-11-20 07:31:44 +0100
commit16557827b252bd653b15eead479ec5699eda7360 (patch)
treef94f6822143802f2676c44e711984029eb3fb6cc /src/lib/kdm_util.cc
parent9d1d75e474bc92d8b0f823141073ad9dd639c8e0 (diff)
Add a dialog to show which screens have potentially-problematic
certificate validity periods when making KDMs (#2645).
Diffstat (limited to 'src/lib/kdm_util.cc')
-rw-r--r--src/lib/kdm_util.cc24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/lib/kdm_util.cc b/src/lib/kdm_util.cc
index bf112ce11..dcfd1fe67 100644
--- a/src/lib/kdm_util.cc
+++ b/src/lib/kdm_util.cc
@@ -35,7 +35,13 @@ using boost::optional;
KDMCertificatePeriod
-check_kdm_and_certificate_validity_periods(dcp::Certificate const& recipient, dcp::LocalTime kdm_from, dcp::LocalTime kdm_to)
+check_kdm_and_certificate_validity_periods(
+ string const& cinema_name,
+ string const& screen_name,
+ dcp::Certificate const& recipient,
+ dcp::LocalTime kdm_from,
+ dcp::LocalTime kdm_to
+ )
{
auto overlaps = [](dcp::LocalTime from_a, dcp::LocalTime to_a, dcp::LocalTime from_b, dcp::LocalTime to_b) {
return std::max(from_a, from_b) < std::min(to_a, to_b);
@@ -45,16 +51,26 @@ check_kdm_and_certificate_validity_periods(dcp::Certificate const& recipient, dc
return bigger_from <= smaller_from && bigger_to >= smaller_to;
};
+ KDMCertificatePeriod period(
+ cinema_name,
+ screen_name,
+ recipient.not_before(),
+ recipient.not_after()
+ );
+
if (contains(recipient.not_before(), recipient.not_after(), kdm_from, kdm_to)) {
- return KDMCertificatePeriod::KDM_WITHIN_CERTIFICATE;
+ period.overlap = KDMCertificateOverlap::KDM_WITHIN_CERTIFICATE;
+ return period;
}
if (overlaps(recipient.not_before(), recipient.not_after(), kdm_from, kdm_to)) {
/* The KDM overlaps the certificate validity: maybe not the end of the world */
- return KDMCertificatePeriod::KDM_OVERLAPS_CERTIFICATE;
+ period.overlap = KDMCertificateOverlap::KDM_OVERLAPS_CERTIFICATE;
+ return period;
} else {
/* The KDM validity is totally outside the certificate validity: bad news */
- return KDMCertificatePeriod::KDM_OUTSIDE_CERTIFICATE;
+ period.overlap = KDMCertificateOverlap::KDM_OUTSIDE_CERTIFICATE;
+ return period;
}
}