Abstract renderer interface for terminal output.
Separates rendering logic from I/O operations, enabling
different renderer implementations (terminal, in-memory, etc.).
This interface defines all methods that Buffer requires for rendering
cells to the screen, including cursor control, colors, and attributes.
Note: Methods with _seq suffix write escape sequences immediately.
This distinguishes them from buffer state management methods.
Instance methods
apply_sgr(fg : Color, bg : Color, attr : Attribute, old_fg : Color | Nil, old_bg : Color | Nil, old_attr : Attribute) : Nil
Applies a complete style transition (attributes + colors) in one call.
fg, bg, and attr are the target style. The old_ parameters carry
the caller's view of the current terminal style (nil = unknown, which
forces emission).
This default implementation decomposes the transition into the granular
color/attribute methods above with the legacy emission semantics
(reset-then-reapply when any attribute is removed), so existing renderer
implementations need no changes. Terminal overrides this to emit a single
combined SGR sequence per transition instead.
The branch count is a flat per-attribute dispatch table, not nested logic.
ameba:disable Metrics/CyclomaticComplexity
Sourcebackground=(color : Color)
Sets the background color (writes escape sequence).
Sourceclose
Closes the renderer and releases resources.
Sourceenable_blink
Enables blink text (writes escape sequence).
Sourceenable_bold
Enables bold text (writes escape sequence).
Sourceenable_cursive
Enables italic/cursive text (writes escape sequence).
Sourceenable_dim
Enables dim/faint text (writes escape sequence).
Sourceenable_hidden
Enables hidden/invisible text (writes escape sequence).
Sourceenable_reverse
Enables reverse video (writes escape sequence).
Sourceenable_strikethrough
Enables strikethrough text (writes escape sequence).
Sourceenable_underline
Enables underline text (writes escape sequence).
Sourceflush
Flushes any buffered output.
Sourceforeground=(color : Color)
Sets the foreground color (writes escape sequence).
Sourcehide_cursor
Writes hide cursor escape sequence.
SourceMoves cursor to the specified position (writes escape sequence).
Sourcereset_attributes
Resets all text attributes to default (writes escape sequence).
Sourceshow_cursor
Writes show cursor escape sequence.
Sourcesize
Returns the renderer dimensions as {width, height}.
Sourcewrite(data :
String, columns_advanced = 0)
Writes data to the renderer.
Sourcewrite(data :
Bytes, columns_advanced = 0)
Writes raw bytes to the renderer.
Default implementation delegates to the String overload so existing
renderer implementations work unchanged. Terminal overrides this to
stream the bytes to the backend without materializing a String.
Source