Use enum class for VideoRange.
[dcpomatic.git] / src / lib / types.cc
index 9806c99712eb8d1a6c87e43cab4f39aeb530921f..840ee3aa8b5608fb9ff946f04efdffa22c4f6eb9 100644 (file)
 #include "types.h"
 #include "compose.hpp"
 #include "dcpomatic_assert.h"
+#include "warnings.h"
 #include <dcp/raw_convert.h>
 #include <dcp/cpl.h>
 #include <dcp/dcp.h>
-#include <dcp/reel_mxf.h>
+#include <dcp/reel_file_asset.h>
 #include <dcp/reel_asset.h>
+DCPOMATIC_DISABLE_WARNINGS
 #include <libxml++/libxml++.h>
+DCPOMATIC_ENABLE_WARNINGS
 #include <libcxml/cxml.h>
-#include <boost/foreach.hpp>
 
 #include "i18n.h"
 
@@ -36,7 +38,8 @@ using std::max;
 using std::min;
 using std::string;
 using std::list;
-using boost::shared_ptr;
+using std::shared_ptr;
+using std::vector;
 using dcp::raw_convert;
 
 bool operator== (Crop const & a, Crop const & b)
@@ -194,10 +197,14 @@ CPLSummary::CPLSummary (boost::filesystem::path p)
        : dcp_directory (p.leaf().string())
 {
        dcp::DCP dcp (p);
-       list<dcp::VerificationNote> notes;
+
+       vector<dcp::VerificationNote> notes;
        dcp.read (&notes);
-       if (!notes.empty()) {
-               throw dcp::DCPReadError(dcp::note_to_string(notes.front()));
+       for (auto i: notes) {
+               if (i.code() != dcp::VerificationNote::Code::EXTERNAL_ASSET) {
+                       /* It's not just a warning about this DCP being a VF */
+                       throw dcp::ReadError(dcp::note_to_string(i));
+               }
        }
 
        cpl_id = dcp.cpls().front()->id();
@@ -205,8 +212,8 @@ CPLSummary::CPLSummary (boost::filesystem::path p)
        cpl_file = dcp.cpls().front()->file().get();
 
        encrypted = false;
-       BOOST_FOREACH (shared_ptr<dcp::CPL> j, dcp.cpls()) {
-               BOOST_FOREACH (shared_ptr<const dcp::ReelMXF> k, j->reel_mxfs()) {
+       for (auto j: dcp.cpls()) {
+               for (auto k: j->reel_file_assets()) {
                        if (k->key_id()) {
                                encrypted = true;
                        }
@@ -215,3 +222,38 @@ CPLSummary::CPLSummary (boost::filesystem::path p)
 
        last_write_time = boost::filesystem::last_write_time (p);
 }
+
+
+bool operator== (NamedChannel const& a, NamedChannel const& b)
+{
+       return a.name == b.name && a.index == b.index;
+}
+
+
+string
+video_range_to_string (VideoRange r)
+{
+       switch (r) {
+       case VideoRange::FULL:
+               return "full";
+       case VideoRange::VIDEO:
+               return "video";
+       default:
+               DCPOMATIC_ASSERT (false);
+       }
+}
+
+
+VideoRange
+string_to_video_range (string s)
+{
+       if (s == "full") {
+               return VideoRange::FULL;
+       } else if (s == "video") {
+               return VideoRange::VIDEO;
+       }
+
+       DCPOMATIC_ASSERT (false);
+       return VideoRange::FULL;
+}
+