/* * 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 */