);
} else if (type == "SubRip" || type == "TextSubtitle") {
- content.reset (new PlainText (film, node, version));
+ content.reset (new PlainTextContent (film, node, version));
} else if (type == "DCP") {
content.reset (new DCPContent (film, node, version));
} else if (type == "DCPSubtitle") {
if (valid_image_file (path)) {
single.reset (new ImageContent (film, path));
} else if (ext == ".srt" || ext == ".ssa" || ext == ".ass") {
- single.reset (new PlainText (film, path));
+ single.reset (new PlainTextContent (film, path));
} else if (ext == ".xml") {
cxml::Document doc;
doc.read_file (path);
return shared_ptr<Decoder> (new ImageDecoder (ic, log));
}
- shared_ptr<const PlainText> rc = dynamic_pointer_cast<const PlainText> (content);
+ shared_ptr<const PlainTextContent> rc = dynamic_pointer_cast<const PlainTextContent> (content);
if (rc) {
- return shared_ptr<Decoder> (new TextTextDecoder (rc, log));
+ return shared_ptr<Decoder> (new PlainTextDecoder (rc, log));
}
shared_ptr<const DCPTextContent> dsc = dynamic_pointer_cast<const DCPTextContent> (content);
using boost::optional;
using dcp::Data;
-TextSubtitle::TextSubtitle (shared_ptr<const PlainText> content)
+PlainText::PlainText (shared_ptr<const PlainTextContent> content)
{
Data in (content->path (0));
/** @return time of first subtitle, if there is one */
optional<ContentTime>
-TextSubtitle::first () const
+PlainText::first () const
{
if (_subtitles.empty()) {
return optional<ContentTime>();
}
ContentTime
-TextSubtitle::length () const
+PlainText::length () const
{
if (_subtitles.empty ()) {
return ContentTime ();
#include <boost/shared_ptr.hpp>
#include <vector>
-class PlainText;
+class PlainTextContent;
class plain_text_time_test;
class plain_text_coordinate_test;
class plain_text_content_test;
class plain_text_parse_test;
-class TextSubtitle
+class PlainText
{
public:
- explicit TextSubtitle (boost::shared_ptr<const PlainText>);
+ explicit PlainText (boost::shared_ptr<const PlainTextContent>);
boost::optional<ContentTime> first () const;
ContentTime length () const;
/*
- Copyright (C) 2014-2016 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2014-2018 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
using boost::shared_ptr;
using dcp::raw_convert;
-PlainText::PlainText (shared_ptr<const Film> film, boost::filesystem::path path)
+PlainTextContent::PlainTextContent (shared_ptr<const Film> film, boost::filesystem::path path)
: Content (film, path)
{
subtitle.reset (new TextContent (this));
}
-PlainText::PlainText (shared_ptr<const Film> film, cxml::ConstNodePtr node, int version)
+PlainTextContent::PlainTextContent (shared_ptr<const Film> film, cxml::ConstNodePtr node, int version)
: Content (film, node)
, _length (node->number_child<ContentTime::Type> ("Length"))
{
}
void
-PlainText::examine (boost::shared_ptr<Job> job)
+PlainTextContent::examine (boost::shared_ptr<Job> job)
{
Content::examine (job);
- TextSubtitle s (shared_from_this ());
+ PlainText s (shared_from_this ());
/* Default to turning these subtitles on */
subtitle->set_use (true);
}
string
-PlainText::summary () const
+PlainTextContent::summary () const
{
return path_summary() + " " + _("[subtitles]");
}
string
-PlainText::technical_summary () const
+PlainTextContent::technical_summary () const
{
return Content::technical_summary() + " - " + _("Text subtitles");
}
void
-PlainText::as_xml (xmlpp::Node* node, bool with_paths) const
+PlainTextContent::as_xml (xmlpp::Node* node, bool with_paths) const
{
node->add_child("Type")->add_child_text ("TextSubtitle");
Content::as_xml (node, with_paths);
}
DCPTime
-PlainText::full_length () const
+PlainTextContent::full_length () const
{
FrameRateChange const frc (active_video_frame_rate(), film()->video_frame_rate ());
return DCPTime (_length, frc);
/** @class PlainText
* @brief SubRip or SSA subtitles.
*/
-class PlainText : public Content
+class PlainTextContent : public Content
{
public:
- PlainText (boost::shared_ptr<const Film>, boost::filesystem::path);
- PlainText (boost::shared_ptr<const Film>, cxml::ConstNodePtr, int);
+ PlainTextContent (boost::shared_ptr<const Film>, boost::filesystem::path);
+ PlainTextContent (boost::shared_ptr<const Film>, cxml::ConstNodePtr, int);
- boost::shared_ptr<PlainText> shared_from_this () {
- return boost::dynamic_pointer_cast<PlainText> (Content::shared_from_this ());
+ boost::shared_ptr<PlainTextContent> shared_from_this () {
+ return boost::dynamic_pointer_cast<PlainTextContent> (Content::shared_from_this ());
}
void examine (boost::shared_ptr<Job>);
using boost::optional;
using boost::dynamic_pointer_cast;
-TextTextDecoder::TextTextDecoder (shared_ptr<const PlainText> content, shared_ptr<Log> log)
- : TextSubtitle (content)
+PlainTextDecoder::PlainTextDecoder (shared_ptr<const PlainTextContent> content, shared_ptr<Log> log)
+ : PlainText (content)
, _next (0)
{
ContentTime first;
}
void
-TextTextDecoder::seek (ContentTime time, bool accurate)
+PlainTextDecoder::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.
}
bool
-TextTextDecoder::pass ()
+PlainTextDecoder::pass ()
{
if (_next >= _subtitles.size ()) {
return true;
}
ContentTimePeriod
-TextTextDecoder::content_time_period (sub::Subtitle s) const
+PlainTextDecoder::content_time_period (sub::Subtitle s) const
{
return ContentTimePeriod (
ContentTime::from_seconds (s.from.all_as_seconds()),
class PlainText;
-class TextTextDecoder : public Decoder, public TextSubtitle
+class PlainTextDecoder : public Decoder, public PlainText
{
public:
- TextTextDecoder (boost::shared_ptr<const PlainText>, boost::shared_ptr<Log> log);
+ PlainTextDecoder (boost::shared_ptr<const PlainTextContent>, boost::shared_ptr<Log> log);
void seek (ContentTime time, bool accurate);
bool pass ();
BOOST_FOREACH (shared_ptr<Content> i, selected ()) {
DCPTime p;
p = i->position();
- if (dynamic_pointer_cast<PlainText>(i) && i->paths_valid()) {
+ if (dynamic_pointer_cast<PlainTextContent>(i) && i->paths_valid()) {
/* Rather special case; if we select a text subtitle file jump to its
first subtitle.
*/
- TextSubtitle ts (dynamic_pointer_cast<PlainText>(i));
+ PlainText ts (dynamic_pointer_cast<PlainTextContent>(i));
if (ts.first()) {
p += DCPTime(ts.first().get(), _film->active_frame_rate_change(i->position()));
}
film->set_container (Ratio::from_id ("185"));
film->set_audio_channels (6);
- shared_ptr<PlainText> s (new PlainText (film, "test/data/subrip2.srt"));
+ shared_ptr<PlainTextContent> s (new PlainTextContent (film, "test/data/subrip2.srt"));
film->examine_and_add_content (s);
BOOST_REQUIRE (!wait_for_jobs ());
s->subtitle->set_colour (dcp::Colour (255, 255, 0));
film->examine_and_add_content (c);
BOOST_REQUIRE (!wait_for_jobs ());
- shared_ptr<PlainText> s (new PlainText (film, "test/data/subrip.srt"));
+ shared_ptr<PlainTextContent> s (new PlainTextContent (film, "test/data/subrip.srt"));
film->examine_and_add_content (s);
BOOST_REQUIRE (!wait_for_jobs ());
s->subtitle->set_colour (dcp::Colour (255, 255, 0));
film->set_container (Ratio::from_id ("185"));
film->set_audio_channels (6);
- shared_ptr<PlainText> s (new PlainText (film, "test/data/subrip2.srt"));
+ shared_ptr<PlainTextContent> s (new PlainTextContent (film, "test/data/subrip2.srt"));
film->examine_and_add_content (s);
BOOST_REQUIRE (!wait_for_jobs ());
s->subtitle->set_colour (dcp::Colour (255, 255, 0));
film->examine_and_add_content (c);
BOOST_REQUIRE (!wait_for_jobs ());
- shared_ptr<PlainText> s (new PlainText (film, "test/data/subrip.srt"));
+ shared_ptr<PlainTextContent> s (new PlainTextContent (film, "test/data/subrip.srt"));
film->examine_and_add_content (s);
BOOST_REQUIRE (!wait_for_jobs ());
s->subtitle->set_colour (dcp::Colour (255, 255, 0));
film->examine_and_add_content (c);
BOOST_REQUIRE (!wait_for_jobs ());
- shared_ptr<PlainText> s (new PlainText (film, "test/data/subrip.srt"));
+ shared_ptr<PlainTextContent> s (new PlainTextContent (film, "test/data/subrip.srt"));
film->examine_and_add_content (s);
BOOST_REQUIRE (!wait_for_jobs ());
shared_ptr<Content> dcp (new DCPContent (film, "test/data/reels_test2"));
film->examine_and_add_content (dcp);
- shared_ptr<Content> sub (new PlainText (film, "test/data/subrip.srt"));
+ shared_ptr<Content> sub (new PlainTextContent (film, "test/data/subrip.srt"));
film->examine_and_add_content (sub);
wait_for_jobs ();
content[i]->video->set_length (24);
}
- shared_ptr<PlainText> subs (new PlainText (film, "test/data/subrip3.srt"));
+ shared_ptr<PlainTextContent> subs (new PlainTextContent (film, "test/data/subrip3.srt"));
film->examine_and_add_content (subs);
wait_for_jobs ();
film->set_name ("frobozz");
film->set_audio_channels (6);
film->set_interop (false);
- shared_ptr<PlainText> content (new PlainText (film, "test/data/subrip2.srt"));
+ shared_ptr<PlainTextContent> content (new PlainTextContent (film, "test/data/subrip2.srt"));
film->examine_and_add_content (content);
wait_for_jobs ();
film->set_name ("frobozz");
film->set_audio_channels (6);
film->set_interop (false);
- shared_ptr<PlainText> content (new PlainText (film, "test/data/subrip2.srt"));
+ shared_ptr<PlainTextContent> content (new PlainTextContent (film, "test/data/subrip2.srt"));
film->examine_and_add_content (content);
wait_for_jobs ();
film->set_name ("frobozz");
film->set_interop (true);
film->set_audio_channels (6);
- shared_ptr<PlainText> content (new PlainText (film, private_data / "Ankoemmling_short.srt"));
+ shared_ptr<PlainTextContent> content (new PlainTextContent (film, private_data / "Ankoemmling_short.srt"));
film->examine_and_add_content (content);
wait_for_jobs ();
film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR"));
film->set_name ("frobozz");
film->set_interop (false);
- shared_ptr<PlainText> content (new PlainText (film, "test/data/subrip2.srt"));
+ shared_ptr<PlainTextContent> content (new PlainTextContent (film, "test/data/subrip2.srt"));
content->subtitle->set_use (true);
content->subtitle->set_burn (false);
film->examine_and_add_content (content);
film->set_name ("frobozz");
film->set_interop (true);
film->set_sequence (false);
- shared_ptr<PlainText> content (new PlainText (film, "test/data/subrip2.srt"));
+ shared_ptr<PlainTextContent> content (new PlainTextContent (film, "test/data/subrip2.srt"));
content->subtitle->set_use (true);
content->subtitle->set_burn (false);
film->examine_and_add_content (content);
{
shared_ptr<Film> film = new_test_film2 ("srt_subtitle_test6");
film->set_interop (false);
- shared_ptr<PlainText> content (new PlainText (film, "test/data/frames.srt"));
+ shared_ptr<PlainTextContent> content (new PlainTextContent (film, "test/data/frames.srt"));
content->subtitle->set_use (true);
content->subtitle->set_burn (false);
film->examine_and_add_content (content);
film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR"));
film->set_name ("frobozz");
film->set_interop (true);
- shared_ptr<PlainText> content (new PlainText (film, private_data / "DKH_UT_EN20160601def.ssa"));
+ shared_ptr<PlainTextContent> content (new PlainTextContent (film, private_data / "DKH_UT_EN20160601def.ssa"));
film->examine_and_add_content (content);
wait_for_jobs ();
film->set_container (Ratio::from_id ("185"));
film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TLR"));
film->set_name ("frobozz");
- shared_ptr<PlainText> content (new PlainText (film, "test/data/subrip5.srt"));
+ shared_ptr<PlainTextContent> content (new PlainTextContent (film, "test/data/subrip5.srt"));
film->examine_and_add_content (content);
BOOST_REQUIRE (!wait_for_jobs ());
content->subtitle->set_use (true);