Class AnsiOutput
Pure ANSI console output.
ANSI Output Architecture:
- Pure ANSI - All output operations use ANSI escape sequences via EscSeqUtils, making it portable across ANSI-compatible terminals (Unix, Windows Terminal, ConEmu, etc.).
- Buffer Capture - GetLastBuffer() provides access to the last written IOutputBuffer for test verification, independent of actual console output.
- Graceful Degradation - Detects if console is unavailable or redirected, silently operating in buffer-only mode for CI/headless environments.
- Size Management - Uses SetSize(int, int) for controlling terminal dimensions in tests. In real terminals, size would be queried via ANSI requests (see CSI_ReportWindowSizeInChars) or platform APIs.
Color Support: Supports both 16-color (via Force16Colors) and true-color (24-bit RGB) output through ANSI SGR sequences.
public class AnsiOutput : OutputBase, IOutput, IDisposable
- Inheritance
-
AnsiOutput
- Implements
- Inherited Members
Constructors
- AnsiOutput()
Initializes a new instance of AnsiOutput. Checks if a real console is available for ANSI output and activates the alternate screen buffer.
Methods
- GetCursor()
Gets the current cursor for this output.
- GetLastBuffer()
Gets or sets the last output buffer written. The Contents contains a reference to the buffer last written with Write(IOutputBuffer).
- GetSize()
Returns the current size of the console in rows/columns (i.e. of characters not pixels).
- HandleSizeQueryResponse(string?)
Handles ANSI size query responses. Expected format: ESC [ 8 ; height ; width t
- SetCursor(Cursor)
Sets the cursor for this output.
- SetCursorPositionImpl(int, int)
When overriden in derived class, positions the terminal draw cursor to the specified point on the screen. Note, this does NOT update any internal cursor position state - that is the responsibility of the caller.
- SetSize(int, int)
Sets the size of the console.
- Suspend()
Suspend the application / terminal (e.g. SIGTSTP on Unix) and perform any driver-specific state save/restore required across the suspend/resume cycle. Implementations on platforms that do not support suspension may be a no-op.
- Write(ReadOnlySpan<char>)
Writes the given text directly to the console. Use to send ansi escape codes etc. Regular screen output should use the IOutputBuffer overload.
- Write(StringBuilder)
Output the contents of the
outputto the console.
- Write(IOutputBuffer)
Write the contents of the
bufferto the console