Remove some unused methods.
[libdcp.git] / src / cpl.h
index 2066130edbba2293005083a50fa8dd0b381de057..73ca45bf60bae809174c45714592116574aff849 100644 (file)
--- a/src/cpl.h
+++ b/src/cpl.h
@@ -1,7 +1,7 @@
 /*
     Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
 
-    This program is free software; you can redistribute it and/or modify
+    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.
 
 */
 
+/** @file  src/cpl.h
+ *  @brief CPL class.
+ */
+
 #ifndef LIBDCP_CPL_H
 #define LIBDCP_CPL_H
 
 #include "certificates.h"
 #include "key.h"
 #include "asset.h"
+#include "metadata.h"
 #include <libxml++/libxml++.h>
 #include <boost/shared_ptr.hpp>
 #include <boost/function.hpp>
-#include <boost/date_time/posix_time/posix_time.hpp>
 #include <boost/optional.hpp>
 #include <boost/filesystem.hpp>
 #include <list>
 
 namespace dcp {
        
-class Content;
+class ReelAsset;
 class Reel;
 class XMLMetadata;
 class MXFMetadata;
 class Signer;
-class KDM;
+class DecryptedKDM;
        
 /** @class CPL
  *  @brief A Composition Playlist.
@@ -50,10 +54,6 @@ public:
        CPL (std::string annotation_text, ContentKind content_kind);
        CPL (boost::filesystem::path file);
 
-       std::string pkl_type () const {
-               return "text/xml";
-       }
-
        bool equals (
                CPL const & other,
                EqualityOptions options,
@@ -61,15 +61,27 @@ public:
                ) const;
 
        void add (boost::shared_ptr<Reel> reel);
-       void add (KDM const &);
-       
+       void add (DecryptedKDM const &);
+
+       /** @return contents of the &lt;AnnotationText&gt; node */
        std::string annotation_text () const {
                return _annotation_text;
        }
        
+       /** @return contents of the &lt;ContentTitleText&gt; node */
        std::string content_title_text () const {
                return _content_title_text;
        }
+
+       /** @return contents of the &lt;Id&gt; node within &lt;ContentVersion&gt; */
+       void set_content_version_id (std::string id) {
+               _content_version_id = id;
+       }
+
+       /** @return contents of the &lt;LabelText&gt; node within &lt;ContentVersion&gt; */
+       void set_content_version_label_text (std::string text) {
+               _content_version_label_text = text;
+       }
        
        /** @return the type of the content, used by media servers
         *  to categorise things (e.g. feature, trailer, etc.)
@@ -78,33 +90,43 @@ public:
                return _content_kind;
        }
 
+       /** @return the reels in this CPL */
        std::list<boost::shared_ptr<Reel> > reels () const {
                return _reels;
        }
 
-       std::list<boost::shared_ptr<const Content> > content () const;
+       /** @return the ReelAssets in this CPL in all reels.
+        */
+       std::list<boost::shared_ptr<const ReelAsset> > reel_assets () const;
 
        bool encrypted () const;
 
-       void set_mxf_keys (Key);
+       void set_metadata (XMLMetadata m) {
+               _metadata = m;
+       }
 
        void write_xml (
                boost::filesystem::path file,
                Standard standard,
-               XMLMetadata,
                boost::shared_ptr<const Signer>
                ) const;
 
        void resolve_refs (std::list<boost::shared_ptr<Object> >);
-       
+
+protected:
+       /** @return type string for PKLs for this asset */
+       std::string pkl_type (Standard standard) const;
+
 private:
-       std::string _annotation_text;               ///< <AnnotationText>
-       std::string _issue_date;                    ///< <IssueDate>
-       std::string _creator;                       ///< <Creator>
-       std::string _content_title_text;            ///< <ContentTitleText>
-       ContentKind _content_kind;                  ///< <ContentKind>
-       std::string _content_version_id;            ///< <Id> in <ContentVersion>
-       std::string _content_version_label_text;    ///< <LabelText> in <ContentVersion>
+       std::string _annotation_text;               ///< &lt;AnnotationText&gt;
+       /** &lt;Issuer&gt;, &lt;Creator&gt; and &lt;IssueDate&gt;.  These are grouped
+        *  because they occur together in a few places.
+        */
+       XMLMetadata _metadata;
+       std::string _content_title_text;            ///< &lt;ContentTitleText&gt;
+       ContentKind _content_kind;                  ///< &lt;ContentKind&gt;
+       std::string _content_version_id;            ///< &lt;Id&gt; in &lt;ContentVersion&gt;
+       std::string _content_version_label_text;    ///< &lt;LabelText&gt; in &lt;ContentVersion&gt;
        std::list<boost::shared_ptr<Reel> > _reels;
 };