# `Cringe.Painter`
[🔗](https://github.com/elixir-vibe/cringe/blob/v0.1.0/lib/cringe/painter.ex#L1)

Stateful terminal frame painter.

The painter returns ANSI iodata for changed lines only after the first frame.

# `t`

```elixir
@type t() :: %Cringe.Painter{
  height: pos_integer(),
  previous: [String.t()],
  width: pos_integer()
}
```

# `new`

```elixir
@spec new(pos_integer(), pos_integer()) :: t()
```

# `render`

```elixir
@spec render(t(), Cringe.Document.t() | Cringe.Frame.t()) :: {IO.chardata(), t()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
