mattercontrol/MatterControlLib/Utilities/MarkdigAgg/Inlines/AggEmphasisInlineRenderer.cs
2022-03-15 11:21:04 -07:00

94 lines
2.4 KiB
C#

// Copyright (c) 2016-2017 Nicolas Musset. All rights reserved.
// This file is licensed under the MIT license.
// See the LICENSE.md file in the project root for more information.
using Markdig.Syntax.Inlines;
using MatterHackers.Agg.UI;
namespace Markdig.Renderers.Agg.Inlines
{
public class EmphasisInlineX : FlowLayoutWidget, IWrapChildrenSeparatly
{
private char delimiter;
public EmphasisInlineX(char delimiter)
{
this.HAnchor = HAnchor.Fit;
this.VAnchor = VAnchor.Fit;
this.delimiter = delimiter;
}
public override GuiWidget AddChild(GuiWidget childToAdd, int indexInChildrenList = -1)
{
if (childToAdd is TextWidget textWidget)
{
switch (delimiter)
{
case '~':
textWidget.StrikeThrough = true;
break;
case '*':
default:
textWidget.Bold = true;
break;
// case '_': Italic();
// case '^': Styles.SuperscriptStyleKey
// case '+': Styles.InsertedStyleKey
// case '=': Styles.MarkedStyleKey
}
}
return base.AddChild(childToAdd, indexInChildrenList);
}
}
/// <summary>
/// A Agg renderer for an <see cref="EmphasisInline"/>.
/// </summary>
/// <seealso cref="EmphasisInline" />
public class AggEmphasisInlineRenderer : AggObjectRenderer<EmphasisInline>
{
protected override void Write(AggRenderer renderer, EmphasisInline obj)
{
//Span span = null;
//switch (obj.DelimiterChar)
//{
// case '*':
// case '_':
// span = obj.IsDouble ? (Span)new Bold() : new Italic();
// break;
// case '~':
// span = new Span();
// span.SetResourceReference(FrameworkContentElement.StyleProperty, obj.IsDouble ? Styles.StrikeThroughStyleKey : Styles.SubscriptStyleKey);
// break;
// case '^':
// span = new Span();
// span.SetResourceReference(FrameworkContentElement.StyleProperty, Styles.SuperscriptStyleKey);
// break;
// case '+':
// span = new Span();
// span.SetResourceReference(FrameworkContentElement.StyleProperty, Styles.InsertedStyleKey);
// break;
// case '=':
// span = new Span();
// span.SetResourceReference(FrameworkContentElement.StyleProperty, Styles.MarkedStyleKey);
// break;
//}
if (true) //span != null)
{
renderer.Push(new EmphasisInlineX(obj.DelimiterChar));
renderer.WriteChildren(obj);
renderer.Pop();
}
else
{
renderer.WriteChildren(obj);
}
}
}
}