XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESystem

【Rust】XFE系统,基于Rust和汇编

公开
关注 0 Fork 0 Star 0
UTF-8

XFESystem C# 终端模型

TerminalBuffer 是图形终端使用的纯 C# 文本模型,目标为 net10.0,不调用宿主窗口、文件或网络。TerminalTextWriter 把 TextWriter 输出串行写入模型;渲染器使用 Snapshot() 的独立单元格副本。

var terminal = new TerminalBuffer(100, 30);
using var writer = new TerminalTextWriter(terminal);
writer.WriteLine("\u001b[38;2;117;201;245mXFESystem\u001b[0m");
var snapshot = writer.Snapshot();
var cell = snapshot.GetCell(0, 0);
// cell.Text == "X"; cell.Style.Foreground.Hex == "#75C9F5"

目前支持 16 色、256 色、24 位 RGB 前景/背景,SGR 样式与独立重置;CR/LF/BS/Tab;光标定位与移动、保存恢复、清行清屏、插入删除字符/行、滚动区域、自动换行与备用屏幕。转义和 UTF-16 代理对可以在任意写入边界拆分。中文等宽字符占两格,组合符附着于前一字符;复杂 Emoji 字素序列尚未实现完整 Unicode 字素分割。

默认主题前景为 #75C9F5,背景为 #0C1321。调色板采用 xterm 16 色、6×6×6 色立方和灰阶;.NET ConsoleColor 的枚举顺序与 ANSI 调色板顺序不同,TerminalColor.FromConsoleColor 显式转换二者。

OSC/DCS 内容只被丢弃,不执行标题、超链接、剪贴板、文件或设备操作。CSI 参数长度、屏幕单元格及历史行数有界;传输结束调用 Complete() 丢弃未完成转义并替换残缺代理项。

此模型不会自动接管 Console.ForegroundColor 等运行时 PAL 调用。裸机运行时需要把该 API 的颜色状态连接到输出/渲染器;ConsoleDemoScenario.RunSystemConsoleColors() 用于单独验证真实 PAL。

测试:

dotnet test Tests/XFESystem.Console.Tests/XFESystem.Console.Tests.csproj
dotnet run --project Samples/XFESystem.ConsoleDemo -- --Verify build/CSharp/ConsoleDemo/HostVerification.json

宿主测试通过不代表任意 .NET .dll 已能被 XFESystem 装载。独立 CLR 装载、JIT、进程隔离和所有 BCL API 需要各自验收。