Files
FnixLib/include/fnix/events.h
T

46 lines
1.5 KiB
C

/*
* FnixLib - cola de eventos.
*
* Además de las consultas de estado de input.h, cada ventana guarda los
* eventos recibidos en una cola que el programa puede vaciar con
* fnix_window_poll_event(). La cola conserva como máximo los 256 eventos más
* recientes: si el programa no la consulta, los más antiguos se descartan.
*/
#ifndef FNIX_EVENTS_H
#define FNIX_EVENTS_H
#include "fnix/input.h"
#include "fnix/types.h"
FNIX_BEGIN_DECLS
typedef enum FnixEventType {
FNIX_EVENT_NONE = 0,
FNIX_EVENT_WINDOW_CLOSE, /* el usuario pidió cerrar la ventana */
FNIX_EVENT_FOCUS_GAINED,
FNIX_EVENT_FOCUS_LOST,
FNIX_EVENT_KEY_DOWN, /* usa key y repeat */
FNIX_EVENT_KEY_UP, /* usa key */
FNIX_EVENT_MOUSE_BUTTON_DOWN, /* usa button, x, y */
FNIX_EVENT_MOUSE_BUTTON_UP, /* usa button, x, y */
FNIX_EVENT_MOUSE_MOVE, /* usa x, y */
FNIX_EVENT_MOUSE_WHEEL /* usa wheel, x, y */
} FnixEventType;
/* Solo son significativos los campos indicados para cada tipo; el resto vale 0. */
typedef struct FnixEvent {
FnixEventType type;
FnixKey key;
bool repeat; /* KEY_DOWN generado por autorepeat */
FnixMouseButton button;
int x, y;
int wheel; /* +1 arriba, -1 abajo */
} FnixEvent;
/* Saca el evento más antiguo de la cola. Devuelve false si está vacía. */
bool fnix_window_poll_event(FnixWindow *window, FnixEvent *event);
FNIX_END_DECLS
#endif /* FNIX_EVENTS_H */