class

Termisu::Renderer

Inherits Reference / Object

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

Source
background=(color : Color)

Sets the background color (writes escape sequence).

Source
close

Closes the renderer and releases resources.

Source
enable_bold

Enables bold text (writes escape sequence).

Source
enable_cursive

Enables italic/cursive text (writes escape sequence).

Source
enable_dim

Enables dim/faint text (writes escape sequence).

Source
enable_hidden

Enables hidden/invisible text (writes escape sequence).

Source
enable_reverse

Enables reverse video (writes escape sequence).

Source
enable_strikethrough

Enables strikethrough text (writes escape sequence).

Source
enable_underline

Enables underline text (writes escape sequence).

Source
flush

Flushes any buffered output.

Source
foreground=(color : Color)

Sets the foreground color (writes escape sequence).

Source
hide_cursor

Writes hide cursor escape sequence.

Source
move_cursor(x : Int32, y : Int32)

Moves cursor to the specified position (writes escape sequence).

Source
reset_attributes

Resets all text attributes to default (writes escape sequence).

Source
show_cursor

Writes show cursor escape sequence.

Source
size

Returns the renderer dimensions as {width, height}.

Source
write(data : String, columns_advanced = 0)

Writes data to the renderer.

Source
write(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