mp_common: add some rectangle utility functions

This commit is contained in:
wm4 2012-12-28 15:44:51 +01:00
parent fb23c3a8ee
commit 23f731839a
2 changed files with 26 additions and 0 deletions

View File

@ -16,6 +16,8 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <libavutil/common.h>
#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;
}

View File

@ -43,4 +43,7 @@ struct mp_rect {
int x1, y1;
};
void mp_rect_union(struct mp_rect *rc, const struct mp_rect *src);
bool mp_rect_intersection(struct mp_rect *rc, const struct mp_rect *rc2);
#endif /* MPLAYER_MPCOMMON_H */