vivid v0.2.1 Vivid.Frame
Frame represents a collection of colours and shapes.
Frame implements both the Enumerable
and Collectable
protocols.
Examples
iex> use Vivid
...> Enum.map(1..5, fn i ->
...> line = Line.init(Point.init(1,1), Point.init(20, i * 4))
...> {line, RGBA.black}
...> end)
...> |> Enum.into(Frame.init(24, 21, RGBA.white))
...> |> to_string
"@@@@@@@@@@@@@@@@@@@@ @@@\n" <>
"@@@@@@@@@@@@@@@@@@@ @@@@\n" <>
"@@@@@@@@@@@@@@@@@@ @@@@@\n" <>
"@@@@@@@@@@@@@@@@@ @@@@@@\n" <>
"@@@@@@@@@@@@@@@@ @@@ @@@\n" <>
"@@@@@@@@@@@@@@@ @@@ @@@@\n" <>
"@@@@@@@@@@@@@@ @@ @@@@@\n" <>
"@@@@@@@@@@@@@ @@ @@@@@@@\n" <>
"@@@@@@@@@@@@ @@ @@@@ @@@\n" <>
"@@@@@@@@@@@ @@ @@@ @@@@\n" <>
"@@@@@@@@@@ @ @@ @@@@@@\n" <>
"@@@@@@@@@ @ @@ @@@@@@@@\n" <>
"@@@@@@@@ @ @@ @@@@@ @@@\n" <>
"@@@@@@@ @ @@@ @@@@@\n" <>
"@@@@@@ @ @@@ @@@@@@@@\n" <>
"@@@@@ @ @@ @@@@@@@@@@\n" <>
"@@@@ @@@@@@ @@@\n" <>
"@@@ @@@ @@@@@@@\n" <>
"@@ @@@@@@@@@@@@@\n" <>
"@ @@@@@@@@@@@@@@@@@@@\n" <>
"@@@@@@@@@@@@@@@@@@@@@@@@\n"
Summary
Functions
Return the background colour of the frame
Change the background colour of the frame
Render a frame into a buffer for display
Clear the frame of any shapes
Return the height of the frame
Initialize a frame buffer
Add a shape to the frame buffer
Return the width of the frame
Types
Functions
Return the background colour of the frame.
Example
iex> Vivid.Frame.init(80, 25) |> Vivid.Frame.background_colour
#Vivid.RGBA<{0, 0, 0, 0}>
Change the background colour of the frame.
Example
iex> Vivid.Frame.init(80,25)
...> |> Vivid.Frame.background_colour(Vivid.RGBA.white)
...> |> Vivid.Frame.background_colour
#Vivid.RGBA<{1, 1, 1, 1}>
Render a frame into a buffer for display.
You can specify either :horizontal
or :vertical
mode, where in
:horizontal
mode the buffer is rendered row-by-row then column-by-column
and in :vertical
mode the buffer is rendered column-by-column then
row-by-row.
Returns a one-dimensional List of RGBA
colours with alpha-compositing
completed.
Clear the frame of any shapes.
init(integer, integer, Range.t) :: Vivid.Frame.t
Initialize a frame buffer.
width
the width of the frame, in pixels.height
the height of the frame, in pixels.colour
the default colour of the frame.
Example
iex> Vivid.Frame.init(4, 4)
#Vivid.Frame<[width: 4, height: 4, background_colour: #Vivid.RGBA<{0, 0, 0, 0}>]>
Add a shape to the frame buffer.
Examples
iex> Vivid.Frame.init(5,5)
...> |> Vivid.Frame.push(Vivid.Line.init(Vivid.Point.init(1,1), Vivid.Point.init(3,3)), Vivid.RGBA.white)
...> |> to_string
" \n" <>
" @ \n" <>
" @ \n" <>
" @ \n" <>
" \n"
iex> Vivid.Frame.init(5,5)
...> |> Vivid.Frame.push(
...> Vivid.Path.init([
...> Vivid.Point.init(1,1),
...> Vivid.Point.init(1,3),
...> Vivid.Point.init(3,3),
...> Vivid.Point.init(3,1),
...> ]), Vivid.RGBA.white
...> )
...> |> to_string
" \n" <>
" @@@ \n" <>
" @ @ \n" <>
" @ @ \n" <>
" \n"
iex> Vivid.Frame.init(5,5)
...> |> Vivid.Frame.push(
...> Vivid.Polygon.init([
...> Vivid.Point.init(1,1),
...> Vivid.Point.init(1,3),
...> Vivid.Point.init(3,3),
...> Vivid.Point.init(3,1),
...> ]), Vivid.RGBA.white
...> )
...> |> to_string
" \n" <>
" @@@ \n" <>
" @ @ \n" <>
" @@@ \n" <>
" \n"
iex> circle = Vivid.Circle.init(Vivid.Point.init(5,5), 4)
...> Vivid.Frame.init(11, 10)
...> |> Vivid.Frame.push(circle, Vivid.RGBA.white)
...> |> to_string
" @@@ \n" <>
" @@ @@ \n" <>
" @ @ \n" <>
" @ @ \n" <>
" @ @ \n" <>
" @ @ \n" <>
" @ @ \n" <>
" @@ @@ \n" <>
" @@@ \n" <>
" \n"
iex> line = Vivid.Line.init(Vivid.Point.init(0,0), Vivid.Point.init(50,50))
...> Vivid.Frame.init(5,5)
...> |> Vivid.Frame.push(line, Vivid.RGBA.white)
...> |> to_string
" @\n" <>
" @ \n" <>
" @ \n" <>
" @ \n" <>
"@ \n"