diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-10-07 11:47:27 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-10-09 13:44:53 +0100 |
| commit | 4121af462c1e8b98866ca206a64678fcba96fde7 (patch) | |
| tree | 8970b97caf442ad6f54db897b87535ffe87cebbf /src/lib/screen_kdm.cc | |
| parent | 7beb2cf613c7d310493fa39f9ef611b35f8f3d58 (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.cc | 67 |
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); + } +} |
