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
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
Moves cursor to the specified position (writes escape sequence).
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.