Back to Projects
TUIX v0.5Beta

Last Updated: 2026-05-20

Canvas Widget

Canvas is a free-draw surface for pixel-level terminal graphics. It supports single-pixel writes, lines, rectangles, circles, text, raw buffer insertion, and cached sprites.

Creating A Canvas

uid = objects.create_object(builders.CANVAS, 'Main', 0.8, 0.6, 0.2, 0.1)
canvas = objects.get_object_by_uid(uid)

Drawing API

FunctionDescription
tuix_canvas_set_pixel(obj, x, y, sym, fgr, fgg, fgb, bgr, bgg, bgb)Writes one styled pixel.
tuix_canvas_draw_line(obj, x0, y0, x1, y1, sym, fgr, fgg, fgb, bgr, bgg, bgb)Draws a line.
tuix_canvas_draw_rect(obj, x, y, w, h, sym, filled, fgr, fgg, fgb, bgr, bgg, bgb)Draws an outline or filled rectangle.
tuix_canvas_draw_circle(obj, cx, cy, radius, sym, filled, fgr, fgg, fgb, bgr, bgg, bgb)Draws an outline or filled circle.
tuix_canvas_draw_text(obj, x, y, text, fgr, fgg, fgb, bgr, bgg, bgb)Draws text at a canvas coordinate.
tuix_canvas_draw_sprite / cache_sprite / draw_cached_spriteDraws raw or cached native sprite pixels.

Example

objects.tuix_canvas_draw_rect(canvas, 2, 2, 20, 8, '#', 0, 120, 220, 255, 0, 0, 0)
objects.tuix_canvas_draw_line(canvas, 2, 2, 21, 9, '/', 255, 200, 80, 0, 0, 0)
objects.tuix_canvas_draw_text(canvas, 4, 4, 'TUIX', 255, 255, 255, 0, 0, 0)
engine.main_loop()

Inspection

Use buffers.get_buffer_snapshot(...) or buffers.get_buffer_snapshot_by_uid(...) for read-only diagnostics. Avoid older raw buffer-pointer patterns in new code.