View Source Garnish.Renderer.Canvas (garnish v0.1.2)
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.
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.
Types
@type t() :: %Garnish.Renderer.Canvas{ cells: map(), outer_box: Garnish.Renderer.Box.t(), render_box: Garnish.Renderer.Box.t() }
Functions
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.
Creates a new canvas with n
columns (from the left) consumed.
Creates a new canvas with n
rows (from the top) consumed.
@spec 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: %Garnish.Renderer.Box{
top_left: %Garnish.Position{x: 0, y: 0},
bottom_right: %Garnish.Position{x: 9, y: 19}
},
render_box: %Garnish.Renderer.Box{
top_left: %Garnish.Position{x: 0, y: 0},
bottom_right: %Garnish.Position{x: 9, y: 19}
},
cells: %{}
}
@spec merge_cells(t(), [Garnish.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.
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.
@spec put_box(t(), Garnish.Renderer.Box.t()) :: t()