Ratatouille v0.5.1 Ratatouille.Renderer.Canvas View Source

A canvas represents a terminal window, a subvision of it for rendering, and a sparse mapping of positions to cells.

A %Canvas{} struct can be rendered to different output formats. This includes the primary use-case of rendering to the termbox-managed window, but also rendering to strings, which is useful for testing.

Link to this section Summary

Functions

Copies the canvas to a new one with the render box consumed by the given dx and dy.

Creates a new canvas with n columns (from the left) consumed.

Creates a new canvas with n rows (from the top) consumed.

Creates an empty canvas with the given dimensions.

Merges a list of cells into the canvas, provided that the cells are located within the canvas's rendering box. Returns a new canvas with the merged cells.

Copies the canvas to a new one with the render box padded on each side (top, left, bottom, right) by size. Pass a negative size to remove padding.

Link to this section Types

Link to this type

t()

View Source
t() :: %Ratatouille.Renderer.Canvas{
  cells: map(),
  outer_box: Ratatouille.Renderer.Box.t(),
  render_box: Ratatouille.Renderer.Box.t()
}

Link to this section Functions

Link to this function

consume(canvas, dx, dy)

View Source
consume(t(), integer(), integer()) :: t()

Copies the canvas to a new one with the render box consumed by the given dx and dy.

The render box is used to indicate the empty, renderable space on the canvas, so this might be called with a dy of 1 after rendering a line of text. The box is consumed left-to-right and top-to-bottom.

Link to this function

consume_columns(canvas, n)

View Source
consume_columns(t(), integer()) :: t()

Creates a new canvas with n columns (from the left) consumed.

Link to this function

consume_rows(canvas, n)

View Source
consume_rows(t(), integer()) :: t()

Creates a new canvas with n rows (from the top) consumed.

Link to this function

from_dimensions(x, y)

View Source
from_dimensions(non_neg_integer(), non_neg_integer()) :: t()

Creates an empty canvas with the given dimensions.

Examples

iex> Canvas.from_dimensions(10, 20)
%Canvas{
  outer_box: %Ratatouille.Renderer.Box{
    top_left: %ExTermbox.Position{x: 0, y: 0},
    bottom_right: %ExTermbox.Position{x: 9, y: 19}
  },
  render_box: %Ratatouille.Renderer.Box{
    top_left: %ExTermbox.Position{x: 0, y: 0},
    bottom_right: %ExTermbox.Position{x: 9, y: 19}
  },
  cells: %{}
}
Link to this function

merge_cells(canvas, cells)

View Source
merge_cells(t(), [ExTermbox.Cell.t()]) :: t()

Merges a list of cells into the canvas, provided that the cells are located within the canvas's rendering box. Returns a new canvas with the merged cells.

Link to this function

padded(canvas, size)

View Source
padded(t(), integer()) :: t()

Copies the canvas to a new one with the render box padded on each side (top, left, bottom, right) by size. Pass a negative size to remove padding.

Link to this function

put_box(canvas, render_box)

View Source
put_box(t(), Ratatouille.Renderer.Box.t()) :: t()
Link to this function

render_to_string(canvas)

View Source
render_to_string(t()) :: String.t()
Link to this function

render_to_strings(canvas)

View Source
render_to_strings(t()) :: [String.t()]
Link to this function

render_to_termbox(bindings, canvas)

View Source
render_to_termbox(module(), t()) :: :ok
Link to this function

translate(canvas, dx, dy)

View Source
translate(t(), integer(), integer()) :: t()