From 4923d63a94039780956c48e4dcb149d5bacea265 Mon Sep 17 00:00:00 2001 From: Wojciech Figat Date: Wed, 3 Aug 2022 15:41:25 +0200 Subject: [PATCH] Add `size` tag --- .../UI/GUI/Common/RichTextBox.Parsing.cs | 1 + .../Engine/UI/GUI/Common/RichTextBox.Tags.cs | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/Source/Engine/UI/GUI/Common/RichTextBox.Parsing.cs b/Source/Engine/UI/GUI/Common/RichTextBox.Parsing.cs index 7f7291956..f6f7e0115 100644 --- a/Source/Engine/UI/GUI/Common/RichTextBox.Parsing.cs +++ b/Source/Engine/UI/GUI/Common/RichTextBox.Parsing.cs @@ -75,6 +75,7 @@ namespace FlaxEngine.GUI { "font", ProcessFont }, { "b", ProcessBold }, { "i", ProcessItalic }, + { "size", ProcessSize }, }; private HtmlParser _parser = new HtmlParser(); diff --git a/Source/Engine/UI/GUI/Common/RichTextBox.Tags.cs b/Source/Engine/UI/GUI/Common/RichTextBox.Tags.cs index 71f519e7b..8985cc781 100644 --- a/Source/Engine/UI/GUI/Common/RichTextBox.Tags.cs +++ b/Source/Engine/UI/GUI/Common/RichTextBox.Tags.cs @@ -137,5 +137,26 @@ namespace FlaxEngine.GUI context.StyleStack.Push(style); } } + + private static void ProcessSize(ref ParsingContext context, ref HtmlTag tag) + { + if (tag.IsSlash) + { + context.StyleStack.Pop(); + } + else + { + var style = context.StyleStack.Peek(); + style.Font = new FontReference(style.Font); + if (tag.Attributes.TryGetValue(string.Empty, out var sizeText)) + { + if (int.TryParse(sizeText, out var sizeInt)) + style.Font.Size = sizeInt; + if (sizeText.Length > 1 && sizeText[sizeText.Length - 1] == '%') + style.Font.Size = (int)(style.Font.Size * float.Parse(sizeText.Substring(0, sizeText.Length - 1)) / 100.0f); + } + context.StyleStack.Push(style); + } + } } }