pub struct Frame {Show 17 fields
pub cols: u16,
pub rows: u16,
pub kind: FrameKind,
pub cursor_row: u16,
pub cursor_col: u16,
pub cursor_visible: bool,
pub cursor_shape: CursorShape,
pub cursor_blink: bool,
pub display_offset: u32,
pub scrollback_len: u32,
pub mouse_events: MouseEvents,
pub alt_screen: bool,
pub scroll: Option<ScrollOp>,
pub spans: Vec<Span>,
pub side_table: Vec<Vec<char>>,
pub link_table: Vec<String>,
pub overlay: Overlay,
}Expand description
One serialized damage cycle: the decoded logical form that encode/decode
round-trip. side_table holds this frame’s grapheme clusters (referenced by
each cell’s frame-local extra); link_table holds its OSC 8 hyperlink URIs
(referenced by each cell’s frame-local link).
Fields§
§cols: u16§rows: u16§kind: FrameKind§cursor_row: u16Cursor row/col in screen coordinates (0-based), and whether the engine shows it (DECTCEM). Rides in the header because the cursor moves with almost every frame (#38). Drawing the cursor — cell-invert / overlay — stays the consumer’s renderer adapter; the engine only reports state.
cursor_col: u16§cursor_visible: bool§cursor_shape: CursorShapeThe caret shape (DECSCUSR #89) and whether it blinks (att610 ?12, #81). Reported for the renderer; drawing/animation stays the consumer’s.
cursor_blink: bool§display_offset: u32Viewport scroll position (#112 / ADR-0013), for the consumer’s scrollbar.
display_offset = lines scrolled up from the bottom (0 = following the
live screen); scrollback_len = history lines (total = + rows). Ride in
the header like the cursor — per-frame viewport state, not cell content.
scrollback_len: u32§mouse_events: MouseEventsThe mouse tracking mode as a wanted-events mask (#129): which mouse
event categories the app asked to receive, so the consumer routes an event
to the app (bit set) or keeps it local. empty() = no reporting. Rides the
header like the cursor — per-frame mode state the consumer reads, not cell
content. Positions/encoding never cross; the backend encodes via
encode_mouse.
alt_screen: boolWhether the alternate screen (?1049/?47) is active (#149). Buffer-global
state a frame-mode consumer can’t derive from viewport damage — the
accessibility announce policy (#119) gates on it (suppress TUI repaints).
Rides the header like the cursor scalars (ADR-0014).
scroll: Option<ScrollOp>§spans: Vec<Span>§side_table: Vec<Vec<char>>§link_table: Vec<String>§overlay: OverlayInteraction overlays for this viewport (#108): selection, search
highlights, the active match, and markers — see Overlay.