UI event types.
typedef enum UIEEvent

No event.
UIE_EVENT_NONE,

Mouse down event.
UIE_EVENT_MOUSEDOWN,

Mouse up event.
UIE_EVENT_MOUSEUP,

Single mouse click event.
UIE_EVENT_SINGLECLICK,

Double mouse click event.
UIE_EVENT_DOUBLECLICK,

Tripple mouse click event.
UIE_EVENT_TRIPLECLICK,

Mouse wheel roll up step.
UIE_EVENT_WHEELUP,

Mouse wheel roll down step.
UIE_EVENT_WHEELDOWN,

Start mouse drag.
UIE_EVENT_STARTDRAG,

Mouse is dragging.
UIE_EVENT_DRAG,

End mouse drag.
UIE_EVENT_ENDDRAG,

Element dropped.
UIE_EVENT_ROP,

Raw key was pressed.
UIE_EVENT_KEY,

Keypress baked into character.
UIE_EVENT_CHAR,

Application window resized.
UIE_EVENT_RESIZE,

Application window closed.
UIE_EVENT_CLOSE

End block 'UI event types'
} UIEEvent;

UI events attributes
typedef enum UIEAttribs

Accept wheel imput.
UIE_ATTRIBS_WHEEL = 1,

Draggable.
UIE_ATTRIBS_DRAGGABLE = 2,

Do not generate events.
UIE_ATTRIBS_STATIC = 4

End block 'UI atrributes'
} UIEAttribs;

User interface element.
typedef struct UIEvents { uint sig; byte wobj[128]; } UIEvents;

Check if state change.
API bool UIEventsIsStateChange(UIEvents *uiEvents);
uiEvents: UIE element.
returns: True if state change.

Check if selected.
API bool UIEventsIsSelected(UIEvents *uiEvents);
uiEvents: UIE element.
returns: True if uiEvents is selected.

Check if disabled.
API bool UIEventsIsDisabled(UIEvents *uiEvents);
uiEvents: UIE element.
returns: True if uiEvents is disabled.

Get host.
API void *UIEventsGetHost(UIEvents *uiEvents);
uiEvents:
returns: Host reference.

Get character from character event.
API wchar UIEventsGetChar(UIEvents *uiEvents);
uiEvents: UIE element.
returns: Character value.

Get mouse click position within element.
API S2i UIEventsGetMouseClickPos(UIEvents *uiEvents);
uiEvents: UIE element.
returns: Local mouse click position.

Get index of state color.
API uint UIEventsGetStateColorIndex(UIEvents *uiEvents);
uiEvents: UIE element.
returns: Zero-based state color index

Get state color.
API Color UIEventsGetStateColor(UIEvents *uiEvents);
uiEvents: UIE element.
returns: State color.

Get focused element.
API void *UIEventsGetFocused();
returns: List key.

Get clicked element.
API void *UIEventsGetClicked();
returns: List key.

Get dragged element.
API void *UIEventsGetDragged();
returns: List key.

Get dropped element.
API void *UIEventsGetDropped();
returns: List key.

Get event.
API UIEEvent UIEventsGetEvent(UIEvents *uiEvents);
uiEvents: UIE element.
returns: Last UIE event.

Update element.
API void UIEventsUpdate(UIEvents *uiEvents, B2i pRect);
uiEvents: UIE Element
pRect: Parent rect.

Set disabled.
API void UIEventsSetDisabled(UIEvents *uiEvents, bool disabled);
uiEvents: UIE element.
disabled: True to disable, false to enable.

Set selected.
API void UIEventsSetSelected(UIEvents *uiEvents, bool selected);
uiEvents: UIE element.
selected: True to select, false to deselect.

Set element to receive keyboard events.
API void UIEventsSetFocus(UIEvents *uiEvents);
uiEvents:

Clear keyboard focus.
API void UIEventsClearFocus();

Clear all pending events.
API void UIEventsClearEvents();

Initialize element.
API void UIEventsInit(UIEvents *uiEvents, void *host, Color *stateColors, uint attribs, uint maxClicks);
uiEvents: UIE element.
host: Host reference, or 0.
stateColors: State colors.
attribs: UIEvents attributes.
maxClicks: Max clicks needed.

Release element.
API void UIEventsRel(UIEvents *uiEvents);
uiEvents: UIE Element.