| @@ -33,40 +33,23 @@ extern "C" | |||||
| { | { | ||||
| #endif | #endif | ||||
| /** \e libcaca context */ | |||||
| /** \e libcaca display context */ | |||||
| typedef struct caca_display caca_display_t; | typedef struct caca_display caca_display_t; | ||||
| /** event structure */ | |||||
| /** \e libcaca event structure */ | |||||
| typedef struct caca_event caca_event_t; | typedef struct caca_event caca_event_t; | ||||
| /** \brief User events. | |||||
| /** \brief Handling of user events. | |||||
| * | * | ||||
| * This structure is filled by caca_get_event() when an event is received. | * This structure is filled by caca_get_event() when an event is received. | ||||
| * The \e type field is always valid. The validity of the \e data union | |||||
| * depends on the value of the \e type field: | |||||
| * - \b CACA_EVENT_NONE: no other field is valid. | |||||
| * - \b CACA_EVENT_KEY_PRESS, \b CACA_EVENT_KEY_RELEASE: the \e data.key.ch | |||||
| * field is valid and contains either the ASCII value for the key, or | |||||
| * an \e enum \e caca_key value. If the value is a printable ASCII | |||||
| * character, the \e data.key.utf32 and \e data.key.utf8 fields are | |||||
| * also filled and contain respectively the UTF-32/UCS-4 and the UTF-8 | |||||
| * representations of the character. Otherwise, their content is | |||||
| * undefined. | |||||
| * - \b CACA_EVENT_MOUSE_PRESS, \b CACA_EVENT_MOUSE_RELEASE: the | |||||
| * \e data.mouse.button field is valid and contains the index of the | |||||
| * mouse button that was pressed. | |||||
| * - \b CACA_EVENT_MOUSE_MOTION: the \e data.mouse.x and \e data.mouse.y | |||||
| * fields are valid and contain the mouse coordinates in character | |||||
| * cells. | |||||
| * - \b CACA_EVENT_RESIZE: the \e data.resize.w and \e data.resize.h | |||||
| * fields are valid and contain the new width and height values of | |||||
| * the \e libcucul canvas attached to \e libcaca. | |||||
| * - \b CACA_EVENT_QUIT: no other field is valid. | |||||
| * | |||||
| * The result of accessing data members outside the above conditions is | |||||
| * undefined. | |||||
| */ | |||||
| * The \e type field is always valid. */ | |||||
| struct caca_event | struct caca_event | ||||
| { | { | ||||
| /** \brief User event type enumeration. | |||||
| * | |||||
| * This enum serves two purposes: | |||||
| * - Build listening masks for caca_get_event(). | |||||
| * - Define the type of a \e caca_event_t. | |||||
| */ | |||||
| enum caca_event_type | enum caca_event_type | ||||
| { | { | ||||
| CACA_EVENT_NONE = 0x0000, /**< No event. */ | CACA_EVENT_NONE = 0x0000, /**< No event. */ | ||||
| @@ -80,8 +63,39 @@ struct caca_event | |||||
| CACA_EVENT_QUIT = 0x0040, /**< The user requested to quit. */ | CACA_EVENT_QUIT = 0x0040, /**< The user requested to quit. */ | ||||
| CACA_EVENT_ANY = 0xffff /**< Bitmask for any event. */ | CACA_EVENT_ANY = 0xffff /**< Bitmask for any event. */ | ||||
| } type; | |||||
| } | |||||
| /** \brief User event type member. | |||||
| * | |||||
| * This field is always valid when caca_get_event() returns. | |||||
| */ | |||||
| type; | |||||
| /** \brief User event data member. | |||||
| * | |||||
| * The validity of the \e data union depends on the value of the \e type | |||||
| * field: | |||||
| * - \c CACA_EVENT_NONE: no field is valid. | |||||
| * - \c CACA_EVENT_KEY_PRESS, \c CACA_EVENT_KEY_RELEASE: the | |||||
| * \e data.key.ch field is valid and contains either the ASCII value for | |||||
| * the key, or an \e enum \e caca_key value. If the value is a printable | |||||
| * ASCII character, the \e data.key.utf32 and \e data.key.utf8 fields are | |||||
| * also filled and contain respectively the UTF-32/UCS-4 and the UTF-8 | |||||
| * representations of the character. Otherwise, their content is | |||||
| * undefined. | |||||
| * - \c CACA_EVENT_MOUSE_PRESS, \c CACA_EVENT_MOUSE_RELEASE: the | |||||
| * \e data.mouse.button field is valid and contains the index of the | |||||
| * mouse button that was pressed. | |||||
| * - \c CACA_EVENT_MOUSE_MOTION: the \e data.mouse.x and \e data.mouse.y | |||||
| * fields are valid and contain the mouse coordinates in character | |||||
| * cells. | |||||
| * - \c CACA_EVENT_RESIZE: the \e data.resize.w and \e data.resize.h | |||||
| * fields are valid and contain the new width and height values of | |||||
| * the \e libcucul canvas attached to \e libcaca. | |||||
| * - \c CACA_EVENT_QUIT: no other field is valid. | |||||
| * | |||||
| * The result of accessing data members outside the above conditions is | |||||
| * undefined. | |||||
| */ | |||||
| union | union | ||||
| { | { | ||||
| struct { unsigned int x, y, button; } mouse; | struct { unsigned int x, y, button; } mouse; | ||||