Stateful terminal frame painter.
The painter returns ANSI iodata for changed lines only after the first frame. It also owns runtime cursor visibility for frames that expose a cursor.
Summary
Types
@type t() :: %Cringe.Painter{ cursor: {pos_integer(), pos_integer()} | nil, cursor_visible?: boolean(), height: pos_integer(), previous: [String.t()], width: pos_integer() }
Functions
@spec new(pos_integer(), pos_integer()) :: t()
@spec render(t(), Cringe.Document.t() | Cringe.Frame.t()) :: {IO.chardata(), t()}