Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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;
        }
Example #5
0
        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;
        }
Example #6
0
        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;
        }