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

XFESystem

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

公开
关注 0 Fork 0 Star 0
UTF-8
namespace XFESystem.Console;

/// <summary>An immutable copy for a renderer; no live buffer storage is exposed.</summary>
public sealed class TerminalSnapshot
{
    internal TerminalSnapshot(int columns, int rows, int cursorColumn, int cursorRow,
        bool cursorVisible, TerminalCell[] cells)
    {
        Columns = columns;
        Rows = rows;
        CursorColumn = cursorColumn;
        CursorRow = cursorRow;
        CursorVisible = cursorVisible;
        Cells = Array.AsReadOnly(cells);
    }

    public int Columns { get; }
    public int Rows { get; }
    public int CursorColumn { get; }
    public int CursorRow { get; }
    public bool CursorVisible { get; }
    public IReadOnlyList<TerminalCell> Cells { get; }
    public TerminalCell GetCell(int column, int row)
    {
        ArgumentOutOfRangeException.ThrowIfNegative(column);
        ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual(column, Columns);
        ArgumentOutOfRangeException.ThrowIfNegative(row);
        ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual(row, Rows);
        return Cells[row * Columns + column];
    }
}