# `Drafter.Runtime.FrameClock`
[🔗](https://github.com/jaman/drafter/blob/main/lib/drafter/runtime/frame_clock.ex#L1)

Converts an application's `:refresh_rate` setting into a frame interval.

Frame pacing itself is done by `Drafter.Runtime.AppLoop`.

# `interval`

```elixir
@type interval() :: pos_integer() | nil
```

# `interval_for`

```elixir
@spec interval_for(term()) :: interval()
```

Frame interval in milliseconds for a refresh-rate specification.

Accepts `"30fps"`, `"7.5fps"`, `"unlimited"`, `:unlimited`, or a millisecond
integer. Returns `nil` for unlimited. Raises `ArgumentError` on anything else.

## Examples

    iex> Drafter.Runtime.FrameClock.interval_for("30fps")
    33

    iex> Drafter.Runtime.FrameClock.interval_for("7.5fps")
    133

    iex> Drafter.Runtime.FrameClock.interval_for(:unlimited)
    nil

    iex> Drafter.Runtime.FrameClock.interval_for(16)
    16

---

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