drawer.lua
—
bootloader menu/screen drawer module
drawer.lua
contains functionality for
drawing and manipulating the menu, logo, and brand to the screen.
Before using the functionality provided by
drawer.lua
, it must be included with a statement
such as the following:
local drawer =
require("drawer")
Brand definitions describe a “brand”, traditionally
drawn above the menu. The exact position may be controlled by using the
loader.conf(5)
variables loader_brand_x and
loader_brand_y. The following keys may be defined for
a brand definition:
graphic
- A table of strings containing rows of text to be drawn to the screen.
Logo definitions describe a “logo”, traditionally to
the right of the menu. The exact position may be controlled by using the
loader.conf(5)
variables loader_logo_x and
loader_logo_y. The following keys may be defined for a
logo definition:
requires_color
- A boolean describing whether or not this logo definition requires color.
If it is chosen to be drawn and it requires color on a color-disabled
boot,
drawer.lua
will elect to use the default
“orbbw” logo rather than the chosen logo.
graphic
- A table of strings containing rows of text to be drawn to the screen.
shift
- A table describing the x and y
shift that should be applied to all elements should this logo be selected.
This is typically used for shifting the menu and brand if an empty or
minimal logo are selected.
The brand and logo system is designed to allow brands and logos to
be easily plugged in. When an unrecognized
loader_brand
or loader_logo
are encountered, drawer.lua
will attempt to include
brand-${loader_brand}.lua or
logo-${loader_logo}.lua respectively. These files
are expected to call either
drawer.addBrand
()
or
drawer.addLogo
()
to add the requested branddef or logodef. drawer.lua
will attempt to do another lookup for the requested brand or logo before
falling back to one of the following:
drawer.default_brand
- The default brand to be used if the requested brand cannot be
located.
drawer.default_color_logodef
- The default logodef to be used if an invalid logodef is requested and
loader(8)
has been configured to allow output of color.
drawer.default_bw_logodef
- The default logodef to be used if either an invalid logodef has been
requested, or a logodef has been requested that requires color and
loader(8)
has been configured to not output color.
drawer.lua
contains the definitions for
the different frame styles that may be drawn around the menu. Frame styles
define the characters drawn for horizontal lines, vertical aligns, and each
of the four corner styles. The following keys may be defined for a frame
style:
- horizontal
- vertical
- top_left
- bottom_left
- top_right
- bottom_right
Frame styles are currently defined in the table
drawer.frame_styles
indexed by the name used for
loader_menu_frame
. No API currently exists for
manipulating this table indirectly.
The following functions are exported from
drawer.lua
:
drawer.addBrand
(name,
def)
- Add the brand definition described by def to the
table of known brand definitions, indexed by
name.
drawer.addLogo
(name,
def)
- Add the logo definition described by def to the
table of known logo definitions, indexed by
name.
drawer.drawscreen
(menudef)
- Draws the logo, brand, menu frame, and the current menu as described in
menudef, formatted as defined by
menu.lua(8).