1 #include "declarations.h"
2 #include "dsl_errno.h"
3 #include "dsl_shr.h"
4 #include "dsl_cb.h"
5
6
7
8 /* REMEMBER to check that structures.h::d_par_t::dp has enough room when adding
9 more variables to dsl_cb_*() functions */
10
11 #if ! defined(PROG_DISABLE_GUI)
dsl_cb_main_loop(struct d_par * d)12 void dsl_cb_main_loop(struct d_par *d) {
13 d->c = 0;
14
15 d->r = dsl_run_sub(d);
16 }
17
dsl_cb_expose(__UNUSED__ struct w_par * w,struct d_par * d)18 void dsl_cb_expose(__UNUSED__ struct w_par *w, struct d_par *d) {
19 d->c = 0;
20
21 d->r = dsl_run_sub(d);
22 }
23
dsl_cb_key_press(struct w_par * w,struct d_par * d)24 void dsl_cb_key_press(struct w_par *w, struct d_par *d) {
25 d->dp[0].c = DSL_PARAM_TYPE_NUMBER;
26 d->dp[0].d = DSL_NUMBER_TYPE_INT;
27 d->dp[0].n = (double) w->x;
28
29 d->dp[1].c = DSL_PARAM_TYPE_NUMBER;
30 d->dp[1].d = DSL_NUMBER_TYPE_INT;
31 d->dp[1].n = (double) w->y;
32
33 d->dp[2].c = DSL_PARAM_TYPE_NUMBER;
34 d->dp[2].d = DSL_NUMBER_TYPE_INT;
35 d->dp[2].n = (double) w->x_root;
36
37 d->dp[3].c = DSL_PARAM_TYPE_NUMBER;
38 d->dp[3].d = DSL_NUMBER_TYPE_INT;
39 d->dp[3].n = (double) w->y_root;
40
41 d->dp[4].c = DSL_PARAM_TYPE_NUMBER;
42 d->dp[4].d = DSL_NUMBER_TYPE_UINT;
43 d->dp[4].n = (double) w->state;
44
45 d->dp[5].c = DSL_PARAM_TYPE_NUMBER;
46 d->dp[5].d = DSL_NUMBER_TYPE_UINT;
47 d->dp[5].n = (double) w->keycode;
48
49 d->dp[6].c = DSL_PARAM_TYPE_STRING;
50 d->dp[6].s = w->key;
51 d->dp[6].t = w->key_t;
52
53 d->c = 7;
54
55 d->r = dsl_run_sub(d);
56 }
57
dsl_cb_key_release(struct w_par * w,struct d_par * d)58 void dsl_cb_key_release(struct w_par *w, struct d_par *d) {
59 d->dp[0].c = DSL_PARAM_TYPE_NUMBER;
60 d->dp[0].d = DSL_NUMBER_TYPE_INT;
61 d->dp[0].n = (double) w->x;
62
63 d->dp[1].c = DSL_PARAM_TYPE_NUMBER;
64 d->dp[1].d = DSL_NUMBER_TYPE_INT;
65 d->dp[1].n = (double) w->y;
66
67 d->dp[2].c = DSL_PARAM_TYPE_NUMBER;
68 d->dp[2].d = DSL_NUMBER_TYPE_INT;
69 d->dp[2].n = (double) w->x_root;
70
71 d->dp[3].c = DSL_PARAM_TYPE_NUMBER;
72 d->dp[3].d = DSL_NUMBER_TYPE_INT;
73 d->dp[3].n = (double) w->y_root;
74
75 d->dp[4].c = DSL_PARAM_TYPE_NUMBER;
76 d->dp[4].d = DSL_NUMBER_TYPE_UINT;
77 d->dp[4].n = (double) w->state;
78
79 d->dp[5].c = DSL_PARAM_TYPE_NUMBER;
80 d->dp[5].d = DSL_NUMBER_TYPE_UINT;
81 d->dp[5].n = (double) w->keycode;
82
83 d->dp[6].c = DSL_PARAM_TYPE_STRING;
84 d->dp[6].s = w->key;
85 d->dp[6].t = w->key_t;
86
87 d->c = 7;
88
89 d->r = dsl_run_sub(d);
90 }
91
dsl_cb_button_press(struct w_par * w,struct d_par * d)92 void dsl_cb_button_press(struct w_par *w, struct d_par *d) {
93 d->dp[0].c = DSL_PARAM_TYPE_NUMBER;
94 d->dp[0].d = DSL_NUMBER_TYPE_INT;
95 d->dp[0].n = (double) w->x;
96
97 d->dp[1].c = DSL_PARAM_TYPE_NUMBER;
98 d->dp[1].d = DSL_NUMBER_TYPE_INT;
99 d->dp[1].n = (double) w->y;
100
101 d->dp[2].c = DSL_PARAM_TYPE_NUMBER;
102 d->dp[2].d = DSL_NUMBER_TYPE_INT;
103 d->dp[2].n = (double) w->x_root;
104
105 d->dp[3].c = DSL_PARAM_TYPE_NUMBER;
106 d->dp[3].d = DSL_NUMBER_TYPE_INT;
107 d->dp[3].n = (double) w->y_root;
108
109 d->dp[4].c = DSL_PARAM_TYPE_NUMBER;
110 d->dp[4].d = DSL_NUMBER_TYPE_UINT;
111 d->dp[4].n = (double) w->state;
112
113 d->dp[5].c = DSL_PARAM_TYPE_NUMBER;
114 d->dp[5].d = DSL_NUMBER_TYPE_UINT;
115 d->dp[5].n = (double) w->button;
116
117 d->c = 6;
118
119 d->r = dsl_run_sub(d);
120 }
121
dsl_cb_button_release(struct w_par * w,struct d_par * d)122 void dsl_cb_button_release(struct w_par *w, struct d_par *d) {
123 d->dp[0].c = DSL_PARAM_TYPE_NUMBER;
124 d->dp[0].d = DSL_NUMBER_TYPE_INT;
125 d->dp[0].n = (double) w->x;
126
127 d->dp[1].c = DSL_PARAM_TYPE_NUMBER;
128 d->dp[1].d = DSL_NUMBER_TYPE_INT;
129 d->dp[1].n = (double) w->y;
130
131 d->dp[2].c = DSL_PARAM_TYPE_NUMBER;
132 d->dp[2].d = DSL_NUMBER_TYPE_INT;
133 d->dp[2].n = (double) w->x_root;
134
135 d->dp[3].c = DSL_PARAM_TYPE_NUMBER;
136 d->dp[3].d = DSL_NUMBER_TYPE_INT;
137 d->dp[3].n = (double) w->y_root;
138
139 d->dp[4].c = DSL_PARAM_TYPE_NUMBER;
140 d->dp[4].d = DSL_NUMBER_TYPE_UINT;
141 d->dp[4].n = (double) w->state;
142
143 d->dp[5].c = DSL_PARAM_TYPE_NUMBER;
144 d->dp[5].d = DSL_NUMBER_TYPE_UINT;
145 d->dp[5].n = (double) w->button;
146
147 d->c = 6;
148
149 d->r = dsl_run_sub(d);
150 }
151
dsl_cb_client_message(__UNUSED__ struct w_par * w,struct d_par * d)152 void dsl_cb_client_message(__UNUSED__ struct w_par *w, struct d_par *d) {
153 d->dp[0].c = DSL_PARAM_TYPE_NUMBER;
154 d->dp[0].d = DSL_NUMBER_TYPE_LONG;
155 d->dp[0].n = (double) w->data.l[0];
156
157 d->dp[1].c = DSL_PARAM_TYPE_NUMBER;
158 d->dp[1].d = DSL_NUMBER_TYPE_LONG;
159 d->dp[1].n = (double) w->data.l[1];
160
161 d->dp[2].c = DSL_PARAM_TYPE_NUMBER;
162 d->dp[2].d = DSL_NUMBER_TYPE_LONG;
163 d->dp[2].n = (double) w->data.l[2];
164
165 d->dp[3].c = DSL_PARAM_TYPE_NUMBER;
166 d->dp[3].d = DSL_NUMBER_TYPE_LONG;
167 d->dp[3].n = (double) w->data.l[3];
168
169 d->dp[4].c = DSL_PARAM_TYPE_NUMBER;
170 d->dp[4].d = DSL_NUMBER_TYPE_LONG;
171 d->dp[4].n = (double) w->data.l[4];
172
173 d->c = 5;
174
175 d->r = dsl_run_sub(d);
176 }
177
dsl_cb_configure_notify(__UNUSED__ struct w_par * w,struct d_par * d)178 void dsl_cb_configure_notify(__UNUSED__ struct w_par *w, struct d_par *d) {
179 d->c = 0;
180
181 d->r = dsl_run_sub(d);
182 }
183
dsl_cb_destroy_notify(__UNUSED__ struct w_par * w,struct d_par * d)184 void dsl_cb_destroy_notify(__UNUSED__ struct w_par *w, struct d_par *d) {
185 d->c = 0;
186
187 d->r = dsl_run_sub(d);
188 }
189
dsl_cb_motion_notify(struct w_par * w,struct d_par * d)190 void dsl_cb_motion_notify(struct w_par *w, struct d_par *d) {
191 d->dp[0].c = DSL_PARAM_TYPE_NUMBER;
192 d->dp[0].d = DSL_NUMBER_TYPE_INT;
193 d->dp[0].n = (double) w->x;
194
195 d->dp[1].c = DSL_PARAM_TYPE_NUMBER;
196 d->dp[1].d = DSL_NUMBER_TYPE_INT;
197 d->dp[1].n = (double) w->y;
198
199 d->dp[2].c = DSL_PARAM_TYPE_NUMBER;
200 d->dp[2].d = DSL_NUMBER_TYPE_INT;
201 d->dp[2].n = (double) w->x_root;
202
203 d->dp[3].c = DSL_PARAM_TYPE_NUMBER;
204 d->dp[3].d = DSL_NUMBER_TYPE_INT;
205 d->dp[3].n = (double) w->y_root;
206
207 d->dp[4].c = DSL_PARAM_TYPE_NUMBER;
208 d->dp[4].d = DSL_NUMBER_TYPE_UINT;
209 d->dp[4].n = (double) w->pressed;
210
211 d->dp[5].c = DSL_PARAM_TYPE_NUMBER;
212 d->dp[5].d = DSL_NUMBER_TYPE_CHAR;
213 d->dp[5].n = (double) w->detail;
214
215 d->c = 6;
216
217 d->r = dsl_run_sub(d);
218 }
219
dsl_cb_map_notify(__UNUSED__ struct w_par * w,struct d_par * d)220 void dsl_cb_map_notify(__UNUSED__ struct w_par *w, struct d_par *d) {
221 d->c = 0;
222
223 d->r = dsl_run_sub(d);
224 }
225
dsl_cb_unmap_notify(__UNUSED__ struct w_par * w,struct d_par * d)226 void dsl_cb_unmap_notify(__UNUSED__ struct w_par *w, struct d_par *d) {
227 d->c = 0;
228
229 d->r = dsl_run_sub(d);
230 }
231
dsl_cb_open_notify(unsigned int h,struct d_par * d)232 void dsl_cb_open_notify(unsigned int h, struct d_par *d) {
233 d->dp[0].c = DSL_PARAM_TYPE_HANDLE;
234 d->dp[0].h = h;
235
236 d->c = 1;
237
238 d->r = dsl_run_sub(d);
239 }
240 #endif
241 #if ! defined(PROG_DISABLE_GUI) && ! defined(PROG_DISABLE_WIDGET)
dsl_cb_widget_pushbutton_push(__UNUSED__ struct w_par * w,struct d_par * d)242 void dsl_cb_widget_pushbutton_push(__UNUSED__ struct w_par *w, struct d_par *d) {
243 d->r = dsl_run_sub(d);
244 }
245
dsl_cb_widget_slideswitch_slide(__UNUSED__ struct w_par * w,struct d_par * d)246 void dsl_cb_widget_slideswitch_slide(__UNUSED__ struct w_par *w, struct d_par *d) {
247 d->r = dsl_run_sub(d);
248 }
249
dsl_cb_widget_toggleswitch_toggle(__UNUSED__ struct w_par * w,struct d_par * d)250 void dsl_cb_widget_toggleswitch_toggle(__UNUSED__ struct w_par *w, struct d_par *d) {
251 d->r = dsl_run_sub(d);
252 }
253
dsl_cb_widget_turnswitch_turn(__UNUSED__ struct w_par * w,struct d_par * d)254 void dsl_cb_widget_turnswitch_turn(__UNUSED__ struct w_par *w, struct d_par *d) {
255 d->r = dsl_run_sub(d);
256 }
257 #endif
258 #if ! defined(PROG_DISABLE_GUI) && ! defined(PROG_DISABLE_MENU)
dsl_cb_menu_item_select(__UNUSED__ struct w_par * w,struct d_par * d)259 void dsl_cb_menu_item_select(__UNUSED__ struct w_par *w, struct d_par *d) {
260 d->r = dsl_run_sub(d);
261 }
262 #endif
263 #if ! defined(PROG_DISABLE_INPUT)
dsl_cb_input_button_press(__UNUSED__ struct w_par * w,struct d_par * d)264 void dsl_cb_input_button_press(__UNUSED__ struct w_par *w, struct d_par *d) {
265 d->r = dsl_run_sub(d);
266 }
267
dsl_cb_input_button_release(__UNUSED__ struct w_par * w,struct d_par * d)268 void dsl_cb_input_button_release(__UNUSED__ struct w_par *w, struct d_par *d) {
269 d->r = dsl_run_sub(d);
270 }
271
dsl_cb_input_key_press(__UNUSED__ struct w_par * w,struct d_par * d)272 void dsl_cb_input_key_press(__UNUSED__ struct w_par *w, struct d_par *d) {
273 d->r = dsl_run_sub(d);
274 }
275
dsl_cb_input_key_release(__UNUSED__ struct w_par * w,struct d_par * d)276 void dsl_cb_input_key_release(__UNUSED__ struct w_par *w, struct d_par *d) {
277 d->r = dsl_run_sub(d);
278 }
279
dsl_cb_input_motion_xy(__UNUSED__ struct w_par * w,struct d_par * d)280 void dsl_cb_input_motion_xy(__UNUSED__ struct w_par *w, struct d_par *d) {
281 d->r = dsl_run_sub(d);
282 }
283
dsl_cb_input_motion_xyz(__UNUSED__ struct w_par * w,struct d_par * d)284 void dsl_cb_input_motion_xyz(__UNUSED__ struct w_par *w, struct d_par *d) {
285 d->r = dsl_run_sub(d);
286 }
287
dsl_cb_input_motion_angle_xy(__UNUSED__ struct w_par * w,struct d_par * d)288 void dsl_cb_input_motion_angle_xy(__UNUSED__ struct w_par *w, struct d_par *d) {
289 d->r = dsl_run_sub(d);
290 }
291 #endif
dsl_cb_param_uint_add(struct d_par * d,unsigned int n,unsigned int f)292 void dsl_cb_param_uint_add(struct d_par *d, unsigned int n, unsigned int f) {
293 d->dp[f].c = DSL_PARAM_TYPE_NUMBER;
294 d->dp[f].d = DSL_NUMBER_TYPE_UINT;
295 d->dp[f].n = (double) n;
296
297 d->c = f + 1;
298 }
299
dsl_cb_param_float_add(struct d_par * d,float n,unsigned int f)300 void dsl_cb_param_float_add(struct d_par *d, float n, unsigned int f) {
301 d->dp[f].c = DSL_PARAM_TYPE_NUMBER;
302 d->dp[f].d = DSL_NUMBER_TYPE_FLOAT;
303 d->dp[f].n = (double) n;
304
305 d->c = f + 1;
306 }
307
dsl_cb_param_string_add(struct d_par * d,char * n,size_t t,unsigned int f)308 void dsl_cb_param_string_add(struct d_par *d, char *n, size_t t, unsigned int f) {
309 d->dp[f].c = DSL_PARAM_TYPE_STRING;
310 d->dp[f].s = n;
311 d->dp[f].t = t;
312
313 d->c = f + 1;
314 }
315