libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
enums_subtitle.h
Go to the documentation of this file.
1
10#pragma once
11
12
13#include <promeki/config.h>
14#if PROMEKI_ENABLE_CORE
15#include <promeki/namespace.h>
16#include <promeki/enum.h>
17
18PROMEKI_NAMESPACE_BEGIN
19
42class SubtitleAnchor : public TypedEnum<SubtitleAnchor> {
43 public:
44 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("SubtitleAnchor", "Subtitle Anchor Position", 0,
45 {"Default", 0, "Default (Unspecified)"},
46 {"BottomLeft", 1, "Bottom Left"},
47 {"BottomCenter", 2, "Bottom Center"},
48 {"BottomRight", 3, "Bottom Right"},
49 {"MiddleLeft", 4, "Middle Left"},
50 {"MiddleCenter", 5, "Middle Center"},
51 {"MiddleRight", 6, "Middle Right"},
52 {"TopLeft", 7, "Top Left"},
53 {"TopCenter", 8, "Top Center"},
54 {"TopRight", 9, "Top Right"}); // default: Default
55
56 using TypedEnum<SubtitleAnchor>::TypedEnum;
57
58 static const SubtitleAnchor Default;
59 static const SubtitleAnchor BottomLeft;
60 static const SubtitleAnchor BottomCenter;
61 static const SubtitleAnchor BottomRight;
62 static const SubtitleAnchor MiddleLeft;
63 static const SubtitleAnchor MiddleCenter;
64 static const SubtitleAnchor MiddleRight;
65 static const SubtitleAnchor TopLeft;
66 static const SubtitleAnchor TopCenter;
67 static const SubtitleAnchor TopRight;
68};
69
70inline const SubtitleAnchor SubtitleAnchor::Default{0};
71inline const SubtitleAnchor SubtitleAnchor::BottomLeft{1};
72inline const SubtitleAnchor SubtitleAnchor::BottomCenter{2};
73inline const SubtitleAnchor SubtitleAnchor::BottomRight{3};
74inline const SubtitleAnchor SubtitleAnchor::MiddleLeft{4};
75inline const SubtitleAnchor SubtitleAnchor::MiddleCenter{5};
76inline const SubtitleAnchor SubtitleAnchor::MiddleRight{6};
77inline const SubtitleAnchor SubtitleAnchor::TopLeft{7};
78inline const SubtitleAnchor SubtitleAnchor::TopCenter{8};
79inline const SubtitleAnchor SubtitleAnchor::TopRight{9};
80
112class SubtitleSource : public TypedEnum<SubtitleSource> {
113 public:
114 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("SubtitleSource", "Subtitle Source", 1,
115 {"Metadata", 1, "Frame Metadata"},
116 {"Cea608Anc", 2, "CEA-608 from ANC"},
117 {"Cea708Anc", 3, "CEA-708 from ANC"});
118
119 using TypedEnum<SubtitleSource>::TypedEnum;
120
121 static const SubtitleSource Metadata;
122 static const SubtitleSource Cea608Anc;
123 static const SubtitleSource Cea708Anc;
124};
125
126inline const SubtitleSource SubtitleSource::Metadata{1};
127inline const SubtitleSource SubtitleSource::Cea608Anc{2};
128inline const SubtitleSource SubtitleSource::Cea708Anc{3};
129
151class CaptionMode : public TypedEnum<CaptionMode> {
152 public:
153 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("CaptionMode", "Caption Display Mode", 0,
154 {"Default", 0, "Default (Encoder Decides)"},
155 {"PopOn", 1, "Pop-On"},
156 {"PaintOn", 2, "Paint-On"},
157 {"RollUp", 3, "Roll-Up"}); // default: Default
158
159 using TypedEnum<CaptionMode>::TypedEnum;
160
161 static const CaptionMode Default;
162 static const CaptionMode PopOn;
163 static const CaptionMode PaintOn;
164 static const CaptionMode RollUp;
165};
166
167inline const CaptionMode CaptionMode::Default{0};
168inline const CaptionMode CaptionMode::PopOn{1};
169inline const CaptionMode CaptionMode::PaintOn{2};
170inline const CaptionMode CaptionMode::RollUp{3};
171
181class SubtitleEdgeStyle : public TypedEnum<SubtitleEdgeStyle> {
182 public:
183 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("SubtitleEdgeStyle", "Subtitle Edge Style", 0,
184 {"None", 0, "None"},
185 {"Raised", 1, "Raised"},
186 {"Depressed", 2, "Depressed"},
187 {"Uniform", 3, "Uniform"},
188 {"ShadowLeft", 4, "Shadow Left"},
189 {"ShadowRight", 5, "Shadow Right"}); // default: None
190
191 using TypedEnum<SubtitleEdgeStyle>::TypedEnum;
192
193 static const SubtitleEdgeStyle None;
194 static const SubtitleEdgeStyle Raised;
195 static const SubtitleEdgeStyle Depressed;
196 static const SubtitleEdgeStyle Uniform;
197 static const SubtitleEdgeStyle ShadowLeft;
198 static const SubtitleEdgeStyle ShadowRight;
199};
200
201inline const SubtitleEdgeStyle SubtitleEdgeStyle::None{0};
202inline const SubtitleEdgeStyle SubtitleEdgeStyle::Raised{1};
203inline const SubtitleEdgeStyle SubtitleEdgeStyle::Depressed{2};
204inline const SubtitleEdgeStyle SubtitleEdgeStyle::Uniform{3};
205inline const SubtitleEdgeStyle SubtitleEdgeStyle::ShadowLeft{4};
206inline const SubtitleEdgeStyle SubtitleEdgeStyle::ShadowRight{5};
207
222class SubtitleOpacity : public TypedEnum<SubtitleOpacity> {
223 public:
224 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("SubtitleOpacity", "Subtitle Opacity", 0,
225 {"Solid", 0, "Solid (Opaque)"},
226 {"Flash", 1, "Flashing"},
227 {"Translucent", 2, "Translucent"},
228 {"Transparent", 3, "Transparent"}); // default: Solid
229
230 using TypedEnum<SubtitleOpacity>::TypedEnum;
231
232 static const SubtitleOpacity Solid;
233 static const SubtitleOpacity Flash;
234 static const SubtitleOpacity Translucent;
235 static const SubtitleOpacity Transparent;
236};
237
238inline const SubtitleOpacity SubtitleOpacity::Solid{0};
239inline const SubtitleOpacity SubtitleOpacity::Flash{1};
240inline const SubtitleOpacity SubtitleOpacity::Translucent{2};
241inline const SubtitleOpacity SubtitleOpacity::Transparent{3};
242
252class SubtitleFontFace : public TypedEnum<SubtitleFontFace> {
253 public:
254 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("SubtitleFontFace", "Subtitle Font Face", 0,
255 {"Default", 0, "Default"},
256 {"MonoSerif", 1, "Monospaced Serif"},
257 {"ProportionalSerif", 2, "Proportional Serif"},
258 {"MonoSans", 3, "Monospaced Sans-Serif"},
259 {"ProportionalSans", 4, "Proportional Sans-Serif"},
260 {"Casual", 5, "Casual"},
261 {"Cursive", 6, "Cursive"},
262 {"SmallCaps", 7, "Small Caps"}); // default: Default
263
264 using TypedEnum<SubtitleFontFace>::TypedEnum;
265
266 static const SubtitleFontFace Default;
267 static const SubtitleFontFace MonoSerif;
268 static const SubtitleFontFace ProportionalSerif;
269 static const SubtitleFontFace MonoSans;
270 static const SubtitleFontFace ProportionalSans;
271 static const SubtitleFontFace Casual;
272 static const SubtitleFontFace Cursive;
273 static const SubtitleFontFace SmallCaps;
274};
275
276inline const SubtitleFontFace SubtitleFontFace::Default{0};
277inline const SubtitleFontFace SubtitleFontFace::MonoSerif{1};
278inline const SubtitleFontFace SubtitleFontFace::ProportionalSerif{2};
279inline const SubtitleFontFace SubtitleFontFace::MonoSans{3};
280inline const SubtitleFontFace SubtitleFontFace::ProportionalSans{4};
281inline const SubtitleFontFace SubtitleFontFace::Casual{5};
282inline const SubtitleFontFace SubtitleFontFace::Cursive{6};
283inline const SubtitleFontFace SubtitleFontFace::SmallCaps{7};
284
300class SubtitlePenSize : public TypedEnum<SubtitlePenSize> {
301 public:
302 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("SubtitlePenSize", "Subtitle Pen Size", 1,
303 {"Small", 0, "Small"},
304 {"Standard", 1, "Standard"},
305 {"Large", 2, "Large"}); // default: Standard
306
307 using TypedEnum<SubtitlePenSize>::TypedEnum;
308
309 static const SubtitlePenSize Small;
310 static const SubtitlePenSize Standard;
311 static const SubtitlePenSize Large;
312};
313
314inline const SubtitlePenSize SubtitlePenSize::Small{0};
315inline const SubtitlePenSize SubtitlePenSize::Standard{1};
316inline const SubtitlePenSize SubtitlePenSize::Large{2};
317
332class SubtitlePenOffset : public TypedEnum<SubtitlePenOffset> {
333 public:
334 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("SubtitlePenOffset", "Subtitle Pen Offset", 1,
335 {"Subscript", 0, "Subscript"},
336 {"Normal", 1, "Normal"},
337 {"Superscript", 2, "Superscript"}); // default: Normal
338
339 using TypedEnum<SubtitlePenOffset>::TypedEnum;
340
341 static const SubtitlePenOffset Subscript;
342 static const SubtitlePenOffset Normal;
343 static const SubtitlePenOffset Superscript;
344};
345
346inline const SubtitlePenOffset SubtitlePenOffset::Subscript{0};
347inline const SubtitlePenOffset SubtitlePenOffset::Normal{1};
348inline const SubtitlePenOffset SubtitlePenOffset::Superscript{2};
349
381class SubtitleTextTag : public TypedEnum<SubtitleTextTag> {
382 public:
383 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("SubtitleTextTag", "Subtitle Text Tag", 0,
384 {"Dialog", 0, "Dialog"},
385 {"SourceId", 1, "Speaker Identification"},
386 {"ElectronicallyReproduced", 2, "Electronically Reproduced Voice"},
387 {"DialogOtherLanguage", 3, "Dialog (Other Language)"},
388 {"Voiceover", 4, "Voiceover"},
389 {"AudibleTranslation", 5, "Audible Translation"},
390 {"SubtitleTranslation", 6, "Subtitle Translation"},
391 {"VoiceDescription", 7, "Voice Description (DVS)"},
392 {"Lyrics", 8, "Lyrics"},
393 {"EffectDescription", 9, "Sound Effect Description"},
394 {"ScoreDescription", 10, "Music Description"},
395 {"Expletive", 11, "Expletive"},
396 {"Reserved12", 12, "Reserved (12)"},
397 {"Reserved13", 13, "Reserved (13)"},
398 {"Reserved14", 14, "Reserved (14)"},
399 {"NotDisplayed", 15, "Not Displayed (Metadata)"}); // default: Dialog
400
401 using TypedEnum<SubtitleTextTag>::TypedEnum;
402
403 static const SubtitleTextTag Dialog;
404 static const SubtitleTextTag SourceId;
405 static const SubtitleTextTag ElectronicallyReproduced;
406 static const SubtitleTextTag DialogOtherLanguage;
407 static const SubtitleTextTag Voiceover;
408 static const SubtitleTextTag AudibleTranslation;
409 static const SubtitleTextTag SubtitleTranslation;
410 static const SubtitleTextTag VoiceDescription;
411 static const SubtitleTextTag Lyrics;
412 static const SubtitleTextTag EffectDescription;
413 static const SubtitleTextTag ScoreDescription;
414 static const SubtitleTextTag Expletive;
415 static const SubtitleTextTag Reserved12;
416 static const SubtitleTextTag Reserved13;
417 static const SubtitleTextTag Reserved14;
418 static const SubtitleTextTag NotDisplayed;
419};
420
421inline const SubtitleTextTag SubtitleTextTag::Dialog{0};
422inline const SubtitleTextTag SubtitleTextTag::SourceId{1};
423inline const SubtitleTextTag SubtitleTextTag::ElectronicallyReproduced{2};
424inline const SubtitleTextTag SubtitleTextTag::DialogOtherLanguage{3};
425inline const SubtitleTextTag SubtitleTextTag::Voiceover{4};
426inline const SubtitleTextTag SubtitleTextTag::AudibleTranslation{5};
427inline const SubtitleTextTag SubtitleTextTag::SubtitleTranslation{6};
428inline const SubtitleTextTag SubtitleTextTag::VoiceDescription{7};
429inline const SubtitleTextTag SubtitleTextTag::Lyrics{8};
430inline const SubtitleTextTag SubtitleTextTag::EffectDescription{9};
431inline const SubtitleTextTag SubtitleTextTag::ScoreDescription{10};
432inline const SubtitleTextTag SubtitleTextTag::Expletive{11};
433inline const SubtitleTextTag SubtitleTextTag::Reserved12{12};
434inline const SubtitleTextTag SubtitleTextTag::Reserved13{13};
435inline const SubtitleTextTag SubtitleTextTag::Reserved14{14};
436inline const SubtitleTextTag SubtitleTextTag::NotDisplayed{15};
437
459class CaptionCodec : public TypedEnum<CaptionCodec> {
460 public:
461 PROMEKI_REGISTER_ENUM_TYPE_DISPLAY("CaptionCodec", "Caption Codec", 0,
462 {"Cea608", 0, "CEA-608 (Line 21)"},
463 {"Cea708", 1, "CEA-708 (DTVCC)"},
464 {"Both", 2, "CEA-608 and CEA-708"}); // default: Cea608
465
466 using TypedEnum<CaptionCodec>::TypedEnum;
467
468 static const CaptionCodec Cea608;
469 static const CaptionCodec Cea708;
470 static const CaptionCodec Both;
471};
472
473inline const CaptionCodec CaptionCodec::Cea608{0};
474inline const CaptionCodec CaptionCodec::Cea708{1};
475inline const CaptionCodec CaptionCodec::Both{2};
476
479PROMEKI_NAMESPACE_END
480
481#endif // PROMEKI_ENABLE_CORE