X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fstring_text.h;h=787231b8cf2d57b2ed3a8dda65b1ea7e42fb312c;hb=f5c1d56e9a15975f587a8d9c5255aea608d8abe9;hp=4f4958163c4f2773fae426ce02b9c73208fd366f;hpb=cbba9723a56d101ab1fa814cee8671a6c1f729e5;p=dcpomatic.git diff --git a/src/lib/string_text.h b/src/lib/string_text.h index 4f4958163..787231b8c 100644 --- a/src/lib/string_text.h +++ b/src/lib/string_text.h @@ -18,24 +18,57 @@ */ -#ifndef DCPOMATIC_PLAIN_TEXT_H -#define DCPOMATIC_PLAIN_TEXT_H +#ifndef DCPOMATIC_STRING_TEXT_H +#define DCPOMATIC_STRING_TEXT_H + + +#include "font.h" +#include #include -/** A wrapper for SubtitleString which allows us to 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. + +/** A wrapper for SubtitleString which allows us to: + * + * - 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_) + StringText(dcp::SubtitleString dcp_, int outline_width_, std::shared_ptr font_, dcp::SubtitleStandard valign_standard_) : dcp::SubtitleString (dcp_) , outline_width (outline_width_) + , font (font_) + , valign_standard (valign_standard_) {} int outline_width; + std::shared_ptr 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; }; + #endif