Merge master.
[dcpomatic.git] / src / lib / subrip_decoder.cc
index aecee4e3e7aaceb4290dccf75aaa7a79674f2bc8..e832c2d849d7d09a47de30a8027301d8e9cf380c 100644 (file)
 
 */
 
+#include <dcp/subtitle_string.h>
 #include "subrip_decoder.h"
+#include "subrip_content.h"
 
 using std::list;
 using boost::shared_ptr;
 
-SubRipDecoder::SubRipDecoder (shared_ptr<const Film> film, shared_ptr<const SubRipContent> content)
-       : Decoder (film)
-       , SubtitleDecoder (film)
+SubRipDecoder::SubRipDecoder (shared_ptr<const SubRipContent> content)
+       : SubtitleDecoder (content)
        , SubRip (content)
        , _next (0)
 {
 
 }
 
+void
+SubRipDecoder::seek (ContentTime time, bool accurate)
+{
+       SubtitleDecoder::seek (time, accurate);
+       
+       _next = 0;
+       list<SubRipSubtitlePiece>::const_iterator i = _subtitles[_next].pieces.begin();
+       while (i != _subtitles[_next].pieces.end() && _subtitles[_next].from < time) {
+               ++i;
+       }
+       
+}
+
 bool
 SubRipDecoder::pass ()
 {
@@ -38,21 +52,21 @@ SubRipDecoder::pass ()
                return true;
        }
        
-       list<libdcp::Subtitle> out;
+       list<dcp::SubtitleString> out;
        for (list<SubRipSubtitlePiece>::const_iterator i = _subtitles[_next].pieces.begin(); i != _subtitles[_next].pieces.end(); ++i) {
                out.push_back (
-                       libdcp::Subtitle (
+                       dcp::SubtitleString (
                                "Arial",
                                i->italic,
-                               libdcp::Color (255, 255, 255),
+                               dcp::Color (255, 255, 255),
                                72,
-                               _subtitles[_next].from,
-                               _subtitles[_next].to,
+                               dcp::Time (rint (_subtitles[_next].from.seconds() * 250)),
+                               dcp::Time (rint (_subtitles[_next].to.seconds() * 250)),
                                0.9,
-                               libdcp::BOTTOM,
+                               dcp::BOTTOM,
                                i->text,
-                               libdcp::NONE,
-                               libdcp::Color (255, 255, 255),
+                               dcp::NONE,
+                               dcp::Color (255, 255, 255),
                                0,
                                0
                                )