Exemplo n.º 1
0
        private TextRenderer PrepareRenderer()
        {
            if (renderer != null)
            {
                return(renderer);
            }
            ParseText();
            renderer = new TextRenderer(OverflowMode, WordSplitAllowed);
            // Setup default style(take first one from node list or TextStyle.Default).
            TextStyle defaultStyle = null;

            if (Nodes.Count > 0)
            {
                defaultStyle = Nodes[0] as TextStyle;
            }
            renderer.AddStyle(defaultStyle ?? TextStyle.Default);
            // Fill up style list.
            foreach (var styleName in parser.Styles)
            {
                var style = Nodes.TryFind(styleName) as TextStyle;
                renderer.AddStyle(style ?? TextStyle.Default);
            }
            // Add text fragments.
            foreach (var frag in parser.Fragments)
            {
                // Warning! Using style + 1, because -1 is a default style.
                renderer.AddFragment(frag.Text, frag.Style + 1, frag.IsNbsp);
            }
            return(renderer);
        }