pub struct Frame {
pub body: Vec<Vec<Cell>>,
pub row_styles: Vec<RowStyle>,
pub highlights: Vec<Vec<Range<usize>>>,
pub status: String,
pub status_style: Style,
pub raw_rows: Vec<Option<Vec<u8>>>,
pub image_blob: Option<Vec<u8>>,
}Fields§
§body: Vec<Vec<Cell>>§row_styles: Vec<RowStyle>§highlights: Vec<Vec<Range<usize>>>Per-row column ranges to render with reverse-video. Used by /
search to highlight just the matched phrase rather than the whole row.
Indexed parallel to body; each inner Vec holds column ranges in
[start, end) form (cell columns).
status: String§status_style: StyleStyle applied to the status row by the writer.
raw_rows: Vec<Option<Vec<u8>>>AnsiMode::Raw passthrough hints — parallel to body. Some(bytes)
on a row instructs the writer to emit those original source bytes
instead of rendering the cell grid (lets escape sequences pass to
the terminal verbatim). Some(empty) skips emission (continuation
row of a wrapped line whose first row already wrote the bytes).
None means “render cells normally”. Only populated when the
viewport’s ansi_mode is Raw.
image_blob: Option<Vec<u8>>When Some, the whole body is a single terminal-graphics escape blob
(Sixel/Kitty). write_frame clears the body once, positions the cursor
at (0,0), and writes these bytes verbatim instead of the per-row cell
loop. None for all text/hex/ASCII-image frames.