diff options
Diffstat (limited to 'src/util.h')
| -rw-r--r-- | src/util.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/util.h b/src/util.h new file mode 100644 index 0000000..9e84a7c --- /dev/null +++ b/src/util.h @@ -0,0 +1,29 @@ +#ifndef COMET_UTIL_H +#define COMET_UTIL_H + +#include <time.h> +#include <stddef.h> +#include <stdbool.h> + +struct timespec timespec_diff(struct timespec a, struct timespec b); + +bool timespec_greater(struct timespec a, struct timespec b); + +// Check if point (px, py) is inside a rectangle in (x, y), (x+w, y), (x, y+h) and (w+h, y+h) +static inline bool in_rect(int px, int py, int x, int y, int w, int h) +{ + return px >= x && px <= x + w && py >= y && py <= y + h; +} + +// Check if point (px, py) is inside a circle of radius r and center (x, y) +static inline bool in_circle(int px, int py, int x, int y, int r) +{ + int dx = x - px; + int dy = y - py; + return (dx * dx + dy * dy) <= r * r; +} + +// Check if point (px, py) is inside a capsule in (x, y), (x+w, y), (x, y+h) and (w+h, y+h) +bool in_capsule(int px, int py, int x, int y, int w, int h); + +#endif |
