Rect :: #type,distinct Vec(4, RECT_TYPE); make_rect :: (x: RECT_TYPE, y: RECT_TYPE, w: RECT_TYPE, h: RECT_TYPE) -> Rect { r: Rect = ---; r.x = x; r.y = y; r.width = w; r.height = h; return r; } cut_left :: (rect: *Rect, want: RECT_TYPE) -> Rect { amnt := basic.min(want, rect.width); r := rect.*; r.width = amnt; rect.x += amnt; rect.width -= amnt; return r; } cut_right :: (rect: *Rect, want: RECT_TYPE) -> Rect { amnt := basic.min(want, rect.width); r := rect.*; r.x += rect.width - amnt; r.width = amnt; rect.width -= r.width; return r; } cut_top :: (rect: *Rect, want: RECT_TYPE) -> Rect { amnt := basic.min(rect.height, want); r := rect.*; r.height -= amnt; rect.y += amnt; rect.height -= amnt; return r; } cut_bottom :: (rect: *Rect, want: RECT_TYPE) -> Rect { amnt := basic.min(want, rect.height); r := rect.*; r.y += r.height - amnt; r.height = amnt; rect.height -= amnt; return r; } #scope_file basic :: #import "Basic";