|
@@ -12,7 +12,7 @@ namespace NTERA.Console
|
|
|
{
|
|
|
public static class HtmlParser
|
|
|
{
|
|
|
- public static IEnumerable<IRenderItem> ParseHtml(string html, Func<string, CroppedImage> assetFunc)
|
|
|
+ public static IEnumerable<IRenderItem> ParseHtml(string html, Func<string, CroppedImage> assetFunc, Font font)
|
|
|
{
|
|
|
//fix broken HTML from shitty emuera format
|
|
|
string fixedHtml = Regex.Replace(html, @"<img([^\/]*?)>", "<img$1 />");
|
|
@@ -21,10 +21,10 @@ namespace NTERA.Console
|
|
|
|
|
|
var element = XElement.Parse($"<parent>{fixedHtml}</parent>");
|
|
|
|
|
|
- return ParseHtml_Internal(element, assetFunc, HtmlStyle.Default);
|
|
|
+ return ParseHtml_Internal(element, assetFunc, HtmlStyle.Default, font);
|
|
|
}
|
|
|
|
|
|
- private static IEnumerable<IRenderItem> ParseHtml_Internal(XElement xmlNode, Func<string, CroppedImage> assetFunc, HtmlStyle style)
|
|
|
+ private static IEnumerable<IRenderItem> ParseHtml_Internal(XElement xmlNode, Func<string, CroppedImage> assetFunc, HtmlStyle style, Font font)
|
|
|
{
|
|
|
List<IRenderItem> renderItems = new List<IRenderItem>();
|
|
|
HtmlStyle localStyle = (HtmlStyle)style.Clone();
|
|
@@ -39,7 +39,7 @@ namespace NTERA.Console
|
|
|
if (alignment != null)
|
|
|
localStyle.Alignment = (DisplayLineAlignment)Enum.Parse(typeof(DisplayLineAlignment), alignment.ToUpper());
|
|
|
|
|
|
- renderItems.AddRange(ParseHtml_Internal(node, assetFunc, localStyle));
|
|
|
+ renderItems.AddRange(ParseHtml_Internal(node, assetFunc, localStyle, font));
|
|
|
break;
|
|
|
|
|
|
case "img":
|
|
@@ -54,11 +54,11 @@ namespace NTERA.Console
|
|
|
break;
|
|
|
|
|
|
case "br":
|
|
|
- renderItems.Add(new TextRenderItem(""));
|
|
|
+ renderItems.Add(new TextRenderItem("", font));
|
|
|
break;
|
|
|
|
|
|
case "nobr":
|
|
|
- //renderItems.Add(new TextRenderItem(""));
|
|
|
+ //renderItems.Add(new TextRenderItem("", font));
|
|
|
break;
|
|
|
|
|
|
case "font":
|
|
@@ -76,22 +76,22 @@ namespace NTERA.Console
|
|
|
localStyle.ForeColor = Color.FromName(color);
|
|
|
}
|
|
|
|
|
|
- renderItems.AddRange(ParseHtml_Internal(node, assetFunc, localStyle));
|
|
|
+ renderItems.AddRange(ParseHtml_Internal(node, assetFunc, localStyle, font));
|
|
|
break;
|
|
|
|
|
|
case "nonbutton":
|
|
|
- //renderItems.Add(new TextRenderItem(node.Value, color: localStyle.ForeColor, alignment: localStyle.Alignment));
|
|
|
- renderItems.AddRange(ParseHtml_Internal(node, assetFunc, localStyle));
|
|
|
+ //renderItems.Add(new TextRenderItem(node.Value, font, color: localStyle.ForeColor, alignment: localStyle.Alignment));
|
|
|
+ renderItems.AddRange(ParseHtml_Internal(node, assetFunc, localStyle, font));
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
- renderItems.Add(new TextRenderItem(node.ToString(), color: localStyle.ForeColor, alignment: localStyle.Alignment));
|
|
|
+ renderItems.Add(new TextRenderItem(node.ToString(), font, color: localStyle.ForeColor, alignment: localStyle.Alignment));
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (!xmlNode.HasElements && !string.IsNullOrWhiteSpace(xmlNode.Value))
|
|
|
- renderItems.Add(new TextRenderItem(xmlNode.Value, color: localStyle.ForeColor, alignment: localStyle.Alignment));
|
|
|
+ renderItems.Add(new TextRenderItem(xmlNode.Value, font, color: localStyle.ForeColor, alignment: localStyle.Alignment));
|
|
|
|
|
|
return renderItems;
|
|
|
}
|