GFXprim
2D bitmap graphics library with emphasis on speed and correctness
Loading...
Searching...
No Matches
gp_app_event.h
Go to the documentation of this file.
1//SPDX-License-Identifier: LGPL-2.0-or-later
2
3/*
4
5 Copyright (c) 2014-2024 Cyril Hrubis <metan@ucw.cz>
6
7 */
8
38#ifndef GP_APP_EVENT_H
39#define GP_APP_EVENT_H
40
42
72void gp_app_on_event_set(int (*on_event)(gp_widget_event *ev));
73
75#define GP_APP_EVENT_DEFAULT_MASK (1<<GP_WIDGET_EVENT_FREE)
76
83
90
91struct gp_app {
92 uint32_t ev_mask;
93 int (*on_event)(gp_widget_event *ev);
94};
95
96extern const struct gp_app *gp_app;
97
108static inline int gp_app_send_event(enum gp_widget_event_type ev_type, ...)
109{
110 va_list va;
111 long val;
112
113 if (!gp_app->on_event)
114 return 0;
115
116 if (!(gp_app->ev_mask & (1<<ev_type)))
117 return 0;
118
119 va_start(va, ev_type);
120 val = va_arg(va, long);
121 va_end(va);
122
123 gp_widget_event ev = {
124 .type = ev_type,
125 .val = val,
126 };
127
128 return gp_app->on_event(&ev);
129}
130
131#endif /* GP_APP_EVENT_H */
void gp_app_event_mask(enum gp_widget_event_type ev_type)
Masks out an app event.
static int gp_app_send_event(enum gp_widget_event_type ev_type,...)
Sends an event to the application.
void gp_app_on_event_set(int(*on_event)(gp_widget_event *ev))
Sets an application event hanlder.
void gp_app_event_unmask(enum gp_widget_event_type ev_type)
Unmasks an app event.
Widget event handling.
gp_widget_event_type
Widget event type.
Event structure passed to widget event handler.
uint16_t type
An event type, enum gp_widget_event_type.