GFXprim
2D bitmap graphics library with emphasis on speed and correctness
Loading...
Searching...
No Matches
gp_widget_app.h
1//SPDX-License-Identifier: LGPL-2.0-or-later
2
3/*
4
5 Copyright (c) 2014-2021 Cyril Hrubis <metan@ucw.cz>
6
7 */
8
9#ifndef GP_WIDGET_APP_H
10#define GP_WIDGET_APP_H
11
12#include <widgets/gp_widget_types.h>
13
24gp_widget *gp_app_layout_load(const char *app_name, gp_htable **uids);
25
37gp_widget *gp_app_layout_load2(const char *app_name,
38 const gp_widget_json_callbacks *const callbacks,
39 gp_htable **uids);
40
53gp_widget *gp_app_named_layout_load(const char *app_name, const char *layout_name,
54 const gp_widget_json_callbacks *const callbacks,
55 gp_htable **uids);
56
57
65void gp_app_on_event_set(int (*on_event)(gp_widget_event *ev));
66
67#define GP_APP_DEFAULT_EVENT_MASK ( \
68 (1<<GP_WIDGET_EVENT_FREE) \
69)
70
76void gp_app_event_mask(enum gp_widget_event_type ev_type);
77
83void gp_app_event_unmask(enum gp_widget_event_type ev_type);
84
85struct gp_app {
86 uint32_t ev_mask;
87 int (*on_event)(gp_widget_event *ev);
88};
89
90extern const struct gp_app *gp_app;
91
101static inline int gp_app_send_event(enum gp_widget_event_type ev_type, ...)
102{
103 va_list va;
104 long val;
105
106 if (!gp_app->on_event)
107 return 0;
108
109 if (!(gp_app->ev_mask & (1<<ev_type)))
110 return 0;
111
112 va_start(va, ev_type);
113 val = va_arg(va, long);
114 va_end(va);
115
116 gp_widget_event ev = {
117 .type = ev_type,
118 .val = val,
119 };
120
121 return gp_app->on_event(&ev);
122}
123
124#endif /* GP_WIDGET_APP_H */
gp_widget_event_type
Widget event type.
A hash table.
Definition gp_htable.h:40
Event structure passed to widget event handler.
Structure to pass callbacks to the JSON loader.