#ifndef DCPOMATIC_CONTENT_SUBTITLE_H
#define DCPOMATIC_CONTENT_SUBTITLE_H
-#include <list>
-#include <dcp/subtitle_string.h>
#include "dcpomatic_time.h"
#include "rect.h"
#include "image_subtitle.h"
+#include <dcp/subtitle_string.h>
+#include <list>
class Image;
class ContentSubtitle
{
public:
- virtual ContentTimePeriod period () const = 0;
+ ContentSubtitle (ContentTimePeriod p)
+ : _period (p)
+ {}
+
+ ContentTimePeriod period () const {
+ return _period;
+ }
+
+private:
+ ContentTimePeriod _period;
};
class ContentImageSubtitle : public ContentSubtitle
{
public:
ContentImageSubtitle (ContentTimePeriod p, boost::shared_ptr<Image> im, dcpomatic::Rect<double> r)
- : sub (im, r)
- , _period (p)
+ : ContentSubtitle (p)
+ , sub (im, r)
{}
- ContentTimePeriod period () const {
- return _period;
- }
-
/* Our subtitle, with its rectangle unmodified by any offsets or scales that the content specifies */
ImageSubtitle sub;
-
-private:
- ContentTimePeriod _period;
};
+/** A text subtitle. We store the time period separately (as well as in the dcp::SubtitleStrings)
+ * as the dcp::SubtitleString timings are sometimes quite heavily quantised and this causes problems
+ * when we want to compare the quantised periods to the unquantised ones.
+ */
class ContentTextSubtitle : public ContentSubtitle
{
public:
- ContentTextSubtitle (std::list<dcp::SubtitleString> s)
- : subs (s)
+ ContentTextSubtitle (ContentTimePeriod p, std::list<dcp::SubtitleString> s)
+ : ContentSubtitle (p)
+ , subs (s)
{}
- ContentTimePeriod period () const;
-
std::list<dcp::SubtitleString> subs;
};