| public |
Inheritance Graph
graph BT
EventQueue
click EventQueue "classUtil_1_1UI_1_1EventQueue"
Description
Data structure for event handling.
The event queue manages input events that are created by different generators and consumed by different handlers.
The event generators can be the windowing system or a library that supports game controllers, for example. The different generators can register themselves as event generator using registerEventGenerator() .
Multiple event handlers can be registered using registerEventHandler() . Optionally, a filter function can be given that ensures that only specific events are given to the handler.
During process() , first the event generators are asked for new events. After that, all existing events are filtered and given to the respective event handlers.
Note: This class has to be used from the same thread as the window. For the reasons, seehttp://www.libsdl.org/docs/html/sdlpumpevents.htmlor Section 2.7 ofhttp://www.x.org/docs/X11/xlib.pdf.
Author: Benjamin Eikel
Date: 2012-09-12
Public Types
| typedef std::function< std::deque< Event >)> | event_generator_t |
| typedef std::function< bool(const Event &)> | event_handler_t |
Public Functions
| std::size_t | getNumEventsAvailable() const |
| void | pushEvent(const Event & newEvent) |
| const Event & | peekEvent() const |
| Event | popEvent() |
| void | registerEventGenerator(const event_generator_t & generator) |
| void | registerEventHandler(const event_handler_t & handler) |
| void | process() |
Documentation
typedef
Util::UI::EventQueue::event_generator_t
| public |
| typedef std::function< std::deque< Event >)> event_generator_t |
Function type for an event generator that returns an array of events.
Defined in Util/UI/EventQueue.h:49
typedef
Util::UI::EventQueue::event_handler_t
| public |
| typedef std::function< bool(const Event &)> event_handler_t |
Function type for an event handler that receives a single event. The return type indicates if the event has been handled: If the handler returnstrue, it has handled the event. If the event has not been handled (return valuefalse), it will be passed to the next handler.
Defined in Util/UI/EventQueue.h:58
function
Util::UI::EventQueue::getNumEventsAvailable
| public | const |
| std::size_t getNumEventsAvailable( | ) const |
Return the number of unprocessed events that are waiting in the event queue.
Returns
Number of events waiting for processing
Defined in Util/UI/EventQueue.h:86
function
Util::UI::EventQueue::pushEvent
| public |
| void pushEvent( | const Event & | newEvent ) |
Add a new event to the event queue.
Parameters
- newEvent
- Event that will be inserted
Defined in Util/UI/EventQueue.h:93
function
Util::UI::EventQueue::peekEvent
| public | const |
| const Event & peekEvent( | ) const |
Read the first element from the event queue without removing it.
Returns
Read-only reference to the first event
Exceptions
- std::logic_error
- if there are no events available
Defined in Util/UI/EventQueue.h:101
function
Util::UI::EventQueue::popEvent
| public |
| Event popEvent( | ) |
Remove the first element from the event queue and return it.
Returns
Element that has been the first element of the event queue
Exceptions
- std::logic_error
- if there are no events available
Defined in Util/UI/EventQueue.h:109
function
Util::UI::EventQueue::registerEventGenerator
| public |
| void registerEventGenerator( | const event_generator_t & | generator ) |
Register the given function as an event generator.
Parameters
- generator
- Event generator that creates an array of events
Defined in Util/UI/EventQueue.h:116
function
Util::UI::EventQueue::registerEventHandler
| public |
| void registerEventHandler( | const event_handler_t & | handler ) |
Register the given function as an event handler.
Parameters
- handler
- Event handler that takes a single event
Defined in Util/UI/EventQueue.h:123
function
Util::UI::EventQueue::process
| public |
| void process( | ) |
Collect generated events and pass them to handlers.
Note: This function has to be called regularly to ensure the processing of events.
Defined in Util/UI/EventQueue.h:133