Logging improvements to allow prettier displays in the server GUI.
[dcpomatic.git] / src / lib / content_subtitle.h
index 6a28c37bf2c79b19eb3ffde4040f66559c6b277a..3c0ce523e8497e969836cf0305957fc323f2c46e 100644 (file)
 #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;
-};
-
-class ContentImageSubtitle : public ContentSubtitle
-{
-public:
-       ContentImageSubtitle (ContentTimePeriod p, boost::shared_ptr<Image> im, dcpomatic::Rect<double> r)
-               : image (im)
-               , rectangle (r)
-               , _period (p)
+       ContentSubtitle (ContentTimePeriod p)
+               : _period (p)
        {}
 
        ContentTimePeriod period () const {
                return _period;
        }
 
-       boost::shared_ptr<Image> image;
-       dcpomatic::Rect<double> rectangle;
-
 private:
        ContentTimePeriod _period;
 };
 
+class ContentImageSubtitle : public ContentSubtitle
+{
+public:
+       ContentImageSubtitle (ContentTimePeriod p, boost::shared_ptr<Image> im, dcpomatic::Rect<double> r)
+               : ContentSubtitle (p)
+               , sub (im, r)
+       {}
+
+       /* Our subtitle, with its rectangle unmodified by any offsets or scales that the content specifies */
+       ImageSubtitle sub;
+};
+
+/** 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;
 };