From 23f731839a39583321e2e03ff54715e9d5cea577 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 28 Dec 2012 15:44:51 +0100 Subject: mp_common: add some rectangle utility functions --- core/mp_common.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'core/mp_common.c') diff --git a/core/mp_common.c b/core/mp_common.c index eecd0710cc..c931c29065 100644 --- a/core/mp_common.c +++ b/core/mp_common.c @@ -16,6 +16,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include + #include "talloc.h" #include "core/mp_common.h" @@ -34,3 +36,24 @@ char *mp_format_time(double time, bool fractions) (int)((time - (int)time) * 1000)); return res; } + +// Set rc to the union of rc and rc2 +void mp_rect_union(struct mp_rect *rc, const struct mp_rect *rc2) +{ + rc->x0 = FFMIN(rc->x0, rc2->x0); + rc->y0 = FFMIN(rc->y0, rc2->y0); + rc->x1 = FFMAX(rc->x1, rc2->x1); + rc->y1 = FFMAX(rc->y1, rc2->y1); +} + +// Set rc to the intersection of rc and src. +// Return false if the result is empty. +bool mp_rect_intersection(struct mp_rect *rc, const struct mp_rect *rc2) +{ + rc->x0 = FFMAX(rc->x0, rc2->x0); + rc->y0 = FFMAX(rc->y0, rc2->y0); + rc->x1 = FFMIN(rc->x1, rc2->x1); + rc->y1 = FFMIN(rc->y1, rc2->y1); + + return rc->x1 > rc->x0 && rc->y1 > rc->y0; +} -- cgit v1.2.3