class

Anvil::Surface::Inline

Inherits Anvil::Surface < Reference < Object

Live-Region am unteren Rand des normalen Scrollbacks.

Fertige Inhalte werden einmal in den Scrollback geschrieben und danach nie wieder angefasst; nur die Region darunter wird neu gezeichnet. Das Transcript bleibt damit kopier- und durchsuchbar — das Modell von smith und Claude Code.

Gezeichnet wird über Termisu::Buffer, die Region erbt also dessen Cell-Diff, SGR-Coalescing und Wide-Char-Logik.

Constructors

memory(io : IO, width : Int32, screen_height : Int32, height : Int32 = 1) : Inline

Ohne Terminal: die Region rendert in ein beliebiges IO.

Damit lässt sich prüfen, was tatsächlich hinausginge, ohne ein echtes Terminal — und eine Anwendung kann ihre Oberfläche in eine Datei rendern, für Abnahmebilder oder Fehlerberichte.

Source
new(backend : Backend = Backend.new(alternate_screen: false), height : Int32 = 1)
Source

Instance methods

backend
Source
begin_frame
Source
clear_screen

Vollbild-Löschen — nur für die ausdrückliche Wiederherstellung (Ctrl-L).

Source
close
Source
commit(lines : Array(Text::StyledLine)) : Nil

Schreibt Zeilen dauerhaft in den Scrollback, oberhalb der Region.

Source
cursor_at(x : Int32, y : Int32) : Nil

Sichtbarer Cursor an dieser Stelle der Region — für die Eingabezeile.

Source
end_frame
Source
height
Source
height=(new_height : Int32) : Nil

Höhe ändern. Wächst die Region, werden Zeilen vom Terminal angefordert (es scrollt); schrumpft sie, werden die überzähligen gelöscht. Danach ist der Bildschirminhalt in jedem Fall verschoben, also ungültig.

Source
hide_cursor

Kein sichtbarer Cursor (der Normalfall, solange nichts eingegeben wird).

Source
invalidate!

Erklärt den Bildschirminhalt für ungültig: der nächste Frame wird vollständig neu gezeichnet statt gediffed. Nötig, wenn etwas anderes auf das Terminal geschrieben hat (ein Subprozess) oder der Nutzer Ctrl-L drückt.

Source
max_height

Die Region wird an Ort und Stelle neu gezeichnet, und das geht nur, solange sie auf den Bildschirm passt: cursor_up stoppt an der obersten Zeile, eine höhere Region ließe sich nie zurücklaufen — jeder Redraw schöbe stattdessen eine weitere Kopie in den Scrollback. Eine Zeile bleibt frei, damit der Committen-Pfad Platz hat.

Source
put_cell(x : Int32, y : Int32, grapheme : String, style : Text::Style) : Nil
Source
resize(width : Int32, screen_height : Int32) : Nil

Für den Betrieb ohne Terminal: die Größe von außen setzen.

Source
resized!

Reagiert auf eine Größenänderung des Fensters.

Source
size
Source