#ifndef _XPWidgetUtils_h_
#define _XPWidgetUtils_h_
#include "XPWidgetDefs.h"
#ifdef __cplusplus
extern "C" {
#endif
#define MOUSE_X(param) (((XPMouseState_t *) (param))->x)
#define MOUSE_Y(param) (((XPMouseState_t *) (param))->y)
#define DELTA_X(param) (((XPWidgetGeometryChange_t *) (param))->dx)
#define DELTA_Y(param) (((XPWidgetGeometryChange_t *) (param))->dy)
#define DELTA_W(param) (((XPWidgetGeometryChange_t *) (param))->dwidth)
#define DELTA_H(param) (((XPWidgetGeometryChange_t *) (param))->dheight)
#define KEY_CHAR(param) (((XPKeyState_t *) (param))->key)
#define KEY_FLAGS(param) (((XPKeyState_t *) (param))->flags)
#define KEY_VKEY(param) (((XPKeyState_t *) (param))->vkey)
#define IN_RECT(x, y, l, t, r, b) \
(((x) >= (l)) && ((x) <= (r)) && ((y) >= (b)) && ((y) <= (t)))
typedef struct {
int left;
int top;
int right;
int bottom;
int visible;
const char * descriptor;
int isRoot;
int containerIndex;
XPWidgetClass widgetClass;
} XPWidgetCreate_t;
#define NO_PARENT -1
#define PARAM_PARENT -2
#define WIDGET_COUNT(x) ((sizeof(x) / sizeof(XPWidgetCreate_t)))
WIDGET_API void XPUCreateWidgets(
const XPWidgetCreate_t * inWidgetDefs,
int inCount,
XPWidgetID inParamParent,
XPWidgetID * ioWidgets);
WIDGET_API void XPUMoveWidgetBy(
XPWidgetID inWidget,
int inDeltaX,
int inDeltaY);
WIDGET_API int XPUFixedLayout(
XPWidgetMessage inMessage,
XPWidgetID inWidget,
intptr_t inParam1,
intptr_t inParam2);
WIDGET_API int XPUSelectIfNeeded(
XPWidgetMessage inMessage,
XPWidgetID inWidget,
intptr_t inParam1,
intptr_t inParam2,
int inEatClick);
WIDGET_API int XPUDefocusKeyboard(
XPWidgetMessage inMessage,
XPWidgetID inWidget,
intptr_t inParam1,
intptr_t inParam2,
int inEatClick);
WIDGET_API int XPUDragWidget(
XPWidgetMessage inMessage,
XPWidgetID inWidget,
intptr_t inParam1,
intptr_t inParam2,
int inLeft,
int inTop,
int inRight,
int inBottom);
#ifdef __cplusplus
}
#endif
#endif