diff --git a/src/Example/Program.cs b/src/Example/Program.cs index 00a04c1..551914f 100644 --- a/src/Example/Program.cs +++ b/src/Example/Program.cs @@ -9,7 +9,7 @@ using TinyTUI.Stdout; using var terminalInput = new ConsoleTerminalInput(); var terminalOutput = new ConsoleTerminalOutput(); var parser = new DefaultInputParser(); -var renderer = new DemoRenderer(terminalOutput); +var renderer = new FullScreenRenderer(terminalOutput); using var runtime = new TuiRuntime(terminalInput, parser, renderer); var component = new EchoComponent(runtime); @@ -46,6 +46,8 @@ file sealed class EchoComponent(ITuiRuntime runtime) : IInputComponent { "TinyTUI Runtime 示例", "====================", + $"当前渲染宽度: {width}", + string.Empty, "测试方式:", "- 输入普通字符 验证 Text 事件会进入焦点组件", "- 按方向键 Enter Backspace Tab Delete 验证 Key 事件会进入焦点组件", @@ -94,31 +96,3 @@ file sealed class EchoComponent(ITuiRuntime runtime) : IInputComponent })); } } - -/// -/// 用于手动验证 Runtime 的临时全量渲染器 -/// -file sealed class DemoRenderer(ConsoleTerminalOutput output) : IRenderer -{ - /// - public void Render(IReadOnlyList lines, TerminalSize size) - { - output.ClearScreen(); - output.Write($"尺寸: {size.Columns} x {size.Rows}\r\n"); - output.Write("\r\n"); - - foreach (var line in lines) - { - output.Write(line); - output.Write("\r\n"); - } - - output.Flush(); - } - - /// - public void Reset() - { - output.ClearScreen(); - } -} diff --git a/src/TinyTUI/Rendering/FullScreenRenderer.cs b/src/TinyTUI/Rendering/FullScreenRenderer.cs new file mode 100644 index 0000000..1950317 --- /dev/null +++ b/src/TinyTUI/Rendering/FullScreenRenderer.cs @@ -0,0 +1,30 @@ +using TinyTUI.Stdout; + +namespace TinyTUI.Rendering; + +/// +/// 每次渲染都清屏并重绘全部内容的基础渲染器 +/// +public sealed class FullScreenRenderer(ITerminalOutput output) : IRenderer +{ + /// + public void Render(IReadOnlyList lines, TerminalSize size) + { + output.ClearScreen(); + + foreach (var line in lines) + { + output.Write(line); + output.Write("\r\n"); + } + + output.Flush(); + } + + /// + public void Reset() + { + output.ClearScreen(); + output.Flush(); + } +}