# `Harlock.Render.Cell`
[🔗](https://github.com/thatsme/harlock/blob/v0.2.0/lib/harlock/render/cell.ex#L1)

A single terminal cell.

  * `:char` — a codepoint integer, a grapheme binary, `nil` (blank),
    or `:continuation` (the second cell of a wide grapheme).
  * `:style_id` — integer index into the frame's internal style table.

Single-codepoint graphemes (the common case — ASCII, Latin-1 NFC)
take the integer fast path. Multi-codepoint graphemes (NFD
diacritics, ZWJ sequences, regional-indicator flags) are stored as
binaries so the grapheme is rendered verbatim. Wide graphemes
occupy two cells: the grapheme at `(row, col)` and `:continuation`
at `(row, col + 1)`.

You'll see cells when inspecting a render via `Harlock.Test.cells/1`.

# `char_value`

```elixir
@type char_value() :: non_neg_integer() | String.t() | nil | :continuation
```

# `t`

```elixir
@type t() :: %Harlock.Render.Cell{char: char_value(), style_id: non_neg_integer()}
```

# `blank`

```elixir
@spec blank(non_neg_integer()) :: t()
```

# `new`

```elixir
@spec new(char_value(), non_neg_integer()) :: t()
```

---

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