Use dcp::file_to_string().
[dcpomatic.git] / src / lib / string_text_file_decoder.cc
index e67450b8b719efe38527d74f5b908de3c67a9290..f24147851847e1ee120354984f2dbd40f20630a7 100644 (file)
@@ -23,7 +23,6 @@
 #include "text_content.h"
 #include "text_decoder.h"
 #include <dcp/subtitle_string.h>
-#include <boost/foreach.hpp>
 #include <iostream>
 
 using std::list;
@@ -31,12 +30,14 @@ using std::vector;
 using std::string;
 using std::cout;
 using std::max;
-using boost::shared_ptr;
+using std::shared_ptr;
 using boost::optional;
-using boost::dynamic_pointer_cast;
+using std::dynamic_pointer_cast;
+using namespace dcpomatic;
 
-StringTextFileDecoder::StringTextFileDecoder (shared_ptr<const StringTextFileContent> content)
-       : StringTextFile (content)
+StringTextFileDecoder::StringTextFileDecoder (shared_ptr<const Film> film, shared_ptr<const StringTextFileContent> content)
+       : Decoder (film)
+       , StringTextFile (content)
        , _next (0)
 {
        ContentTime first;
@@ -47,7 +48,7 @@ StringTextFileDecoder::StringTextFileDecoder (shared_ptr<const StringTextFileCon
 }
 
 void
-StringTextFileDecoder::seek (shared_ptr<const Film> film, ContentTime time, bool accurate)
+StringTextFileDecoder::seek (ContentTime time, bool accurate)
 {
        /* It's worth back-tracking a little here as decoding is cheap and it's nice if we don't miss
           too many subtitles when seeking.
@@ -57,7 +58,7 @@ StringTextFileDecoder::seek (shared_ptr<const Film> film, ContentTime time, bool
                time = ContentTime();
        }
 
-       Decoder::seek (film, time, accurate);
+       Decoder::seek (time, accurate);
 
        _next = 0;
        while (_next < _subtitles.size() && ContentTime::from_seconds (_subtitles[_next].from.all_as_seconds ()) < time) {
@@ -66,7 +67,7 @@ StringTextFileDecoder::seek (shared_ptr<const Film> film, ContentTime time, bool
 }
 
 bool
-StringTextFileDecoder::pass (shared_ptr<const Film>)
+StringTextFileDecoder::pass ()
 {
        if (_next >= _subtitles.size ()) {
                return true;
@@ -87,3 +88,17 @@ StringTextFileDecoder::content_time_period (sub::Subtitle s) const
                ContentTime::from_seconds (s.to.all_as_seconds())
                );
 }
+
+
+vector<FontData>
+StringTextFileDecoder::fonts () const
+{
+       vector<FontData> data;
+       for (auto i: text) {
+               for (auto j: i->content()->fonts()) {
+                       data.push_back (FontData(j));
+               }
+       }
+       return data;
+}
+