Work around deadlock when destroying J2KEncoder with a full writer queue (#2784).
[dcpomatic.git] / src / lib / string_text.h
index 8c505f36a10d1b48f49279dfb4f1c5ca81c51402..787231b8cf2d57b2ed3a8dda65b1ea7e42fb312c 100644 (file)
@@ -24,6 +24,7 @@
 
 
 #include "font.h"
+#include <dcp/subtitle_standard.h>
 #include <dcp/subtitle_string.h>
 
 
  *    - include settings that are not applicable to true DCP subtitles.
  *      For example, we can set outline width for burn-in but this cannot be specified in DCP XML.
  *
+ *    - include details of how v_align should be interpreted
+ *
  *    - specify the font by referring to a Font object from the content we came from, rather than
  *      having to use a DCP ID like in dcp::SubtitleString.
  */
 class StringText : public dcp::SubtitleString
 {
 public:
-       StringText (dcp::SubtitleString dcp_, int outline_width_, std::shared_ptr<dcpomatic::Font> font_)
+       StringText(dcp::SubtitleString dcp_, int outline_width_, std::shared_ptr<dcpomatic::Font> font_, dcp::SubtitleStandard valign_standard_)
                : dcp::SubtitleString (dcp_)
                , outline_width (outline_width_)
                , font (font_)
+               , valign_standard (valign_standard_)
        {}
 
        int outline_width;
        std::shared_ptr<dcpomatic::Font> font;
+
+       /** Interop and SMPTE use the same VAlign choices (top, center, bottom) but give them different
+        *  meanings.  To add some extra confusion, it seems that SMPTE changed their minds on this topic
+        *  between the 2010 and 2014 versions of standard 428-7, so there isn't even one answer for SMPTE.
+        *
+        *  This is the standard which should be used to interpret v_align() in this subtitle.
+         *
+        *  valign_standard == SMPTE_{2007,2010} means:
+        *     top - top of screen to top of subtitle
+        *     center - centre of screen to center of subtitle
+        *     bottom - bottom of screen to bottom of subtitle
+        *
+        *  valign_standard == {INTEROP,SMPTE_2014} means:
+        *     top - top of screen to baseline of subtitle
+        *     center - centre of screen to baseline of subtitle
+        *     bottom - bottom of screen to baseline of subtitle
+        */
+       dcp::SubtitleStandard valign_standard;
 };