/*
- Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2013-2016 Carl Hetherington <cth@carlh.net>
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
*/
#include "dcpomatic_time.h"
+#include "rgba.h"
#include "ffmpeg_stream.h"
class FFmpegSubtitleStream : public FFmpegStream
FFmpegSubtitleStream (std::string n, int i)
: FFmpegStream (n, i)
{}
-
- FFmpegSubtitleStream (cxml::ConstNodePtr);
+
+ FFmpegSubtitleStream (cxml::ConstNodePtr, int version);
void as_xml (xmlpp::Node *) const;
- std::vector<ContentTimePeriod> periods;
-};
+ void add_image_subtitle (std::string id, ContentTimePeriod period);
+ void add_text_subtitle (std::string id, ContentTimePeriod period);
+ std::list<ContentTimePeriod> image_subtitles_during (ContentTimePeriod period, bool starting) const;
+ std::list<ContentTimePeriod> text_subtitles_during (ContentTimePeriod period, bool starting) const;
+ ContentTime find_subtitle_to (std::string id) const;
+ void add_offset (ContentTime offset);
+ void set_colour (RGBA from, RGBA to);
+ std::map<RGBA, RGBA> colours () const;
+
+private:
+ typedef std::map<std::string, ContentTimePeriod> PeriodMap;
+
+ void as_xml (xmlpp::Node *, PeriodMap const & subs, std::string node) const;
+ std::list<ContentTimePeriod> subtitles_during (ContentTimePeriod period, bool starting, PeriodMap const & subs) const;
+
+ PeriodMap _image_subtitles;
+ PeriodMap _text_subtitles;
+ std::map<RGBA, RGBA> _colours;
+};