// 11 october 2014

typedef struct popover popover;
typedef struct popoverPoint popoverPoint;
typedef struct popoverRect popoverRect;

struct popoverPoint {
	intptr_t x;
	intptr_t y;
};

struct popoverRect {
	intptr_t left;
	intptr_t top;
	intptr_t right;
	intptr_t bottom;
};

// note the order: flipping sides is as easy as side ^ 1
enum {
	popoverPointLeft,
	popoverPointRight,
	popoverPointTop,
	popoverPointBottom,
};

popover *popoverDataNew(void *);
int popoverMakeFramePoints(popover *, intptr_t, intptr_t, popoverPoint[20]);
void popoverWindowSizeToClientSize(popover *, popoverRect *);
popoverRect popoverPointAt(popover *, popoverRect, intptr_t, intptr_t, unsigned int);