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;
	}
}