X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fsubrip_content.cc;h=f9d184b9d965f6c6a725ec523c44da813946105b;hb=83e5567530d0be24490abdda46d196e4279c5030;hp=79a1d49999acf8849fb007a68e0188ad29d81dff;hpb=7e2cf1a4a04828b5a57d5eb6869475a819005602;p=dcpomatic.git diff --git a/src/lib/subrip_content.cc b/src/lib/subrip_content.cc index 79a1d4999..f9d184b9d 100644 --- a/src/lib/subrip_content.cc +++ b/src/lib/subrip_content.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2014 Carl Hetherington + Copyright (C) 2014-2015 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,12 +19,19 @@ #include "subrip_content.h" #include "util.h" +#include "subrip.h" +#include "film.h" +#include "font.h" +#include "raw_convert.h" #include "i18n.h" -using std::stringstream; using std::string; +using std::cout; using boost::shared_ptr; +using boost::lexical_cast; + +std::string const SubRipContent::font_id = "font"; SubRipContent::SubRipContent (shared_ptr film, boost::filesystem::path path) : Content (film, path) @@ -33,17 +40,28 @@ SubRipContent::SubRipContent (shared_ptr film, boost::filesystem::pa } -SubRipContent::SubRipContent (shared_ptr film, shared_ptr node, int version) +SubRipContent::SubRipContent (shared_ptr film, cxml::ConstNodePtr node, int version) : Content (film, node) - , SubtitleContent (film, node) + , SubtitleContent (film, node, version) + , _length (node->number_child ("Length")) { } void -SubRipContent::examine (boost::shared_ptr) +SubRipContent::examine (boost::shared_ptr job) { + Content::examine (job); + SubRip s (shared_from_this ()); + + shared_ptr film = _film.lock (); + DCPOMATIC_ASSERT (film); + + DCPTime len (s.length (), film->active_frame_rate_change (position ())); + boost::mutex::scoped_lock lm (_mutex); + _length = len; + _fonts.push_back (shared_ptr (new Font (font_id))); } string @@ -58,36 +76,20 @@ SubRipContent::technical_summary () const return Content::technical_summary() + " - " + _("SubRip subtitles"); } -string -SubRipContent::information () const -{ - -} - void -SubRipContent::as_xml (xmlpp::Node* node) +SubRipContent::as_xml (xmlpp::Node* node) const { node->add_child("Type")->add_child_text ("SubRip"); Content::as_xml (node); SubtitleContent::as_xml (node); + node->add_child("Length")->add_child_text (raw_convert (_length.get ())); } -Time +DCPTime SubRipContent::full_length () const { - -} - -string -SubRipContent::identifier () const -{ - LocaleGuard lg; - - stringstream s; - s << Content::identifier() - << "_" << subtitle_scale() - << "_" << subtitle_offset(); - - return s.str (); + /* XXX: this assumes that the timing of the SubRip file is appropriate + for the DCP's frame rate. + */ + return _length; } -