Adapt for libdcp use of enum class.
[dcpomatic.git] / src / lib / writer.cc
index fcf084c56e4fe276b6b267a534196d257938554c..a67430d616b6841f5ab2c088c1d87726067dc616 100644 (file)
 #include "cross.h"
 #include "audio_buffers.h"
 #include "version.h"
-#include "font.h"
+#include "font_data.h"
 #include "util.h"
 #include "reel_writer.h"
 #include "text_content.h"
 #include <dcp/cpl.h>
 #include <dcp/locale_convert.h>
 #include <dcp/reel_mxf.h>
-#include <boost/foreach.hpp>
 #include <fstream>
 #include <cerrno>
 #include <iostream>
@@ -59,9 +58,9 @@ using std::map;
 using std::min;
 using std::max;
 using std::vector;
-using boost::shared_ptr;
-using boost::weak_ptr;
-using boost::dynamic_pointer_cast;
+using std::shared_ptr;
+using std::weak_ptr;
+using std::dynamic_pointer_cast;
 using boost::optional;
 #if BOOST_VERSION >= 106100
 using namespace boost::placeholders;
@@ -101,7 +100,7 @@ Writer::Writer (weak_ptr<const Film> weak_film, weak_ptr<Job> j, bool text_only)
 
        int reel_index = 0;
        list<DCPTimePeriod> const reels = film()->reels();
-       BOOST_FOREACH (DCPTimePeriod p, reels) {
+       for (auto p: reels) {
                _reels.push_back (ReelWriter(weak_film, p, job, reel_index++, reels.size(), text_only));
        }
 
@@ -112,7 +111,7 @@ Writer::Writer (weak_ptr<const Film> weak_film, weak_ptr<Job> j, bool text_only)
        */
        _audio_reel = _reels.begin ();
        _subtitle_reel = _reels.begin ();
-       BOOST_FOREACH (DCPTextTrack i, film()->closed_caption_tracks()) {
+       for (auto i: film()->closed_caption_tracks()) {
                _caption_reels[i] = _reels.begin ();
        }
        _atmos_reel = _reels.begin ();
@@ -413,7 +412,7 @@ try
                        /* (Hopefully temporarily) log anything that was not written */
                        if (!_queue.empty() && !have_sequenced_image_at_queue_head()) {
                                LOG_WARNING (N_("Finishing writer with a left-over queue of %1:"), _queue.size());
-                               BOOST_FOREACH (QueueItem const& i, _queue) {
+                               for (auto const& i: _queue) {
                                        if (i.type == QueueItem::FULL) {
                                                LOG_WARNING (N_("- type FULL, frame %1, eyes %2"), i.frame, (int) i.eyes);
                                        } else {
@@ -537,7 +536,7 @@ Writer::finish (boost::filesystem::path output_dcp)
 
        LOG_GENERAL_NC ("Finishing ReelWriters");
 
-       BOOST_FOREACH (ReelWriter& i, _reels) {
+       for (auto& i: _reels) {
                i.finish (output_dcp);
        }
 
@@ -579,7 +578,7 @@ Writer::finish (boost::filesystem::path output_dcp)
                set_progress = &ignore_progress;
        }
 
-       BOOST_FOREACH (ReelWriter& i, _reels) {
+       for (auto& i: _reels) {
                service.post (boost::bind (&ReelWriter::calculate_digests, &i, set_progress));
        }
        service.post (boost::bind (&Writer::calculate_referenced_digests, this, set_progress));
@@ -590,7 +589,7 @@ Writer::finish (boost::filesystem::path output_dcp)
 
        /* Add reels */
 
-       BOOST_FOREACH (ReelWriter& i, _reels) {
+       for (auto& i: _reels) {
                cpl->add (i.create_reel(_reel_assets, _fonts, output_dcp, _have_subtitles, _have_closed_captions));
        }
 
@@ -609,7 +608,7 @@ Writer::finish (boost::filesystem::path output_dcp)
        cpl->set_ratings (film()->ratings());
 
        vector<dcp::ContentVersion> cv;
-       BOOST_FOREACH (string i, film()->content_versions()) {
+       for (auto i: film()->content_versions()) {
                cv.push_back (dcp::ContentVersion(i));
        }
        cpl->set_content_versions (cv);
@@ -624,15 +623,15 @@ Writer::finish (boost::filesystem::path output_dcp)
        cpl->set_facility (film()->facility());
        cpl->set_luminance (film()->luminance());
 
-       list<int> ac = film()->mapped_audio_channels();
+       auto ac = film()->mapped_audio_channels();
        dcp::MCASoundField field = (
-               find(ac.begin(), ac.end(), static_cast<int>(dcp::BSL)) != ac.end() ||
-               find(ac.begin(), ac.end(), static_cast<int>(dcp::BSR)) != ac.end()
-               ) ? dcp::SEVEN_POINT_ONE : dcp::FIVE_POINT_ONE;
+               find(ac.begin(), ac.end(), static_cast<int>(dcp::Channel::BSL)) != ac.end() ||
+               find(ac.begin(), ac.end(), static_cast<int>(dcp::Channel::BSR)) != ac.end()
+               ) ? dcp::MCASoundField::SEVEN_POINT_ONE : dcp::MCASoundField::FIVE_POINT_ONE;
 
        dcp::MainSoundConfiguration msc (field, film()->audio_channels());
-       BOOST_FOREACH (int i, ac) {
-               if (i < film()->audio_channels()) {
+       for (auto i: ac) {
+               if (static_cast<int>(i) < film()->audio_channels()) {
                        msc.set_mapping (i, static_cast<dcp::Channel>(i));
                }
        }
@@ -656,7 +655,7 @@ Writer::finish (boost::filesystem::path output_dcp)
        }
 
        dcp.write_xml (
-               film()->interop() ? dcp::INTEROP : dcp::SMPTE,
+               film()->interop() ? dcp::Standard::INTEROP : dcp::Standard::SMPTE,
                issuer,
                creator,
                dcp::LocalTime().as_string(),
@@ -792,14 +791,14 @@ Writer::write (PlayerText text, TextType type, optional<DCPTextTrack> track, DCP
 }
 
 void
-Writer::write (list<shared_ptr<Font> > fonts)
+Writer::write (vector<FontData> fonts)
 {
        /* Just keep a list of unique fonts and we'll deal with them in ::finish */
 
-       BOOST_FOREACH (shared_ptr<Font> i, fonts) {
+       for (auto const& i: fonts) {
                bool got = false;
-               BOOST_FOREACH (shared_ptr<Font> j, _fonts) {
-                       if (*i == *j) {
+               for (auto& j: _fonts) {
+                       if (i == j) {
                                got = true;
                        }
                }
@@ -879,7 +878,7 @@ Writer::set_digest_progress (Job* job, float progress)
 void
 Writer::calculate_referenced_digests (boost::function<void (float)> set_progress)
 {
-       BOOST_FOREACH (ReferencedReelAsset const& i, _reel_assets) {
+       for (auto const& i: _reel_assets) {
                shared_ptr<dcp::ReelMXF> mxf = dynamic_pointer_cast<dcp::ReelMXF>(i.asset);
                if (mxf && !mxf->hash()) {
                        mxf->asset_ref().asset()->hash (set_progress);