private static SubtitleDescription GetInlineDescription(XmlText text) { var value = text.Value; if (string.IsNullOrEmpty(value)) { return(null); } var inlineDescription = new SubtitleDescription { Type = InlineType.Run, Text = value }; return(inlineDescription); }
private static SubtitleDescription GetInlineDescription(XmlElement element) { InlineType type; var elementName = element.Name.ToLower(); switch (elementName) { case "font": type = InlineType.Run; break; case "br": type = InlineType.LineBreak; break; case "b": type = InlineType.Bold; break; case "i": type = InlineType.Italic; break; case "u": type = InlineType.Underline; break; default: return(null); } string fontFaceName = null; { var attribute = element.GetAttributeNode("face"); if (attribute != null) { fontFaceName = attribute.Value; } } string fontSizeName = null; { var attribute = element.GetAttributeNode("size"); if (attribute != null) { fontSizeName = attribute.Value; } } string text = null; var childDescriptions = new List <SubtitleDescription>(); if (type == InlineType.Run || type == InlineType.LineBreak) { text = element.InnerText; } else { foreach (XmlNode childNode in element.ChildNodes) { var childDescription = GetInlineDescription(childNode); if (childDescription == null) { continue; } childDescriptions.Add(childDescription); } } var inlineDescription = new SubtitleDescription { Type = type, FontFace = fontFaceName, FontSize = fontSizeName, Text = text, Subtitles = childDescriptions.ToArray() }; return(inlineDescription); }
private static Inline GetInline(FrameworkElement element, SubtitleDescription description) { FontFamily fontFamily = null; if (description.FontFace != null) { fontFamily = new FontFamily(description.FontFace); } Style style = null; Inline inline = null; switch (description.Type) { case InlineType.Run: var run = new Run(description.Text); if (description.FontSize != null) { run.FontSize = double.Parse(description.FontSize); } if (fontFamily != null) { run.FontFamily = fontFamily; } inline = run; break; case InlineType.LineBreak: var lineBreak = new LineBreak(); inline = lineBreak; break; case InlineType.Span: var span = new Span(); inline = span; break; case InlineType.Bold: var bold = new Bold(); inline = bold; break; case InlineType.Italic: var italic = new Italic(); inline = italic; break; case InlineType.Hyperlink: var hyperlink = new Hyperlink(); inline = hyperlink; break; case InlineType.Underline: var underline = new Underline(); inline = underline; break; } if (inline != null) { var span = inline as Span; if (span != null) { var childInlines = new List <Inline>(); foreach (var inlineDescription in description.Subtitles) { var childInline = GetInline(element, inlineDescription); if (childInline == null) { continue; } childInlines.Add(childInline); } span.Inlines.AddRange(childInlines); } } return(inline); }
private static Inline GetInline(FrameworkElement element, SubtitleDescription description) { FontFamily fontFamily = null; if (description.FontFace != null) fontFamily = new FontFamily(description.FontFace); Style style = null; Inline inline = null; switch (description.Type) { case InlineType.Run: var run = new Run(description.Text); if (description.FontSize != null) run.FontSize = double.Parse(description.FontSize); if (fontFamily != null) run.FontFamily = fontFamily; inline = run; break; case InlineType.LineBreak: var lineBreak = new LineBreak(); inline = lineBreak; break; case InlineType.Span: var span = new Span(); inline = span; break; case InlineType.Bold: var bold = new Bold(); inline = bold; break; case InlineType.Italic: var italic = new Italic(); inline = italic; break; case InlineType.Hyperlink: var hyperlink = new Hyperlink(); inline = hyperlink; break; case InlineType.Underline: var underline = new Underline(); inline = underline; break; } if (inline != null) { var span = inline as Span; if (span != null) { var childInlines = new List<Inline>(); foreach (var inlineDescription in description.Subtitles) { var childInline = GetInline(element, inlineDescription); if (childInline == null) continue; childInlines.Add(childInline); } span.Inlines.AddRange(childInlines); } } return inline; }
private static SubtitleDescription GetInlineDescription(XmlText text) { var value = text.Value; if (string.IsNullOrEmpty(value)) return null; var inlineDescription = new SubtitleDescription { Type = InlineType.Run, Text = value }; return inlineDescription; }
private static SubtitleDescription GetInlineDescription(XmlElement element) { InlineType type; var elementName = element.Name.ToLower(); switch (elementName) { case "font": type = InlineType.Run; break; case "br": type = InlineType.LineBreak; break; case "b": type = InlineType.Bold; break; case "i": type = InlineType.Italic; break; case "u": type = InlineType.Underline; break; default: return null; } string fontFaceName = null; { var attribute = element.GetAttributeNode("face"); if (attribute != null) fontFaceName = attribute.Value; } string fontSizeName = null; { var attribute = element.GetAttributeNode("size"); if (attribute != null) fontSizeName = attribute.Value; } string text = null; var childDescriptions = new List<SubtitleDescription>(); if (type == InlineType.Run || type == InlineType.LineBreak) { text = element.InnerText; } else { foreach (XmlNode childNode in element.ChildNodes) { var childDescription = GetInlineDescription(childNode); if (childDescription == null) continue; childDescriptions.Add(childDescription); } } var inlineDescription = new SubtitleDescription { Type = type, FontFace = fontFaceName, FontSize = fontSizeName, Text = text, Subtitles = childDescriptions.ToArray() }; return inlineDescription; }