9 typedef enum Rect_side {
27 Rect horizontal_thicc_line(float x1, float x2, float y, float thiccness);
28 Rect vertical_thicc_line(float y1, float y2, float x, float thiccness);
30 Rect rect(float x, float y, float w, float h);
31 Rect rect_from_vecs(Vec2f position, Vec2f size);
32 Rect rect_from_points(Vec2f p1, Vec2f p2);
33 Rect rect_from_sdl(const SDL_Rect *rect);
35 Rect rects_overlap_area(Rect rect1, Rect rect2);
38 Rect rect_boundary2(Rect rect1, Rect rect2)
40 return rect_from_points(
42 fminf(rect1.x, rect2.x),
43 fminf(rect1.y, rect2.y)),
45 fmaxf(rect1.x + rect1.w, rect2.x + rect2.w),
46 fmaxf(rect1.y + rect1.h, rect2.y + rect2.h)));
49 static inline Vec2f rect_position(Rect rect)
51 return vec(rect.x, rect.y);
54 static inline Rect rect_scale(Rect rect, float d)
63 int rect_contains_point(Rect rect, Vec2f p);
65 int rects_overlap(Rect rect1, Rect rect2);
67 void rect_object_impact(Rect object,
71 Line rect_side(Rect rect, Rect_side side);
73 Rect rect_from_point(Vec2f p, float w, float h);
75 float line_length(Line line);
77 SDL_Rect rect_for_sdl(Rect rect);
79 Vec2f rect_center(Rect rect);
81 Vec2f rect_snap(Rect pivot, Rect *rect);
82 Vec2f rect_impulse(Rect *r1, Rect *r2);