51 lines
968 B
Text
51 lines
968 B
Text
|
|
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";
|