Class screen
Screen class subset of cairo drawing functions.
see https://www.cairographics.org/tutorial/
Methods
| screen:update_default () | copy buffer to screen. |
| screen:ping () | restart screen saver timer |
| screen:update_low_battery () | low battery screen update |
| screen:aa (state) | enable/disable anti-aliasing. |
| screen:clear () | clear. |
| screen:level (value) | set level (color/brightness). |
| screen:line_width (w) | set line width. |
| screen:line_cap (style) | set line cap style. |
| screen:line_join (style) | set line join style. |
| screen:miter_limit (limit) | set miter limit. |
| screen:move (x, y) | move drawing position. |
| screen:move_rel (x, y) | move drawing position relative to current position. |
| screen:line (x, y) | draw line to specified point. |
| screen:line_rel (x, y) | draw line to specified point relative to current position. |
| screen:arc (x, y, r, angle1, angle2) | draw arc. |
| screen:circle (x, y, r) | draw circle. |
| screen:rect (x, y, w, h) | draw rectangle. |
| screen:curve (x1, y1, x2, y2, x3, y3) | draw curve (cubic Bézier spline). |
| screen:curve_rel (x1, y1, x2, y2, x3, y3) | draw curve (cubic Bézier spline) relative coordinates. |
| screen:close () | close current path. |
| screen:stroke () | stroke current path. |
| screen:fill () | fill current path. |
| screen:text (str) | draw text (left aligned). |
| screen:text_rotate (x, y, str, degrees) | draw text (left aligned) and rotated. |
| screen:text_right (str) | draw text, right aligned. |
| screen:text_center (str) | draw text, center aligned. |
| screen:text_center_rotate (x, y, str, degrees) | draw text, center aligned, and rotated. |
| screen:text_extents (str) | calculate width of text. |
| screen:font_face (index) | select font face. |
| screen:font_size (size) | set font size. |
| screen:pixel (x, y) | draw single pixel (requires integer x/y, fill afterwards). |
| screen:display_png (filename, x, y) | display png. |
| screen:peek (x, y, w, h) | get a rectangle of screen content. |
| screen:poke (x, y, w, h, s) | set a rectangle of screen content. |
| screen:rotate (number) | rotate |
| screen:translate (x, y) | move origin position |
| screen:save () | save |
| screen:blend_mode (index) | change screen blending mode. |
Methods
- screen:update_default ()
- copy buffer to screen.
- screen:ping ()
- restart screen saver timer
- screen:update_low_battery ()
- low battery screen update
- screen:aa (state)
-
enable/disable anti-aliasing.
Parameters:
- state on(1) or off(0)
- screen:clear ()
- clear.
- screen:level (value)
-
set level (color/brightness).
Parameters:
- value number 0-15 (0=off, 15=white)
- screen:line_width (w)
-
set line width.
Parameters:
- w number line width (in pixels, floats permitted)
- screen:line_cap (style)
-
set line cap style.
Parameters:
- style line cap style string ("butt", "round" or "square"). default is "butt".
- screen:line_join (style)
-
set line join style.
Parameters:
- style line join style string ("miter", "round" or "bevel"). default is "miter"
- screen:miter_limit (limit)
-
set miter limit.
Parameters:
- limit if the current line join style is set to "miter", the miter limit is used to determine whether the lines should be joined with a bevel instead of a miter. if the length of the miter divided by the line width is greater than the miter limit, the style is converted to a bevel. default value 10.
- screen:move (x, y)
-
move drawing position.
Parameters:
- x number position x
- y number position y
- screen:move_rel (x, y)
-
move drawing position relative to current position.
Parameters:
- x number relative position x
- y number relative position y
- screen:line (x, y)
-
draw line to specified point.
Parameters:
- x number destination x
- y number destination y
- screen:line_rel (x, y)
-
draw line to specified point relative to current position.
Parameters:
- x number relative destination x
- y number relative destination y
- screen:arc (x, y, r, angle1, angle2)
-
draw arc.
Parameters:
- x number circle center x
- y number circle center y
- r number radius
- angle1 number start angle
- angle2 number end angle
- screen:circle (x, y, r)
-
draw circle.
Parameters:
- x number origin x
- y number origin y
- r number radius
- screen:rect (x, y, w, h)
-
draw rectangle.
Parameters:
- x number x position
- y number y position
- w number width
- h number height
- screen:curve (x1, y1, x2, y2, x3, y3)
-
draw curve (cubic Bézier spline).
Parameters:
- x1 number destination x
- y1 number destination y
- x2 number handle 1 x
- y2 number handle 1 y
- x3 number handle 2 x
- y3 number handle 2 y
- screen:curve_rel (x1, y1, x2, y2, x3, y3)
-
draw curve (cubic Bézier spline) relative coordinates.
Parameters:
- x1 number relative destination x
- y1 number relative destination y
- x2 number handle 1 x
- y2 number handle 1 y
- x3 number handle 2 x
- y3 number handle 2 y
- screen:close ()
- close current path.
- screen:stroke ()
- stroke current path. uses currently selected color.
- screen:fill ()
- fill current path. uses currently selected color.
- screen:text (str)
-
draw text (left aligned).
uses currently selected font.
Parameters:
- str string : text to write
- screen:text_rotate (x, y, str, degrees)
-
draw text (left aligned) and rotated.
uses currently selected font.
Parameters:
- x number x position
- y number y position
- str string : text to write
- degrees number : degrees to rotate
- screen:text_right (str)
-
draw text, right aligned.
uses currently selected font
Parameters:
- str string : text to write.
- screen:text_center (str)
-
draw text, center aligned.
uses currently selected font.
Parameters:
- str string : text to write
- screen:text_center_rotate (x, y, str, degrees)
-
draw text, center aligned, and rotated.
uses currently selected font.
Parameters:
- x number x position
- y number y position
- str string : text to write
- degrees number : degress to rotate
- screen:text_extents (str)
-
calculate width of text.
uses currently selected font.
Parameters:
- str string : text to calculate width of
- screen:font_face (index)
-
select font face.
Parameters:
- index
font face (see list)
1 04B_03 (norns default)
2 ALEPH
3 Roboto Thin
4 Roboto Light
5 Roboto Regular
6 Roboto Medium
7 Roboto Bold
8 Roboto Black
9 Roboto Thin Italic
10 Roboto Light Italic
11 Roboto Italic
12 Roboto Medium Italic
13 Roboto Bold Italic
14 Roboto Black Italic
- index
font face (see list)
- screen:font_size (size)
-
set font size.
Parameters:
- size number in pixel height.
- screen:pixel (x, y)
-
draw single pixel (requires integer x/y, fill afterwards).
Parameters:
- x number position
- y number position
- screen:display_png (filename, x, y)
-
display png.
Parameters:
- filename
- x number x position
- y number y position
- screen:peek (x, y, w, h)
-
get a rectangle of screen content. returned buffer contains one byte (valued 0 - 15) per pixel, i.e. w * h bytes
Parameters:
- x number x position
- y number y position
- w number width, default 1
- h number height, default 1
- screen:poke (x, y, w, h, s)
-
set a rectangle of screen content. expected buffer contains one byte (valued 0 - 15) per pixel, i.e. w * h bytes
Parameters:
- x number x position
- y number y position
- w number width
- h number height
- s string screen content to set
- screen:rotate (number)
-
rotate
Parameters:
- number radians
- screen:translate (x, y)
-
move origin position
Parameters:
- x number position x
- y number position y
- screen:save ()
- save
- screen:blend_mode (index)
-
change screen blending mode.
Parameters:
- index
number/string
blending mode (see list), strings are case-insensitive, include '_' between words
more info at https://www.cairographics.org/operators/
there are other operators available, see the above link or use tab.print(screen.BLEND_MODES) in the REPL for the full list.
0 Over (default)
1 XOR: clears any overlapping pixels.
2 Add: adds together the alpha (brightness) of overlapping pixels.
3 Multiply: multiplies the colors of overlapping pixels, the result is always darker than the two inputs.
4 Screen: the colors of overlapping pixels are complemented, multiplied, then their product is complimented. the result is always lighter than the two inputs.
5 Overlay: multiplies colors if destination pixel level is >= 8, screens colors if destination pixel level is < 8.
6 Darken: keeps the darker value of overlapping pixels.
7 Lighten: keeps the lighter value of overlapping pixels.
8 Color_Dodge: brightens pixels being drawn over.
9 Color_Burn: darkens pixels being drawn over.
10 Hard_Light: multiplies colors if source pixel level is >= 8, screens colors if source pixel level is < 8.
11 Soft_Light: uses Darken or Lighten depending on the color of the source pixel.
12 Difference: the result is the absolute value of the difference of the destination and source pixels.
13 Exclusion: similar to Difference, but has lower contrast.
Usage:
-- number vs. string input screen.blend_mode(0) screen.blend_mode('over')
-- case-insensitivity screen.blend_mode('hard_light') screen.blend_mode('hArD_lIgHt') screen.blend_mode('HARD_LIGHT')
- index
number/string
blending mode (see list), strings are case-insensitive, include '_' between words