X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fscreen_kdm.h;h=a1e36245cc7e5ccf46fb3337c899932c6fad7a5e;hb=e9cca90a162e3e4b1db4a5e5188831beaa69d44e;hp=6230ea091b3b7dfbeb3dbb6454e869d50eda5399;hpb=2852855f19fadb6d7e43282e545a0bcaedc1a3f7;p=dcpomatic.git diff --git a/src/lib/screen_kdm.h b/src/lib/screen_kdm.h index 6230ea091..a1e36245c 100644 --- a/src/lib/screen_kdm.h +++ b/src/lib/screen_kdm.h @@ -1,47 +1,106 @@ /* - Copyright (C) 2013-2015 Carl Hetherington + Copyright (C) 2013-2019 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic 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, + DCP-o-matic 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. + along with DCP-o-matic. If not, see . */ #ifndef DCPOMATIC_SCREEN_KDM_H #define DCPOMATIC_SCREEN_KDM_H +#ifdef DCPOMATIC_VARIANT_SWAROOP +#include "encrypted_ecinema_kdm.h" +#endif #include +#include #include -class Screen; +namespace dcpomatic { + class Screen; +} /** Simple class to collect a screen and an encrypted KDM */ class ScreenKDM { public: - ScreenKDM (boost::shared_ptr s, dcp::EncryptedKDM k) + ScreenKDM (boost::shared_ptr s) : screen (s) + {} + + virtual ~ScreenKDM () {} + + virtual std::string kdm_as_xml () const = 0; + virtual void kdm_as_xml (boost::filesystem::path out) const = 0; + virtual std::string kdm_id () const = 0; + + static int write_files ( + std::list > screen_kdms, boost::filesystem::path directory, + dcp::NameFormat name_format, dcp::NameFormat::Map name_values, + boost::function confirm_overwrite + ); + + boost::shared_ptr screen; +}; + +class DCPScreenKDM : public ScreenKDM +{ +public: + DCPScreenKDM (boost::shared_ptr s, dcp::EncryptedKDM k) + : ScreenKDM (s) , kdm (k) {} - std::string filename (std::string film_name) const; + std::string kdm_as_xml () const { + return kdm.as_xml (); + } - static void write_files (std::string film_name, std::list screen_kdms, boost::filesystem::path directory); + void kdm_as_xml (boost::filesystem::path out) const { + return kdm.as_xml (out); + } + + std::string kdm_id () const { + return kdm.cpl_id (); + } - boost::shared_ptr screen; dcp::EncryptedKDM kdm; }; -extern bool operator== (ScreenKDM const & a, ScreenKDM const & b); +#ifdef DCPOMATIC_VARIANT_SWAROOP +class ECinemaScreenKDM : public ScreenKDM +{ +public: + ECinemaScreenKDM (boost::shared_ptr s, EncryptedECinemaKDM k) + : ScreenKDM (s) + , kdm (k) + {} + + std::string kdm_as_xml () const { + return kdm.as_xml (); + } + + void kdm_as_xml (boost::filesystem::path out) const { + return kdm.as_xml (out); + } + + std::string kdm_id () const { + return kdm.id (); + } + + EncryptedECinemaKDM kdm; +}; +#endif #endif