Add OK note when PKL and CPL annotation texts match.
[libdcp.git] / src / reel.cc
index cca62ed820e739db58c9876972d4e7698a8ce881..def3a4ae6a18104f9860e79367286f49e9838b51 100644 (file)
  */
 
 
-#include "reel.h"
-#include "util.h"
-#include "picture_asset.h"
+#include "decrypted_kdm.h"
+#include "decrypted_kdm_key.h"
+#include "equality_options.h"
+#include "interop_subtitle_asset.h"
 #include "mono_picture_asset.h"
-#include "stereo_picture_asset.h"
-#include "sound_asset.h"
-#include "subtitle_asset.h"
-#include "reel_mono_picture_asset.h"
-#include "reel_stereo_picture_asset.h"
-#include "reel_sound_asset.h"
+#include "picture_asset.h"
+#include "reel.h"
+#include "reel_atmos_asset.h"
+#include "reel_closed_caption_asset.h"
 #include "reel_interop_closed_caption_asset.h"
 #include "reel_interop_subtitle_asset.h"
+#include "reel_markers_asset.h"
+#include "reel_mono_picture_asset.h"
 #include "reel_smpte_closed_caption_asset.h"
 #include "reel_smpte_subtitle_asset.h"
+#include "reel_sound_asset.h"
+#include "reel_stereo_picture_asset.h"
 #include "reel_subtitle_asset.h"
-#include "reel_markers_asset.h"
-#include "decrypted_kdm_key.h"
-#include "decrypted_kdm.h"
-#include "interop_subtitle_asset.h"
 #include "smpte_subtitle_asset.h"
-#include "reel_atmos_asset.h"
-#include "reel_closed_caption_asset.h"
+#include "sound_asset.h"
+#include "stereo_picture_asset.h"
+#include "subtitle_asset.h"
+#include "util.h"
 #include <libxml++/nodes/element.h>
 #include <stdint.h>
 
@@ -140,9 +141,9 @@ Reel::Reel (std::shared_ptr<const cxml::Node> node, dcp::Standard standard)
 xmlpp::Element *
 Reel::write_to_cpl (xmlpp::Element* node, Standard standard) const
 {
-       auto reel = node->add_child ("Reel");
-       reel->add_child("Id")->add_child_text("urn:uuid:" + _id);
-       xmlpp::Element* asset_list = reel->add_child ("AssetList");
+       auto reel = cxml::add_child(node, "Reel");
+       cxml::add_text_child(reel, "Id", "urn:uuid:" + _id);
+       auto asset_list = cxml::add_child(reel, "AssetList");
 
        if (_main_markers) {
                _main_markers->write_to_cpl (asset_list, standard);
@@ -179,7 +180,7 @@ Reel::write_to_cpl (xmlpp::Element* node, Standard standard) const
 
 
 bool
-Reel::equals (std::shared_ptr<const Reel> other, EqualityOptions opt, NoteHandler note) const
+Reel::equals(std::shared_ptr<const Reel> other, EqualityOptions const& opt, NoteHandler note) const
 {
        if ((_main_picture && !other->_main_picture) || (!_main_picture && other->_main_picture)) {
                note (NoteType::ERROR, "Reel: picture assets differ");
@@ -353,24 +354,20 @@ Reel::give_kdm_to_assets (DecryptedKDM const & kdm)
 void
 Reel::add (shared_ptr<ReelAsset> asset)
 {
-       auto p = dynamic_pointer_cast<ReelPictureAsset> (asset);
-       auto so = dynamic_pointer_cast<ReelSoundAsset> (asset);
-       auto su = dynamic_pointer_cast<ReelSubtitleAsset> (asset);
-       auto m = dynamic_pointer_cast<ReelMarkersAsset> (asset);
-       auto c = dynamic_pointer_cast<ReelClosedCaptionAsset> (asset);
-       auto a = dynamic_pointer_cast<ReelAtmosAsset> (asset);
-       if (p) {
+       if (auto p = dynamic_pointer_cast<ReelPictureAsset>(asset)) {
                _main_picture = p;
-       } else if (so) {
+       } else if (auto so = dynamic_pointer_cast<ReelSoundAsset>(asset)) {
                _main_sound = so;
-       } else if (su) {
+       } else if (auto su = dynamic_pointer_cast<ReelSubtitleAsset>(asset)) {
                _main_subtitle = su;
-       } else if (m) {
+       } else if (auto m = dynamic_pointer_cast<ReelMarkersAsset>(asset)) {
                _main_markers = m;
-       } else if (c) {
+       } else if (auto c = dynamic_pointer_cast<ReelClosedCaptionAsset>(asset)) {
                _closed_captions.push_back (c);
-       } else if (a) {
+       } else if (auto a = dynamic_pointer_cast<ReelAtmosAsset>(asset)) {
                _atmos = a;
+       } else {
+               DCP_ASSERT(false);
        }
 }