summaryrefslogtreecommitdiff
path: root/src/lib/subtitle_decoder.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-05-10 14:29:14 +0100
committerCarl Hetherington <cth@carlh.net>2016-05-18 11:50:29 +0100
commit504c63b3d62038bc486ca8a09e77fbb403907edd (patch)
treed9118c185110dd9eb103ed033700d4b3f486785d /src/lib/subtitle_decoder.h
parent9423e02c37daba7f9e406929a1cfc1bb10fb4b62 (diff)
Basics of splitting up Decoder tree like Content.
Diffstat (limited to 'src/lib/subtitle_decoder.h')
-rw-r--r--src/lib/subtitle_decoder.h30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/lib/subtitle_decoder.h b/src/lib/subtitle_decoder.h
index ef62d8b88..317755107 100644
--- a/src/lib/subtitle_decoder.h
+++ b/src/lib/subtitle_decoder.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2013 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
@@ -28,33 +28,43 @@
class Image;
-class SubtitleDecoder : public virtual Decoder
+class SubtitleDecoder
{
public:
- SubtitleDecoder (boost::shared_ptr<const SubtitleContent>);
+ /** Second parameter to the _during functions is true if we
+ * want only subtitles that start during the period,
+ * otherwise we want subtitles that overlap the period.
+ */
+ SubtitleDecoder (
+ Decoder* parent,
+ boost::shared_ptr<const SubtitleContent>,
+ boost::function<std::list<ContentTimePeriod> (ContentTimePeriod, bool)> image_subtitles_during,
+ boost::function<std::list<ContentTimePeriod> (ContentTimePeriod, bool)> text_subtitles_during
+ );
std::list<ContentImageSubtitle> get_image_subtitles (ContentTimePeriod period, bool starting, bool accurate);
std::list<ContentTextSubtitle> get_text_subtitles (ContentTimePeriod period, bool starting, bool accurate);
-protected:
void seek (ContentTime, bool);
void image_subtitle (ContentTimePeriod period, boost::shared_ptr<Image>, dcpomatic::Rect<double>);
void text_subtitle (ContentTimePeriod period, std::list<dcp::SubtitleString>);
+ boost::shared_ptr<const SubtitleContent> content () const {
+ return _subtitle_content;
+ }
+
+private:
+ Decoder* _parent;
std::list<ContentImageSubtitle> _decoded_image_subtitles;
std::list<ContentTextSubtitle> _decoded_text_subtitles;
boost::shared_ptr<const SubtitleContent> _subtitle_content;
-private:
template <class T>
std::list<T> get (std::list<T> const & subs, std::list<ContentTimePeriod> const & sp, ContentTimePeriod period, bool starting, bool accurate);
- /** @param starting true if we want only subtitles that start during the period, otherwise
- * we want subtitles that overlap the period.
- */
- virtual std::list<ContentTimePeriod> image_subtitles_during (ContentTimePeriod period, bool starting) const = 0;
- virtual std::list<ContentTimePeriod> text_subtitles_during (ContentTimePeriod period, bool starting) const = 0;
+ boost::function<std::list<ContentTimePeriod> (ContentTimePeriod, bool)> _image_subtitles_during;
+ boost::function<std::list<ContentTimePeriod> (ContentTimePeriod, bool)> _text_subtitles_during;
};
#endif