using System.Text; namespace qdr.app.tools.qfu.gui { internal class RTFConsoleTextWriter : TextWriter { public override Encoding Encoding => Encoding.UTF8; private RichTextBox _richTextBox; public RTFConsoleTextWriter(RichTextBox outputRtfBox) { _richTextBox = outputRtfBox ?? throw new ArgumentNullException(nameof(outputRtfBox)); } public override void WriteLine(string? value) { if (value == null) return; Write(value); } public override void Write(string? value) { if (value == null) return; // Convert the string to RTF format string rtfValue = ConvertToRtf(value); // Write the RTF formatted string to the console if (_richTextBox.InvokeRequired) { _richTextBox.Invoke(new Action(() => AppendRtfText(rtfValue))); } else { AppendRtfText(rtfValue); } } private void AppendRtfText(string rtfValue) { _richTextBox.AppendText(rtfValue); _richTextBox.SelectionStart = _richTextBox.TextLength; _richTextBox.ScrollToCaret(); } private string ConvertToRtf(string value) { return value + "\r"; } } }