| File: Renderer\EmphasisInlineRenderer.cs | Web Access |
| Project: src\src\Graphics\src\Text.Markdig\Graphics.Text.Markdig.csproj (Microsoft.Maui.Graphics.Text.Markdig) |
using Markdig.Syntax.Inlines; using Microsoft.Maui.Graphics.Text; namespace Microsoft.Maui.Graphics.Text.Renderer { public class EmphasisInlineRenderer : AttributedTextObjectRenderer<EmphasisInline> { protected override void Write(AttributedTextRenderer renderer, EmphasisInline obj) { var start = renderer.Count; renderer.WriteChildren(obj); var length = renderer.Count - start; var bold = IsBold(obj); var underline = IsUnderline(obj); var italic = IsItalic(obj); var strikethrough = IsStrikethrough(obj); var subscript = IsSubscript(obj); var superscript = IsSuperscript(obj); if (length > 0 && (bold || italic || strikethrough || subscript || superscript || underline)) { var attributes = new TextAttributes(); attributes.SetBold(bold); attributes.SetItalic(italic); attributes.SetStrikethrough(strikethrough); attributes.SetSubscript(subscript); attributes.SetSuperscript(superscript); attributes.SetUnderline(underline); renderer.AddTextRun(start, length, attributes); } } public bool IsUnderline(EmphasisInline obj) { if (obj.DelimiterChar == '_') return obj.DelimiterCount == 2; return false; } public bool IsBold(EmphasisInline obj) { if (obj.DelimiterChar == '*') return obj.DelimiterCount == 2; return false; } public bool IsItalic(EmphasisInline obj) { if (obj.DelimiterChar == '*') return obj.DelimiterCount != 2; return false; } public bool IsStrikethrough(EmphasisInline obj) { if (obj.DelimiterChar == '~') return obj.DelimiterCount == 2; return false; } public bool IsSubscript(EmphasisInline obj) { if (obj.DelimiterChar == '~') return obj.DelimiterCount != 2; return false; } public bool IsSuperscript(EmphasisInline obj) { if (obj.DelimiterChar == '^') return obj.DelimiterCount != 2; return false; } } }