
#ifndef __AREAS_H__
#define __AREAS_H__

typedef struct area_t {
  int x, y, w, h;
} area;

// set area to sepcified coords
void set_area(area *a, int x, int y, int w, int h);

// copy an area
void copy_area(area *dest, const area *src);

// return the area shared by a1 and a2
void areas_intersection(const area *a1, const area* a2, area *out);

// return area covering both a1 and a2
void areas_union(const area *a1, const area* a2, area *out);

// return 1 if a1 and a2 intersects
int areas_intersect(const area *a1, const area* a2);

// return 1 if a1 covers a2
int area_encloses(const area *a1, const area* a2);

// return 1 if area is empty
int area_is_empty(const area *a1);

// set an area to 'empty'
void reset_area(area *a1);

#endif
