DrawHelper¶
A utility class for safe and bounded terminal drawing using a local coordinate system.
Supports sub-regions, colors, and drawing of text, boxes, and lines.
Constructor¶
DrawHelper(screen, x: int, y: int, width: int, height: int)
screen: curses window to draw on.x,y: Top-left corner of the region in parent coordinates.width,height: Size of the drawing region.
Color¶
set_color(color_pair: int)
Set the active color pair for subsequent drawing.
Drawing Primitives¶
put_char(x: int, y: int, char: str, attrs=0)
Draw a single character at (x, y) within bounds.
put_string(x: int, y: int, text: str, attrs=0)
Draw a string at (x, y), clamped to fit the width.
`draw_line(x: int, y: int, length: int, char: str,
horizontal=True, attrs=0, ender=None)`
Draw a horizontal or vertical line using the given character.
Optional ender is placed at both ends.
filled_rectangle(x: int, y: int, width: int, height: int, char: str = ' ')
Draw a filled rectangle using the given character.
rectangle(x: int, y: int, width: int, height: int)
Draw an outlined rectangle using Unicode box-drawing characters.
Text Utilities¶
multiline_text(x: int, y: int, text: str) -> int
Render multiline text starting at (x, y).
Returns the number of lines drawn.
header_line(y: int, text: str, char: str = '─', attrs=0)
Draw a horizontal line with centered text at row y.
`info_line(row: int, start: int, end: int,
strings: List[str], margin=1, attrs=0)`
Display a pipe-separated list of strings between start and end at row.
Region Management¶
sub_region(x: int, y: int, width: int, height: int)
Context manager that yields a nested DrawHelper with its own local coordinates.
with helper.sub_region(x, y, w, h) as sub:
sub.put_string(0, 0, "Inside sub-region")
Notes¶
Coordinates are relative to the helper’s own region.
Drawing outside bounds is silently ignored.
Drawing operations use safe wrappers to suppress
curses.error.