summaryrefslogtreecommitdiff
path: root/src/lib/screen_kdm.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-10-07 11:47:27 +0100
committerCarl Hetherington <cth@carlh.net>2015-10-09 13:44:53 +0100
commit4121af462c1e8b98866ca206a64678fcba96fde7 (patch)
tree8970b97caf442ad6f54db897b87535ffe87cebbf /src/lib/screen_kdm.cc
parent7beb2cf613c7d310493fa39f9ef611b35f8f3d58 (diff)
Try to clean up KDM creation code a bit.
Diffstat (limited to 'src/lib/screen_kdm.cc')
-rw-r--r--src/lib/screen_kdm.cc67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/lib/screen_kdm.cc b/src/lib/screen_kdm.cc
new file mode 100644
index 000000000..af0f0a3dd
--- /dev/null
+++ b/src/lib/screen_kdm.cc
@@ -0,0 +1,67 @@
+/*
+ Copyright (C) 2013-2015 Carl Hetherington <cth@carlh.net>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include "screen_kdm.h"
+#include "cinema.h"
+#include "screen.h"
+#include "film.h"
+#include "util.h"
+#include <boost/foreach.hpp>
+
+using std::string;
+using std::list;
+using boost::shared_ptr;
+
+bool
+operator== (ScreenKDM const & a, ScreenKDM const & b)
+{
+ return a.screen == b.screen && a.kdm == b.kdm;
+}
+
+string
+ScreenKDM::filename (shared_ptr<const Film> film) const
+{
+ return tidy_for_filename (film->name()) + "_" + tidy_for_filename (screen->cinema->name) + "_" + tidy_for_filename (screen->name) + ".kdm.xml";
+}
+
+list<ScreenKDM>
+ScreenKDM::collect (list<shared_ptr<Screen> > screens, list<dcp::EncryptedKDM> kdms)
+{
+ list<ScreenKDM> screen_kdms;
+
+ list<shared_ptr<Screen> >::iterator i = screens.begin ();
+ list<dcp::EncryptedKDM>::iterator j = kdms.begin ();
+ while (i != screens.end() && j != kdms.end ()) {
+ screen_kdms.push_back (ScreenKDM (*i, *j));
+ ++i;
+ ++j;
+ }
+
+ return screen_kdms;
+}
+
+void
+ScreenKDM::write_files (shared_ptr<const Film> film, list<ScreenKDM> screen_kdms, boost::filesystem::path directory)
+{
+ /* Write KDMs to the specified directory */
+ BOOST_FOREACH (ScreenKDM const & i, screen_kdms) {
+ boost::filesystem::path out = directory / i.filename(film);
+ i.kdm.as_xml (out);
+ }
+}