| File: Renderer\AttributedTextRenderer.cs | Web Access |
| Project: src\src\Graphics\src\Text.Markdig\Graphics.Text.Markdig.csproj (Microsoft.Maui.Graphics.Text.Markdig) |
using System.Collections.Generic; using System.IO; using Markdig.Renderers; using Microsoft.Maui.Graphics.Text; namespace Microsoft.Maui.Graphics.Text.Renderer { public class AttributedTextRenderer : TextRendererBase<AttributedTextRenderer> { private List<IAttributedTextRun> _runs = new List<IAttributedTextRun>(); public AttributedTextRenderer() : base(new CountingWriter(new StringWriter())) { // Default block renderers //ObjectRenderers.Add(new CodeBlockRenderer()); ObjectRenderers.Add(new ListRenderer()); //ObjectRenderers.Add(new HeadingRenderer()); //ObjectRenderers.Add(new HtmlBlockRenderer()); ObjectRenderers.Add(new ParagraphRenderer()); //ObjectRenderers.Add(new QuoteBlockRenderer()); //ObjectRenderers.Add(new ThematicBreakRenderer()); // Default inline renderers //ObjectRenderers.Add(new AutolinkInlineRenderer()); //ObjectRenderers.Add(new CodeInlineRenderer()); //ObjectRenderers.Add(new DelimiterInlineRenderer()); ObjectRenderers.Add(new EmphasisInlineRenderer()); ObjectRenderers.Add(new LineBreakInlineRenderer()); ObjectRenderers.Add(new HtmlInlineRenderer()); //ObjectRenderers.Add(new HtmlEntityInlineRenderer()); //ObjectRenderers.Add(new LinkInlineRenderer()); ObjectRenderers.Add(new LiteralInlineRenderer()); } public IAttributedText GetAttributedText() { Writer.Flush(); var value = Writer.ToString(); _runs.Optimize(value.Length); return new AttributedText(value, _runs, true); } internal void AddTextRun(int start, int length, TextAttributes attributes) { _runs.Add(new AttributedTextRun(start, length, attributes)); } public int Count => ((CountingWriter)Writer).Count; } }