private static WebVTTCueSettings ParseCueSettings(IDictionary<string, string> values) { var result = new WebVTTCueSettings(); bool autoTextPosition = true; foreach (var item in values) { switch (item.Key) { case cueSettingVertical: switch (item.Value) { case cueSettingVerticalGrowingLeft: result.WritingMode = WebVTTWritingMode.VerticalGrowingLeft; break; case cueSettingVerticalGrowingRight: result.WritingMode = WebVTTWritingMode.VerticalGrowingRight; break; default: throw new Exception("Invalid WebVTT cue vertical text setting"); } break; case cueSettingLinePosition: if (item.Value.EndsWith("%")) { result.LinePosition = int.Parse(item.Value.TrimEnd('%')); result.SnapToLines = false; } else { result.LinePosition = int.Parse(item.Value); result.SnapToLines = true; } break; case cueSettingTextPosition: if (item.Value != "auto") { autoTextPosition = false; result.TextPosition = int.Parse(item.Value.TrimEnd('%')); } break; case cueSettingSize: result.Size = int.Parse(item.Value.TrimEnd('%')); break; case cueSettingAlignment: switch (item.Value) { case cueSettingAlignmentStart: result.Alignment = WebVTTAlignment.Start; break; case cueSettingAlignmentMiddle: result.Alignment = WebVTTAlignment.Middle; break; case cueSettingAlignmentEnd: result.Alignment = WebVTTAlignment.End; break; case cueSettingAlignmentLeft: result.Alignment = WebVTTAlignment.Left; break; case cueSettingAlignmentRight: result.Alignment = WebVTTAlignment.Right; break; default: throw new Exception("Invalid WebVTT cue align setting"); } break; } } if (autoTextPosition) { if (result.Alignment == WebVTTAlignment.Start || result.Alignment == WebVTTAlignment.Left) { result.TextPosition = 0; } else if (result.Alignment == WebVTTAlignment.End || result.Alignment == WebVTTAlignment.Right) { result.TextPosition = 100; } else if (result.Alignment == WebVTTAlignment.Middle) { result.TextPosition = 50; } } return result; }
private static WebVTTCueSettings ParseCueSettings(IDictionary <string, string> values) { var result = new WebVTTCueSettings(); bool autoTextPosition = true; foreach (var item in values) { switch (item.Key) { case cueSettingVertical: switch (item.Value) { case cueSettingVerticalGrowingLeft: result.WritingMode = WebVTTWritingMode.VerticalGrowingLeft; break; case cueSettingVerticalGrowingRight: result.WritingMode = WebVTTWritingMode.VerticalGrowingRight; break; default: throw new Exception("Invalid WebVTT cue vertical text setting"); } break; case cueSettingLinePosition: if (item.Value.EndsWith("%")) { result.LinePosition = int.Parse(item.Value.TrimEnd('%')); result.SnapToLines = false; } else { result.LinePosition = int.Parse(item.Value); result.SnapToLines = true; } break; case cueSettingTextPosition: if (item.Value != "auto") { autoTextPosition = false; result.TextPosition = int.Parse(item.Value.TrimEnd('%')); } break; case cueSettingSize: result.Size = int.Parse(item.Value.TrimEnd('%')); break; case cueSettingAlignment: switch (item.Value) { case cueSettingAlignmentStart: result.Alignment = WebVTTAlignment.Start; break; case cueSettingAlignmentMiddle: result.Alignment = WebVTTAlignment.Middle; break; case cueSettingAlignmentEnd: result.Alignment = WebVTTAlignment.End; break; case cueSettingAlignmentLeft: result.Alignment = WebVTTAlignment.Left; break; case cueSettingAlignmentRight: result.Alignment = WebVTTAlignment.Right; break; default: throw new Exception("Invalid WebVTT cue align setting"); } break; } } if (autoTextPosition) { if (result.Alignment == WebVTTAlignment.Start || result.Alignment == WebVTTAlignment.Left) { result.TextPosition = 0; } else if (result.Alignment == WebVTTAlignment.End || result.Alignment == WebVTTAlignment.Right) { result.TextPosition = 100; } else if (result.Alignment == WebVTTAlignment.Middle) { result.TextPosition = 50; } } return(result); }
public WebVTTCue() { Settings = new WebVTTCueSettings(); }