tungsten/_draw_shapes.tal

32 lines
1.5 KiB
Tal

@draw_capsule ( colour width* height* )
r/SCREEN.X? r/SCREEN.Y? ( c w* h* | x* y* )
INCkr* r/SCREEN.Y! ( c w* h* | x* y* )
( Draw wider rectangle )
STH* STH* DUP STHkr* OVRr* STHr* ( c c w* h-2* | x* y* h* w* )
#0002 SUB* ;draw_rect_filled CALL ( c | x* y* h* w* )
( Draw taller rectangle )
STHr* #0002 SUB* STHr* ( c w-2* h* | x* y* )
SWPkr* INCr* r/SCREEN.X! r/SCREEN.Y! ( c w-2* h* | x* y* )
;draw_rect_outline CALL ( | x* y* )
( Clear stacks )
r/SCREEN.Y! r/SCREEN.X! RETURN ( -- )
@draw_capsule_smooth ( colour width* height* )
r/SCREEN.X? r/SCREEN.Y? SWPkr* ( c w* h* | sx* sy* sy* sx* )
INCr* r/SCREEN.X! INCr* r/SCREEN.Y! ( c w* h* | sx* sy* )
( Draw inner rectangle )
STH* STH* DUPk ( c c c | sx* sy* h* w* )
STHkr* #0002 SUB* OVRr* STHr* #0002 SUB* ( c c c w-2* h-2* | sx* sy* h* w* )
;draw_rect_filled CALL ( c c | sx* sy* h* w* )
( Draw wider rectangle )
#0001 INCk* MOVE_DOWN MOVE_LEFT
STHkr* OVRr* STHr* #0006 SUB* ( c c w* h-6* | sx* sy* h* w* )
;draw_rect_outline CALL ( c | sx* sy* h* w* )
( Draw taller rectangle )
#0003 DUP* MOVE_RIGHT MOVE_UP
STHr* #0006 SUB* STHr* ( c w-6* h* | sx* sy* )
;draw_rect_outline CALL ( | sx* sy* )
( Clear stacks )
r/SCREEN.Y! r/SCREEN.X! RETURN ( -- )