1
2 #include "deliriumUI.h"
3
4 //------------------------------------------------------------------
5 // Add Widget
6
addDeliriumUIWidget(deliriumUI * deliriumUI_window,deliriumUI_WidgetType widgetType,int group,float _x,float _y,float _w,float _h,char * _label,int port_number)7 int addDeliriumUIWidget(deliriumUI* deliriumUI_window, deliriumUI_WidgetType widgetType, int group, float _x, float _y, float _w, float _h, char* _label, int port_number)
8 {
9 deliriumUIWidget* deliriumUIWidgets = deliriumUI_window->deliriumUIWidgets;
10 int numberOfUIWidgets = deliriumUI_window->numberOfUIWidgets;
11
12 deliriumUIWidgets = realloc( deliriumUIWidgets, sizeof(deliriumUIWidget) * numberOfUIWidgets );
13
14 deliriumUI_window->deliriumUIWidgets = deliriumUIWidgets;
15
16 deliriumUIWidgets[numberOfUIWidgets-1].type = widgetType;
17 deliriumUIWidgets[numberOfUIWidgets-1].x = _x;
18 deliriumUIWidgets[numberOfUIWidgets-1].x = _x;
19 deliriumUIWidgets[numberOfUIWidgets-1].y = _y;
20 deliriumUIWidgets[numberOfUIWidgets-1].w = _w;
21 deliriumUIWidgets[numberOfUIWidgets-1].h = _h;
22 deliriumUIWidgets[numberOfUIWidgets-1].pressed = false;
23 deliriumUIWidgets[numberOfUIWidgets-1].hover = false;
24 deliriumUIWidgets[numberOfUIWidgets-1].label = _label;
25 deliriumUIWidgets[numberOfUIWidgets-1].min = 0;
26 deliriumUIWidgets[numberOfUIWidgets-1].max = 1;
27 deliriumUIWidgets[numberOfUIWidgets-1].increment = 0.01;
28 deliriumUIWidgets[numberOfUIWidgets-1].toggleMode = false;
29 deliriumUIWidgets[numberOfUIWidgets-1].clickTop = 0;
30 deliriumUIWidgets[numberOfUIWidgets-1].clickBottom = 0;
31 deliriumUIWidgets[numberOfUIWidgets-1].group= group;
32 deliriumUIWidgets[numberOfUIWidgets-1].port_number = port_number;
33
34
35 deliriumUIWidgets[numberOfUIWidgets-1].values[0] = 0;
36 deliriumUIWidgets[numberOfUIWidgets-1].values[1] = 0;
37 deliriumUIWidgets[numberOfUIWidgets-1].values[2] = 0;
38 deliriumUIWidgets[numberOfUIWidgets-1].values[3] = 0;
39 deliriumUIWidgets[numberOfUIWidgets-1].current_value = 0;
40
41
42 switch (widgetType)
43 {
44 case deliriumUI_Fader:
45 deliriumUIWidgets[numberOfUIWidgets-1].clickTop = 15;
46 deliriumUIWidgets[numberOfUIWidgets-1].clickBottom = 20;
47 break;
48
49 case deliriumUI_MicroKnob:
50 deliriumUIWidgets[numberOfUIWidgets-1].clickTop = 20;
51 deliriumUIWidgets[numberOfUIWidgets-1].clickBottom = 20;
52 break;
53
54 case deliriumUI_Switch:
55 deliriumUIWidgets[numberOfUIWidgets-1].toggleMode = true;
56 break;
57 }
58
59
60
61 numberOfUIWidgets++;
62
63 deliriumUI_window->numberOfUIWidgets = numberOfUIWidgets;
64
65 return numberOfUIWidgets-1; // return handle number
66 }
67
68
69
70 //------------------------------------------------------------------
71 // set packing grid size
72
setDeliriumUIGridSize(deliriumUI * deliriumUI_window,int _w,int _h,int _x,int _y)73 void setDeliriumUIGridSize(deliriumUI* deliriumUI_window, int _w, int _h, int _x, int _y)
74 {
75 deliriumUI_window->originalWidth = _w;
76 deliriumUI_window->originalHeight = _h;
77 deliriumUI_window->currentWidth = _w;
78 deliriumUI_window->currentHeight = _h;
79 deliriumUI_window->gridX = _x;
80 deliriumUI_window->gridY = _y;
81 deliriumUI_window->widgetWidth = _w / _x;
82 deliriumUI_window->widgetHeight = _h / _y;
83 }
84
85 //------------------------------------------------------------------
86 // set current window size
87
setDeliriumUICurrentWindowSize(deliriumUI * deliriumUI_window,int _w,int _h)88 void setDeliriumUICurrentWindowSize(deliriumUI* deliriumUI_window, int _w, int _h)
89 {
90 deliriumUI_window->currentWidth = _w;
91 deliriumUI_window->currentHeight = _h;
92 deliriumUI_window->widgetWidth = _w / deliriumUI_window->gridX;
93 deliriumUI_window->widgetHeight = _h / deliriumUI_window->gridY;
94 }
95
96 //------------------------------------------------------------------
97 // Display widget
displayDeliriumUIWidget(deliriumUI * deliriumUI_window,cairo_t * cr,int widgetNumber)98 void displayDeliriumUIWidget(deliriumUI* deliriumUI_window, cairo_t* cr, int widgetNumber)
99 {
100 deliriumUIWidget* deliriumUIWidgets = deliriumUI_window->deliriumUIWidgets;
101
102 deliriumUI_WidgetType type = deliriumUIWidgets[widgetNumber].type;
103
104 switch (type)
105 {
106 case deliriumUI_Button:
107 displayDiliriumUIButton(deliriumUI_window, cr, widgetNumber);
108 break;
109
110 case deliriumUI_Knob:
111 displayDiliriumUIKnob(deliriumUI_window, cr, widgetNumber);
112 break;
113
114 case deliriumUI_MicroKnob:
115 displayDiliriumUIMicroKnob(deliriumUI_window, cr, widgetNumber);
116 break;
117
118 case deliriumUI_Fader:
119 displayDiliriumUIFader(deliriumUI_window, cr, widgetNumber);
120 break;
121
122 case deliriumUI_Switch:
123 displayDiliriumUISwitch(deliriumUI_window, cr, widgetNumber);
124 break;
125
126 case deliriumUI_ADSR:
127 displayDiliriumUIADSR(deliriumUI_window, cr, widgetNumber);
128 break;
129 }
130 }
131
132 //------------------------------------------------------------------
133 // Display all widgets
134
displayAllDeliriumUIWidgets(deliriumUI * deliriumUI_window,cairo_t * cr)135 void displayAllDeliriumUIWidgets(deliriumUI* deliriumUI_window, cairo_t* cr)
136 {
137 deliriumUIWidget* deliriumUIWidgets = deliriumUI_window->deliriumUIWidgets;
138 int numberOfUIWidgets = deliriumUI_window->numberOfUIWidgets;
139
140 cairo_pattern_t *linpat;
141
142 linpat = cairo_pattern_create_linear (0,0,0,500);
143 cairo_pattern_add_color_stop_rgb(linpat, 0, 0.1, 0, 0);
144 cairo_pattern_add_color_stop_rgb(linpat, 0.5, 0.3, 0, 0);
145 cairo_pattern_add_color_stop_rgb(linpat, 1, 0.2, 0, 0);
146
147 /* Set surface to opaque color (r, g, b) */
148 // cairo_set_source_rgb (cr, 0.2, 0.0, 0.0);
149 cairo_rectangle(cr, 0, 0, 800, 500);
150 cairo_set_source(cr, linpat);
151 cairo_fill(cr);
152
153 for (int widgetNumber=0; widgetNumber<numberOfUIWidgets-1; ++widgetNumber)
154 {
155 bool show_it = deliriumUI_window->group_visible[ deliriumUI_window->deliriumUIWidgets[widgetNumber].group ];
156 if (show_it) displayDeliriumUIWidget(deliriumUI_window, cr, widgetNumber);
157 }
158 }
159
160 //--------------------------------------------------------------------------
161
setControllerDiliriumUI(LV2UI_Controller _controller,LV2UI_Write_Function _write_function)162 void setControllerDiliriumUI(LV2UI_Controller _controller, LV2UI_Write_Function _write_function)
163 {
164 controller = _controller;
165 write_function = _write_function;
166 }
167
168 //--------------------------------------------------------------------------
169
setMinMax(deliriumUI * deliriumUI_window,int port_number,float min,float max)170 void setMinMax(deliriumUI* deliriumUI_window, int port_number, float min, float max)
171 {
172 deliriumUIWidget* deliriumUIWidgets = deliriumUI_window->deliriumUIWidgets;
173 int numberOfUIWidgets = deliriumUI_window->numberOfUIWidgets;
174 int widgetNumber=-1;
175
176 for (int x=0; x<numberOfUIWidgets; x++)
177 {
178 if ( deliriumUIWidgets[x].port_number == port_number) widgetNumber = x;
179 }
180
181 if (widgetNumber==-1) return;
182
183 deliriumUIWidgets[widgetNumber].min = min;
184 deliriumUIWidgets[widgetNumber].max = max;
185 }
186
187
188 //--------------------------------------------------------------------------
189
setValue(deliriumUI * deliriumUI_window,cairo_t * cr,int port_number,float value)190 void setValue(deliriumUI* deliriumUI_window, cairo_t* cr, int port_number, float value)
191 {
192
193 deliriumUIWidget* deliriumUIWidgets = deliriumUI_window->deliriumUIWidgets;
194 int numberOfUIWidgets = deliriumUI_window->numberOfUIWidgets;
195 int widgetNumber=-1;
196
197 for (int x=0; x<numberOfUIWidgets; x++)
198 {
199 if ( deliriumUIWidgets[x].type != deliriumUI_ADSR)
200 {
201 if ( deliriumUIWidgets[x].port_number == port_number) widgetNumber = x;
202 }
203
204 if ( deliriumUIWidgets[x].type == deliriumUI_ADSR)
205 {
206 if (deliriumUIWidgets[x].port_number == port_number ||
207 deliriumUIWidgets[x].port_number+1 == port_number ||
208 deliriumUIWidgets[x].port_number+2 == port_number ||
209 deliriumUIWidgets[x].port_number+3 == port_number)
210 {
211 widgetNumber = x;
212 }
213 }
214 }
215
216 if (widgetNumber==-1) return;
217
218 int current_value = port_number - deliriumUIWidgets[widgetNumber].port_number;
219
220
221 float unscaled_value = value / ((deliriumUIWidgets[widgetNumber].max - deliriumUIWidgets[widgetNumber].min));
222
223 if ( deliriumUIWidgets[widgetNumber].min < 0) unscaled_value += 0.5;
224
225 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_ADSR)
226 {
227 if (current_value == 0) unscaled_value = value;
228 if (current_value == 1) unscaled_value = 1 - value;
229 if (current_value == 2) unscaled_value = 1 - value;
230 if (current_value == 3) unscaled_value = 1 - value;
231
232 }
233
234 deliriumUIWidgets[widgetNumber].values[current_value] = unscaled_value;
235
236 deliriumUIWidgets[widgetNumber].scaled_value = value;
237
238
239 displayDeliriumUIWidget(deliriumUI_window, cr, widgetNumber);
240 write_function( controller,port_number, sizeof(float), 0, (const void*)&value);
241 }
242
243 //--------------------------------------------------------------------------
244
decValue(deliriumUI * deliriumUI_window,cairo_t * cr)245 void decValue(deliriumUI* deliriumUI_window, cairo_t* cr)
246 {
247 deliriumUIWidget* deliriumUIWidgets = deliriumUI_window->deliriumUIWidgets;
248 int numberOfUIWidgets = deliriumUI_window->numberOfUIWidgets;
249 int widgetNumber=deliriumUI_window->currentWidgetNumber;
250 int port_number = -1;
251 float value = -1;
252 int current_value = 0;
253
254 if (widgetNumber==-1) return;
255
256 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_Switch) return;
257
258 port_number = deliriumUIWidgets[widgetNumber].port_number;
259 current_value = deliriumUIWidgets[widgetNumber].current_value;
260 value = deliriumUIWidgets[widgetNumber].values[current_value] - deliriumUIWidgets[widgetNumber].increment;
261
262 if (value < 0) value = 0;
263 if (value > 1) value = 1;
264
265 deliriumUIWidgets[widgetNumber].values[current_value] = value;
266 deliriumUIWidgets[widgetNumber].scaled_value = deliriumUIWidgets[widgetNumber].min + ( deliriumUIWidgets[widgetNumber].values[current_value]
267 * (deliriumUIWidgets[widgetNumber].max-deliriumUIWidgets[widgetNumber].min));
268
269 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_Fader)
270 {
271 value = deliriumUIWidgets[widgetNumber].scaled_value;
272 }
273
274 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_ADSR)
275 {
276 value = deliriumUIWidgets[widgetNumber].values[current_value];
277 if (current_value > 0) port_number = deliriumUIWidgets[widgetNumber].port_number + current_value;
278 if (current_value > 0) value = 1 - value;
279 }
280
281 printf("%d - %d - %f\n", widgetNumber, port_number, value);
282
283 write_function( controller,port_number, sizeof(float), 0, (const void*)&value);
284 displayDeliriumUIWidget(deliriumUI_window, cr, widgetNumber);
285 }
286
287 //--------------------------------------------------------------------------
288
incValue(deliriumUI * deliriumUI_window,cairo_t * cr)289 void incValue(deliriumUI* deliriumUI_window, cairo_t* cr)
290 {
291 deliriumUIWidget* deliriumUIWidgets = deliriumUI_window->deliriumUIWidgets;
292 int numberOfUIWidgets = deliriumUI_window->numberOfUIWidgets;
293 int widgetNumber=deliriumUI_window->currentWidgetNumber;
294 int port_number = -1;
295 float value = -1;
296 int current_value = 0;
297
298 if (widgetNumber==-1) return;
299
300 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_Switch) return;
301
302 port_number = deliriumUIWidgets[widgetNumber].port_number;
303 current_value = deliriumUIWidgets[widgetNumber].current_value;
304 value = deliriumUIWidgets[widgetNumber].values[current_value] + deliriumUIWidgets[widgetNumber].increment;
305
306 if (value < 0) value = 0;
307 if (value > 1) value = 1;
308
309 deliriumUIWidgets[widgetNumber].values[current_value] = value;
310 deliriumUIWidgets[widgetNumber].scaled_value = deliriumUIWidgets[widgetNumber].min + ( deliriumUIWidgets[widgetNumber].values[current_value]
311 * (deliriumUIWidgets[widgetNumber].max-deliriumUIWidgets[widgetNumber].min));
312
313 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_Fader)
314 {
315 value = deliriumUIWidgets[widgetNumber].scaled_value;
316 }
317
318 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_ADSR)
319 {
320 value = deliriumUIWidgets[widgetNumber].values[current_value];
321 if (current_value > 0) port_number = deliriumUIWidgets[widgetNumber].port_number + current_value;
322 if (current_value > 0) value = 1 - value;
323 }
324
325 printf("%d - %d - %f\n", widgetNumber, port_number, value);
326
327 write_function( controller,port_number, sizeof(float), 0, (const void*)&value);
328 displayDeliriumUIWidget(deliriumUI_window, cr, widgetNumber);
329 }
330
331 //--------------------------------------------------------------------------
332
zeroValue(deliriumUI * deliriumUI_window,cairo_t * cr)333 void zeroValue(deliriumUI* deliriumUI_window, cairo_t* cr)
334 {
335 deliriumUIWidget* deliriumUIWidgets = deliriumUI_window->deliriumUIWidgets;
336 int numberOfUIWidgets = deliriumUI_window->numberOfUIWidgets;
337 int widgetNumber=deliriumUI_window->currentWidgetNumber;
338 int port_number = -1;
339 float value = -1;
340 int current_value = 0;
341
342 if (widgetNumber==-1) return;
343
344 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_Switch) return;
345
346 port_number = deliriumUIWidgets[widgetNumber].port_number;
347 current_value = deliriumUIWidgets[widgetNumber].current_value;
348 value = (0 - deliriumUIWidgets[widgetNumber].min) / ((deliriumUIWidgets[widgetNumber].max - deliriumUIWidgets[widgetNumber].min));
349
350 if (value < 0) value = 0;
351 if (value > 1) value = 1;
352
353 deliriumUIWidgets[widgetNumber].values[current_value] = value;
354 deliriumUIWidgets[widgetNumber].scaled_value = deliriumUIWidgets[widgetNumber].min + ( deliriumUIWidgets[widgetNumber].values[current_value]
355 * (deliriumUIWidgets[widgetNumber].max-deliriumUIWidgets[widgetNumber].min));
356
357 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_Fader)
358 {
359 value = deliriumUIWidgets[widgetNumber].scaled_value;
360 }
361
362 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_ADSR)
363 {
364 value = deliriumUIWidgets[widgetNumber].values[current_value];
365 if (current_value > 0) port_number = deliriumUIWidgets[widgetNumber].port_number + current_value;
366 if (current_value > 0) value = 1 - value;
367 }
368
369 displayDeliriumUIWidget(deliriumUI_window, cr, widgetNumber);
370 write_function( controller,port_number, sizeof(float), 0, (const void*)&value);
371 }
372 //--------------------------------------------------------------------------
373
setValueFromMousePosition(deliriumUI * deliriumUI_window,int widgetNumber,int _x,int _y)374 void setValueFromMousePosition(deliriumUI* deliriumUI_window, int widgetNumber, int _x, int _y)
375 {
376
377 deliriumUIWidget* deliriumUIWidgets = deliriumUI_window->deliriumUIWidgets;
378 int numberOfUIWidgets = deliriumUI_window->numberOfUIWidgets;
379
380 float x = deliriumUIWidgets[widgetNumber].x * deliriumUI_window->widgetWidth;
381 float y = deliriumUIWidgets[widgetNumber].y * deliriumUI_window->widgetHeight;
382 float w = deliriumUIWidgets[widgetNumber].w * deliriumUI_window->widgetWidth;
383 float h = deliriumUIWidgets[widgetNumber].h * deliriumUI_window->widgetHeight;
384
385 float clickTop = h * (deliriumUIWidgets[widgetNumber].clickTop/100);
386 float clickBottom = h * (deliriumUIWidgets[widgetNumber].clickBottom/100);
387
388 y += clickTop;
389 h -= (clickTop+clickBottom);
390
391 float value = (_y - y) / h;
392
393
394 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_ADSR)
395 {
396 value = (_y - y) / ((h/2) + (h/6));
397 }
398
399
400 value = 1-value;
401
402 if (value < 0) value = 0;
403 if (value > 1) value = 1;
404
405 int port_number = deliriumUIWidgets[widgetNumber].port_number;
406 setValueDiliriumUIADSR(deliriumUI_window, widgetNumber, value );
407
408 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_Fader)
409 {
410 deliriumUIWidgets[widgetNumber].scaled_value = deliriumUIWidgets[widgetNumber].min + ( deliriumUIWidgets[widgetNumber].values[0]
411 * (deliriumUIWidgets[widgetNumber].max-deliriumUIWidgets[widgetNumber].min));
412 value = deliriumUIWidgets[widgetNumber].scaled_value;
413 }
414
415 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_ADSR)
416 {
417 port_number += deliriumUIWidgets[widgetNumber].current_value;
418 }
419
420 deliriumUIWidgets[widgetNumber].hover = true;
421 if (controller,port_number > -1)
422 write_function( controller,port_number, sizeof(float), 0, (const void*)&value);
423 }
424
425 //------------------------------------------------------------------
426 // check if mouse is hovering over widget
isMouseOverDeliriumUIWidget(deliriumUI * deliriumUI_window,cairo_t * cr,int _x,int _y)427 void isMouseOverDeliriumUIWidget(deliriumUI* deliriumUI_window, cairo_t* cr, int _x, int _y)
428 {
429
430 deliriumUIWidget* deliriumUIWidgets = deliriumUI_window->deliriumUIWidgets;
431 int numberOfUIWidgets = deliriumUI_window->numberOfUIWidgets;
432
433 deliriumUI_window->currentWidgetNumber = -1;
434
435 for (int widgetNumber=0; widgetNumber<numberOfUIWidgets-1; ++widgetNumber)
436 {
437 int group = deliriumUIWidgets[widgetNumber].group;
438
439 if (deliriumUI_window->group_visible[group])
440 {
441
442 float x = deliriumUIWidgets[widgetNumber].x * deliriumUI_window->widgetWidth;
443 float y = deliriumUIWidgets[widgetNumber].y * deliriumUI_window->widgetHeight;
444 float w = deliriumUIWidgets[widgetNumber].w * deliriumUI_window->widgetWidth;
445 float h = deliriumUIWidgets[widgetNumber].h * deliriumUI_window->widgetHeight;
446
447 if (deliriumUIWidgets[widgetNumber].pressed && deliriumUIWidgets[widgetNumber].type!=deliriumUI_Switch)
448 {
449
450 setValueFromMousePosition(deliriumUI_window, widgetNumber, _x, _y);
451 displayDeliriumUIWidget(deliriumUI_window, cr, widgetNumber);
452 }
453
454 if (!deliriumUI_window->mouseButton[1])
455 {
456 if (_x>=x && _y>=y && _x<=x+w && _y<=y+h)
457 {
458 deliriumUIWidgets[widgetNumber].hover = true;
459 deliriumUI_window->currentWidgetNumber = widgetNumber;
460
461
462 if (deliriumUIWidgets[widgetNumber].type == deliriumUI_ADSR)
463 {
464
465 int current_value = ((_x-(int)x) / (w/4));
466 deliriumUIWidgets[widgetNumber].current_value = current_value;
467 }
468 }
469 else
470 {
471 deliriumUIWidgets[widgetNumber].hover = false;
472 }
473 }
474 }
475 }
476 }
477
478
479 //------------------------------------------------------------------
480 // check if widget has been clicked by mouse button
481
hasMouseClickedDeliriumUIWidget(deliriumUI * deliriumUI_window,int _x,int _y)482 void hasMouseClickedDeliriumUIWidget(deliriumUI* deliriumUI_window, int _x, int _y)
483 {
484 deliriumUIWidget* deliriumUIWidgets = deliriumUI_window->deliriumUIWidgets;
485 int numberOfUIWidgets = deliriumUI_window->numberOfUIWidgets;
486
487
488
489 for (int widgetNumber=0; widgetNumber<numberOfUIWidgets-1; ++widgetNumber)
490 {
491 bool show_it = deliriumUI_window->group_visible[ deliriumUI_window->deliriumUIWidgets[widgetNumber].group ];
492
493 if (show_it)
494 {
495
496 float x = deliriumUIWidgets[widgetNumber].x * deliriumUI_window->widgetWidth;
497 float y = deliriumUIWidgets[widgetNumber].y * deliriumUI_window->widgetHeight;
498 float w = deliriumUIWidgets[widgetNumber].w * deliriumUI_window->widgetWidth;
499 float h = deliriumUIWidgets[widgetNumber].h * deliriumUI_window->widgetHeight;
500
501 w -= 2;
502 h -= 2;
503
504 if (!deliriumUIWidgets[widgetNumber].toggleMode)
505 {
506 if (_x>=x && _y>=y && _x<=x+w && _y<=y+h)
507 {
508 deliriumUIWidgets[widgetNumber].pressed = true;
509
510 if ( deliriumUIWidgets[widgetNumber]. port_number < 0)
511 {
512
513 for (int x=1; x<5; x++)
514 {
515 if ( x!= -deliriumUIWidgets[widgetNumber]. port_number)
516 deliriumUI_window->group_visible[x] = false;
517 else
518 deliriumUI_window->group_visible[x] = true;
519 }
520 return;
521 }
522
523 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_Switch)
524 {
525 deliriumUIWidgets[widgetNumber].values[0] = deliriumUIWidgets[widgetNumber].pressed;
526
527 write_function( controller,deliriumUIWidgets[widgetNumber]. port_number, sizeof(float), 0, (const void*)&deliriumUIWidgets[widgetNumber].values[0]);
528
529 }
530 setValueFromMousePosition(deliriumUI_window, widgetNumber, _x, _y);
531
532 }
533 else
534 {
535 deliriumUIWidgets[widgetNumber].pressed = false;
536 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_Switch)
537 {
538 deliriumUIWidgets[widgetNumber].values[0] = deliriumUIWidgets[widgetNumber].pressed;
539
540 write_function( controller,deliriumUIWidgets[widgetNumber]. port_number, sizeof(float), 0, (const void*)&deliriumUIWidgets[widgetNumber].values[0]);
541
542 }
543 }
544 }
545 else
546 {
547 if (_x>=x && _y>=y && _x<=x+w && _y<=y+h)
548 {
549 deliriumUIWidgets[widgetNumber].pressed = 1-deliriumUIWidgets[widgetNumber].pressed;
550 if ( deliriumUIWidgets[widgetNumber].type == deliriumUI_Switch)
551 {
552 deliriumUIWidgets[widgetNumber].values[0] = deliriumUIWidgets[widgetNumber].pressed;
553
554 write_function( controller,deliriumUIWidgets[widgetNumber]. port_number, sizeof(float), 0, (const void*)&deliriumUIWidgets[widgetNumber].values[0]);
555
556 }
557
558 }
559 }
560 }
561 }
562 }
563
564 //------------------------------------------------------------------
565 // Return number of widgets
566
getNumberOfWidgets(deliriumUI * deliriumUI_window)567 int getNumberOfWidgets(deliriumUI* deliriumUI_window)
568 {
569 return deliriumUI_window->numberOfUIWidgets;
570 }
571
572 //------------------------------------------------------------------
573 // Initialise widget list
574
cleanUpDeliriumUI(deliriumUI * deliriumUI_window)575 void cleanUpDeliriumUI(deliriumUI* deliriumUI_window)
576 {
577 deliriumUIWidget* deliriumUIWidgets = deliriumUI_window->deliriumUIWidgets;
578
579 free(deliriumUIWidgets);
580 }
581
582
583
584
585
586