Fully indent PKL/CPL.
[libdcp.git] / src / cpl.cc
index f807bc61c5cf00672b7e8ca2cf5d15b1db9e2860..3eeb102c196b28ac83af9736ec1c997800ddded9 100644 (file)
@@ -66,14 +66,14 @@ CPL::CPL (string annotation_text, ContentKind content_kind)
        /* default _content_title_text to annotation_text */
        : _content_title_text (annotation_text)
        , _content_kind (content_kind)
-       , _content_version_id ("urn:uuid:" + make_uuid ())
 {
        _metadata.annotation_text = annotation_text;
        /* default _content_version_id to a random ID and _content_version_label to
           a random ID and the current time.
        */
-       _content_version_id = "urn:uuid:" + make_uuid();
-       _content_version_label_text = _content_version_id + LocalTime().as_string ();
+       string const uuid = make_uuid();
+       _content_version_id = "urn:uuid:" + uuid;
+       _content_version_label_text = uuid + LocalTime().as_string ();
 }
 
 /** Construct a CPL object from a XML file */
@@ -164,16 +164,43 @@ CPL::write_xml (boost::filesystem::path file, Standard standard, shared_ptr<cons
                i->write_to_cpl (reel_list, standard);
        }
 
+       indent (root, 0);
+
        if (signer) {
                signer->sign (root, standard);
        }
 
-       /* This must not be the _formatted version otherwise signature digests will be wrong */
-       doc.write_to_file (file.string (), "UTF-8");
+       doc.write_to_file_formatted (file.string(), "UTF-8");
 
        set_file (file);
 }
 
+list<shared_ptr<ReelAsset> >
+CPL::reel_assets ()
+{
+       list<shared_ptr<ReelAsset> > c;
+
+       BOOST_FOREACH (shared_ptr<Reel> i, _reels) {
+               if (i->main_picture ()) {
+                       c.push_back (i->main_picture());
+               }
+               if (i->main_sound ()) {
+                       c.push_back (i->main_sound());
+               }
+               if (i->main_subtitle ()) {
+                       c.push_back (i->main_subtitle());
+               }
+               BOOST_FOREACH (shared_ptr<ReelClosedCaptionAsset> j, i->closed_captions()) {
+                       c.push_back (j);
+               }
+               if (i->atmos ()) {
+                       c.push_back (i->atmos());
+               }
+       }
+
+       return c;
+}
+
 list<shared_ptr<const ReelAsset> >
 CPL::reel_assets () const
 {
@@ -189,8 +216,8 @@ CPL::reel_assets () const
                if (i->main_subtitle ()) {
                        c.push_back (i->main_subtitle());
                }
-               if (i->closed_caption ()) {
-                       c.push_back (i->closed_caption());
+               BOOST_FOREACH (shared_ptr<ReelClosedCaptionAsset> j, i->closed_captions()) {
+                       c.push_back (j);
                }
                if (i->atmos ()) {
                        c.push_back (i->atmos());
@@ -273,6 +300,12 @@ CPL::resolve_refs (list<shared_ptr<Asset> > assets)
 
 string
 CPL::pkl_type (Standard standard) const
+{
+       return static_pkl_type (standard);
+}
+
+string
+CPL::static_pkl_type (Standard standard)
 {
        switch (standard) {
        case INTEROP: