Mercurial > sdl-ios-xcode
diff include/SDL_events.h @ 3407:d3baf5ac4e37
Partial fix for bug #859
Header file update from Ken for improved doxygen output
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 19 Oct 2009 13:31:58 +0000 |
parents | 00cace2d9080 |
children | 6bb9952d5029 |
line wrap: on
line diff
--- a/include/SDL_events.h Sun Oct 18 23:21:15 2009 +0000 +++ b/include/SDL_events.h Mon Oct 19 13:31:58 2009 +0000 @@ -21,9 +21,9 @@ */ /** - * \file SDL_events.h - * - * Include file for SDL event handling + * \file SDL_events.h + * + * Include file for SDL event handling. */ #ifndef _SDL_events_h @@ -50,9 +50,7 @@ #define SDL_PRESSED 1 /** - * \enum SDL_EventType - * - * \brief The types of events that can be delivered + * \brief The types of events that can be delivered. */ typedef enum { @@ -76,22 +74,22 @@ SDL_PROXIMITYIN, /**< Proximity In event */ SDL_PROXIMITYOUT, /**< Proximity Out event */ SDL_EVENT_RESERVED1, /**< Reserved for future use... */ - SDL_EVENT_RESERVED2, - SDL_EVENT_RESERVED3, - /* Events SDL_USEREVENT through SDL_MAXEVENTS-1 are for your use */ + SDL_EVENT_RESERVED2, /**< Reserved for future use... */ + SDL_EVENT_RESERVED3, /**< Reserved for future use... */ + /** Events ::SDL_USEREVENT through ::SDL_MAXEVENTS-1 are for your use */ SDL_USEREVENT = 24, - /* This last event is only for bounding internal arrays - It is the number of bits in the event mask datatype -- Uint32 + /** + * This last event is only for bounding internal arrays + * It is the number of bits in the event mask datatype -- Uint32 */ SDL_NUMEVENTS = 32 } SDL_EventType; +/*@{*/ +#define SDL_EVENTMASK(X) (1<<(X)) /** - * \enum SDL_EventMask - * * \brief Predefined event masks */ -#define SDL_EVENTMASK(X) (1<<(X)) typedef enum { SDL_WINDOWEVENTMASK = SDL_EVENTMASK(SDL_WINDOWEVENT), @@ -121,71 +119,63 @@ SDL_PROXIMITYOUTMASK = SDL_EVENTMASK(SDL_PROXIMITYOUT) } SDL_EventMask; #define SDL_ALLEVENTS 0xFFFFFFFF +/*@}*/ /** - * \struct SDL_WindowEvent - * - * \brief Window state change event data (event.window.*) + * \brief Window state change event data (event.window.*) */ typedef struct SDL_WindowEvent { - Uint8 type; /**< SDL_WINDOWEVENT */ + Uint8 type; /**< ::SDL_WINDOWEVENT */ SDL_WindowID windowID; /**< The associated window */ - Uint8 event; /**< SDL_WindowEventID */ + Uint8 event; /**< ::SDL_WindowEventID */ int data1; /**< event dependent data */ int data2; /**< event dependent data */ } SDL_WindowEvent; /** - * \struct SDL_KeyboardEvent - * - * \brief Keyboard button event structure (event.key.*) + * \brief Keyboard button event structure (event.key.*) */ typedef struct SDL_KeyboardEvent { - Uint8 type; /**< SDL_KEYDOWN or SDL_KEYUP */ + Uint8 type; /**< ::SDL_KEYDOWN or ::SDL_KEYUP */ SDL_WindowID windowID; /**< The window with keyboard focus, if any */ Uint8 which; /**< The keyboard device index */ - Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ SDL_keysym keysym; /**< The key that was pressed or released */ } SDL_KeyboardEvent; +#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32) /** - * \struct SDL_TextEditingEvent - * - * \brief Keyboard text editing event structure (event.edit.*) + * \brief Keyboard text editing event structure (event.edit.*) */ -#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32) typedef struct SDL_TextEditingEvent { - Uint8 type; /**< SDL_TEXTEDITING */ + Uint8 type; /**< ::SDL_TEXTEDITING */ char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */ int start; /**< The start cursor of selected editing text */ int length; /**< The length of selected editing text */ } SDL_TextEditingEvent; + +#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32) /** - * \struct SDL_TextInputEvent - * - * \brief Keyboard text input event structure (event.text.*) + * \brief Keyboard text input event structure (event.text.*) */ -#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32) typedef struct SDL_TextInputEvent { - Uint8 type; /**< SDL_TEXTINPUT */ + Uint8 type; /**< ::SDL_TEXTINPUT */ SDL_WindowID windowID; /**< The window with keyboard focus, if any */ Uint8 which; /**< The keyboard device index */ char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text */ } SDL_TextInputEvent; /** - * \struct SDL_MouseMotionEvent - * - * \brief Mouse motion event structure (event.motion.*) + * \brief Mouse motion event structure (event.motion.*) */ typedef struct SDL_MouseMotionEvent { - Uint8 type; /**< SDL_MOUSEMOTION */ + Uint8 type; /**< ::SDL_MOUSEMOTION */ SDL_WindowID windowID; /**< The window with mouse focus, if any */ Uint8 which; /**< The mouse device index */ Uint8 state; /**< The current button state */ @@ -203,29 +193,25 @@ } SDL_MouseMotionEvent; /** - * \struct SDL_MouseButtonEvent - * - * \brief Mouse button event structure (event.button.*) + * \brief Mouse button event structure (event.button.*) */ typedef struct SDL_MouseButtonEvent { - Uint8 type; /**< SDL_MOUSEBUTTONDOWN or SDL_MOUSEBUTTONUP */ + Uint8 type; /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */ SDL_WindowID windowID; /**< The window with mouse focus, if any */ Uint8 which; /**< The mouse device index */ Uint8 button; /**< The mouse button index */ - Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ int x; /**< X coordinate, relative to window */ int y; /**< Y coordinate, relative to window */ } SDL_MouseButtonEvent; /** - * \struct SDL_MouseWheelEvent - * - * \brief Mouse wheel event structure (event.wheel.*) + * \brief Mouse wheel event structure (event.wheel.*) */ typedef struct SDL_MouseWheelEvent { - Uint8 type; /**< SDL_MOUSEWHEEL */ + Uint8 type; /**< ::SDL_MOUSEWHEEL */ SDL_WindowID windowID; /**< The window with mouse focus, if any */ Uint8 which; /**< The mouse device index */ int x; /**< The amount scrolled horizontally */ @@ -233,26 +219,22 @@ } SDL_MouseWheelEvent; /** - * \struct SDL_JoyAxisEvent - * - * \brief Joystick axis motion event structure (event.jaxis.*) + * \brief Joystick axis motion event structure (event.jaxis.*) */ typedef struct SDL_JoyAxisEvent { - Uint8 type; /**< SDL_JOYAXISMOTION */ + Uint8 type; /**< ::SDL_JOYAXISMOTION */ Uint8 which; /**< The joystick device index */ Uint8 axis; /**< The joystick axis index */ int value; /**< The axis value (range: -32768 to 32767) */ } SDL_JoyAxisEvent; /** - * \struct SDL_JoyBallEvent - * - * \brief Joystick trackball motion event structure (event.jball.*) + * \brief Joystick trackball motion event structure (event.jball.*) */ typedef struct SDL_JoyBallEvent { - Uint8 type; /**< SDL_JOYBALLMOTION */ + Uint8 type; /**< ::SDL_JOYBALLMOTION */ Uint8 which; /**< The joystick device index */ Uint8 ball; /**< The joystick trackball index */ int xrel; /**< The relative motion in the X direction */ @@ -260,72 +242,64 @@ } SDL_JoyBallEvent; /** - * \struct SDL_JoyHatEvent - * - * \brief Joystick hat position change event structure (event.jhat.*) + * \brief Joystick hat position change event structure (event.jhat.*) */ typedef struct SDL_JoyHatEvent { - Uint8 type; /**< SDL_JOYHATMOTION */ + Uint8 type; /**< ::SDL_JOYHATMOTION */ Uint8 which; /**< The joystick device index */ Uint8 hat; /**< The joystick hat index */ - Uint8 value; /**< The hat position value: - SDL_HAT_LEFTUP SDL_HAT_UP SDL_HAT_RIGHTUP - SDL_HAT_LEFT SDL_HAT_CENTERED SDL_HAT_RIGHT - SDL_HAT_LEFTDOWN SDL_HAT_DOWN SDL_HAT_RIGHTDOWN - Note that zero means the POV is centered. + Uint8 value; /**< The hat position value. + * \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP + * \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT + * \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN + * + * Note that zero means the POV is centered. */ } SDL_JoyHatEvent; /** - * \struct SDL_JoyButtonEvent - * - * \brief Joystick button event structure (event.jbutton.*) + * \brief Joystick button event structure (event.jbutton.*) */ typedef struct SDL_JoyButtonEvent { - Uint8 type; /**< SDL_JOYBUTTONDOWN or SDL_JOYBUTTONUP */ + Uint8 type; /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */ Uint8 which; /**< The joystick device index */ Uint8 button; /**< The joystick button index */ - Uint8 state; /**< SDL_PRESSED or SDL_RELEASED */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ } SDL_JoyButtonEvent; /** - * \struct SDL_QuitEvent - * - * \brief The "quit requested" event + * \brief The "quit requested" event */ typedef struct SDL_QuitEvent { - Uint8 type; /**< SDL_QUIT */ + Uint8 type; /**< ::SDL_QUIT */ } SDL_QuitEvent; /** - * \struct SDL_UserEvent - * - * \brief A user-defined event type (event.user.*) + * \brief A user-defined event type (event.user.*) */ typedef struct SDL_UserEvent { - Uint8 type; /**< SDL_USEREVENT through SDL_NUMEVENTS-1 */ + Uint8 type; /**< ::SDL_USEREVENT through ::SDL_NUMEVENTS-1 */ SDL_WindowID windowID; /**< The associated window if any*/ int code; /**< User defined event code */ void *data1; /**< User defined data pointer */ void *data2; /**< User defined data pointer */ } SDL_UserEvent; -/** - * \struct SDL_SysWMEvent - * - * \brief A video driver dependent system event (event.syswm.*) - * - * \note If you want to use this event, you should include SDL_syswm.h - */ struct SDL_SysWMmsg; typedef struct SDL_SysWMmsg SDL_SysWMmsg; + +/** + * \brief A video driver dependent system event (event.syswm.*) + * + * \note If you want to use this event, you should include SDL_syswm.h. + */ typedef struct SDL_SysWMEvent { - Uint8 type; /**< SDL_SYSWMEVENT */ + Uint8 type; /**< ::SDL_SYSWMEVENT */ SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */ } SDL_SysWMEvent; @@ -339,8 +313,16 @@ int y; } SDL_ProximityEvent; -/* Typedefs for backwards compatibility */ #ifndef SDL_NO_COMPAT +/** + * \addtogroup Compatibility + */ +/*@{*/ + +/** + * \name Typedefs for backwards compatibility + */ +/*@{*/ typedef struct SDL_ActiveEvent { Uint8 type; @@ -354,12 +336,13 @@ int w; int h; } SDL_ResizeEvent; +/*@}*/ + +/*@}*//*Compatibility*/ #endif /** - * \union SDL_Event - * - * \brief General event structure + * \brief General event structure */ typedef union SDL_Event { @@ -380,129 +363,164 @@ SDL_SysWMEvent syswm; /**< System dependent window event data */ SDL_ProximityEvent proximity; /**< Proximity In or Out event */ - /* Temporarily here for backwards compatibility */ + /** Temporarily here for backwards compatibility */ + /*@{*/ #ifndef SDL_NO_COMPAT SDL_ActiveEvent active; SDL_ResizeEvent resize; #endif + /*@}*/ } SDL_Event; /* Function prototypes */ -/* Pumps the event loop, gathering events from the input devices. - This function updates the event queue and internal input device state. - This should only be run in the thread that sets the video mode. -*/ +/** + * Pumps the event loop, gathering events from the input devices. + * + * This function updates the event queue and internal input device state. + * + * This should only be run in the thread that sets the video mode. + */ extern DECLSPEC void SDLCALL SDL_PumpEvents(void); -/* Checks the event queue for messages and optionally returns them. - If 'action' is SDL_ADDEVENT, up to 'numevents' events will be added to - the back of the event queue. - If 'action' is SDL_PEEKEVENT, up to 'numevents' events at the front - of the event queue, matching 'mask', will be returned and will not - be removed from the queue. - If 'action' is SDL_GETEVENT, up to 'numevents' events at the front - of the event queue, matching 'mask', will be returned and will be - removed from the queue. - This function returns the number of events actually stored, or -1 - if there was an error. This function is thread-safe. -*/ +/*@{*/ typedef enum { SDL_ADDEVENT, SDL_PEEKEVENT, SDL_GETEVENT } SDL_eventaction; -/* */ + +/** + * Checks the event queue for messages and optionally returns them. + * + * If \c action is ::SDL_ADDEVENT, up to \c numevents events will be added to + * the back of the event queue. + * + * If \c action is ::SDL_PEEKEVENT, up to \c numevents events at the front + * of the event queue, matching \c mask, will be returned and will not + * be removed from the queue. + * + * If \c action is ::SDL_GETEVENT, up to \c numevents events at the front + * of the event queue, matching \c mask, will be returned and will be + * removed from the queue. + * + * \return The number of events actually stored, or -1 if there was an error. + * + * This function is thread-safe. + */ extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents, SDL_eventaction action, Uint32 mask); +/*@}*/ -/* Checks to see if certain event types are in the event queue. +/** + * Checks to see if certain event types are in the event queue. */ extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 mask); -/* Polls for currently pending events, and returns 1 if there are any pending - events, or 0 if there are none available. If 'event' is not NULL, the next - event is removed from the queue and stored in that area. +/** + * \brief Polls for currently pending events. + * + * \return 1 if there are any pending events, or 0 if there are none available. + * + * \param event If not NULL, the next event is removed from the queue and + * stored in that area. */ extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event); -/* Waits indefinitely for the next available event, returning 1, or 0 if there - was an error while waiting for events. If 'event' is not NULL, the next - event is removed from the queue and stored in that area. +/** + * \brief Waits indefinitely for the next available event. + * + * \return 1, or 0 if there was an error while waiting for events. + * + * \param event If not NULL, the next event is removed from the queue and + * stored in that area. */ extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event); -/* Waits until the specified timeout (in milliseconds) for the next available - event, returning 1, or 0 if there was an error while waiting for events. If - 'event' is not NULL, the next event is removed from the queue and stored in - that area. +/** + * \brief Waits until the specified timeout (in milliseconds) for the next + * available event. + * + * \return 1, or 0 if there was an error while waiting for events. + * + * \param event If not NULL, the next event is removed from the queue and + * stored in that area. */ extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event, int timeout); -/* Add an event to the event queue. - This function returns 1 on success, 0 if the event was filtered, - or -1 if the event queue was full or there was some other error. +/** + * \brief Add an event to the event queue. + * + * \return 1 on success, 0 if the event was filtered, or -1 if the event queue + * was full or there was some other error. */ extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event); -/* - This function sets up a filter to process all events before they - change internal state and are posted to the internal event queue. +typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event); - The filter is protypted as: -*/ -typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event); -/* - If the filter returns 1, then the event will be added to the internal queue. - If it returns 0, then the event will be dropped from the queue, but the - internal state will still be updated. This allows selective filtering of - dynamically arriving events. - - WARNING: Be very careful of what you do in the event filter function, as - it may run in a different thread! - - There is one caveat when dealing with the SDL_QUITEVENT event type. The - event filter is only called when the window manager desires to close the - application window. If the event filter returns 1, then the window will - be closed, otherwise the window will remain open if possible. - If the quit event is generated by an interrupt signal, it will bypass the - internal queue and be delivered to the application at the next event poll. -*/ +/** + * Sets up a filter to process all events before they change internal state and + * are posted to the internal event queue. + * + * The filter is protypted as: + * \code + * int SDL_EventFilter(void *userdata, SDL_Event * event); + * \endcode + * + * If the filter returns 1, then the event will be added to the internal queue. + * If it returns 0, then the event will be dropped from the queue, but the + * internal state will still be updated. This allows selective filtering of + * dynamically arriving events. + * + * \warning Be very careful of what you do in the event filter function, as + * it may run in a different thread! + * + * There is one caveat when dealing with the ::SDL_QUITEVENT event type. The + * event filter is only called when the window manager desires to close the + * application window. If the event filter returns 1, then the window will + * be closed, otherwise the window will remain open if possible. + * + * If the quit event is generated by an interrupt signal, it will bypass the + * internal queue and be delivered to the application at the next event poll. + */ extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter, void *userdata); -/* - Return the current event filter - can be used to "chain" filters. - If there is no event filter set, this function returns SDL_FALSE. -*/ +/** + * Return the current event filter - can be used to "chain" filters. + * If there is no event filter set, this function returns SDL_FALSE. + */ extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter, void **userdata); -/* - Run the filter function on the current event queue, removing any - events for which the filter returns 0. -*/ +/** + * Run the filter function on the current event queue, removing any + * events for which the filter returns 0. + */ extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter, void *userdata); -/* - This function allows you to set the state of processing certain events. - If 'state' is set to SDL_IGNORE, that event will be automatically dropped - from the event queue and will not event be filtered. - If 'state' is set to SDL_ENABLE, that event will be processed normally. - If 'state' is set to SDL_QUERY, SDL_EventState() will return the - current processing state of the specified event. -*/ +/*@{*/ #define SDL_QUERY -1 #define SDL_IGNORE 0 #define SDL_DISABLE 0 #define SDL_ENABLE 1 + +/** + * This function allows you to set the state of processing certain events. + * - If \c state is set to ::SDL_IGNORE, that event will be automatically + * dropped from the event queue and will not event be filtered. + * - If \c state is set to ::SDL_ENABLE, that event will be processed + * normally. + * - If \c state is set to ::SDL_QUERY, SDL_EventState() will return the + * current processing state of the specified event. + */ extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint8 type, int state); - +/*@}*/ /* Ends C function definitions when using C++ */ #ifdef __cplusplus