EasyGUI
gui_widget.h
1 
6 /*
7  * Copyright (c) 2019 Tilen MAJERLE
8  *
9  * Permission is hereby granted, free of charge, to any person
10  * obtaining a copy of this software and associated documentation
11  * files (the "Software"), to deal in the Software without restriction,
12  * including without limitation the rights to use, copy, modify, merge,
13  * publish, distribute, sublicense, and/or sell copies of the Software,
14  * and to permit persons to whom the Software is furnished to do so,
15  * subject to the following conditions:
16  *
17  * The above copyright notice and this permission notice shall be
18  * included in all copies or substantial portions of the Software.
19  *
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
22  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
23  * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
25  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27  * OTHER DEALINGS IN THE SOFTWARE.
28  *
29  * This file is part of EasyGUI library.
30  *
31  * Author: Tilen Majerle <tilen@majerle.eu>
32  */
33 #ifndef GUI_HDR_WIDGET_H
34 #define GUI_HDR_WIDGET_H
35 
36 /* C++ detection */
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
52 #include "gui/gui.h"
53 #include "gui/gui_draw.h"
54 
61 #define GUI_ID_WINDOW_BASE ((gui_id_t)0x0000)
62 #define GUI_ID_KEYBOARD_BASE ((gui_id_t)(GUI_ID_WINDOW_BASE + 0x1000))
64 #define GUI_ID_USER ((gui_id_t)(0x10000))
66 #define GUI_WIDGET_ZINDEX_MAX ((int32_t)(0x7FFFFFFF))
67 #define GUI_WIDGET_ZINDEX_MIN ((int32_t)(0x80000000))
81 #define GUI_FLAG_WIDGET_CREATE_PARENT_DESKTOP 0x01
82 #define GUI_FLAG_WIDGET_CREATE_NO_PARENT 0x02
83 #define GUI_FLAG_WIDGET_CREATE_IGNORE_INVALIDATE 0x04
103 #define GUI_WIDGET_FOOTPRINT 0x00ACCE55
104 
112 #define guii_widget_iswidget(h) (__GH(h) != NULL && __GH(h)->footprint == GUI_WIDGET_FOOTPRINT)
113 
121 #define guii_widget_getrelativex(h) GUI_DIM((gui_widget_isexpanded(h) ? 0 : \
122  (guii_widget_getflag(__GH(h), GUI_FLAG_XPOS_PERCENT) ? (gui_dim_t)((float)GUI_ROUND(__GH(h)->x * guii_widget_getparentinnerwidth(__GH(h))) / 100.0f) : __GH(h)->x) \
123  ))
124 
132 #define guii_widget_getrelativey(h) GUI_DIM(gui_widget_isexpanded(__GH(h)) ? 0 : \
133  (guii_widget_getflag(__GH(h), GUI_FLAG_YPOS_PERCENT) ? (gui_dim_t)((float)GUI_ROUND(__GH(h)->y * guii_widget_getparentinnerheight(__GH(h))) / 100.0f) : __GH(h)->y) \
134  )
135 
144 #define guii_widget_getflag(h, flag) (__GH(h)->flags & (flag))
145 
154 #define guii_widget_getcoreflag(h, flag) (__GH(h)->widget->flags & (flag))
155 
163 #define guii_widget_setflag(h, flag) (__GH(h)->flags |= (flag))
164 
172 #define guii_widget_clrflag(h, flag) (__GH(h)->flags &= ~(flag))
173 
181 #define guii_widget_getparent(h) (__GH(h) != NULL ? __GH(h)->parent : NULL)
182 
190 #define guii_widget_hasparent(h) (__GH(h) != NULL && __GH(h)->parent != NULL)
191 
202 #define guii_widget_callback(h, cmd, param, result) (__GH(h)->callback != NULL ? __GH(h)->callback(h, cmd, param, result) : __GH(h)->widget->callback(h, cmd, param, result))
203 
213 #define guii_widget_getcolor(h, index) (__GH(h)->colors != NULL ? __GH(h)->colors[(uint8_t)(index)] : (__GH(h)->widget->colors != NULL ? __GH(h)->widget->colors[(uint8_t)(index)] : GUI_COLOR_BLACK))
214 
222 #define guii_widget_getparentwidth(h) GUI_DIM((guii_widget_hasparent(h) ? gui_widget_getwidth(guii_widget_getparent(h)) : GUI.lcd.width))
223 
231 #define guii_widget_getparentheight(h) GUI_DIM((guii_widget_hasparent(h) ? gui_widget_getheight(guii_widget_getparent(h)) : GUI.lcd.height))
232 
242 #define guii_widget_getparentinnerwidth(h) GUI_DIM((guii_widget_hasparent(h) ? gui_widget_getinnerwidth(guii_widget_getparent(h)) : GUI.lcd.width))
243 
253 #define guii_widget_getparentinnerheight(h) GUI_DIM((guii_widget_hasparent(h) ? gui_widget_getinnerheight(guii_widget_getparent(h)) : GUI.lcd.height))
254 
262 #if GUI_CFG_USE_ALPHA
263 #define guii_widget_isvisible(h) (!guii_widget_getflag(__GH(h), GUI_FLAG_HIDDEN) && __GH(h)->alpha)
264 #else /* GUI_CFG_USE_ALPHA */
265 #define guii_widget_isvisible(h) (!guii_widget_getflag(h, GUI_FLAG_HIDDEN))
266 #endif /* !GUI_CFG_USE_ALPHA */
267 
275 #define guii_widget_ishidden(h) (!guii_widget_isvisible(__GH(h)))
276 
284 #define guii_widget_allowchildren(h) (!!guii_widget_getcoreflag(h, GUI_FLAG_WIDGET_ALLOW_CHILDREN))
285 
293 #define guii_widget_haschildren(h) (guii_widget_allowchildren(h) && gui_linkedlist_hasentries(&h->root_list))
294 
302 #define guii_widget_isdialogbase(h) (!!(guii_widget_getcoreflag(h, GUI_FLAG_WIDGET_DIALOG_BASE) || guii_widget_getflag(h, GUI_FLAG_WIDGET_DIALOG_BASE)))
303 
311 #define guii_widget_isfocused(h) (!!guii_widget_getflag(h, GUI_FLAG_FOCUS))
312 
320 #define guii_widget_isactive(h) (!!guii_widget_getflag(h, GUI_FLAG_ACTIVE))
321 
330 #define guii_widget_hasalpha(h) (guii_widget_isvisible(h) && gui_widget_getalpha(h) < 0xFF)
331 
332 uint8_t guii_widget_processtextkey(gui_handle_p h, guii_keyboard_data_t* key);
333 
334 uint8_t guii_widget_setparam(gui_handle_p h, uint16_t cfg, const void* data, uint8_t invalidate, uint8_t invalidateparent);
335 uint8_t guii_widget_getparam(gui_handle_p h, uint16_t cfg, void* data);
338 
349 void* gui_widget_create(const gui_widget_t* widget, gui_id_t id, float x, float y, float width, float height, gui_handle_p parent, gui_widget_evt_fn evt_fn, uint16_t flags);
350 uint8_t gui_widget_setcolor(gui_handle_p h, uint8_t index, gui_color_t color);
351 uint8_t gui_widget_setstyle(gui_handle_p h, const gui_style_p style);
352 
363 uint32_t gui_widget_alloctextmemory(gui_handle_p h, uint32_t size);
364 uint8_t gui_widget_freetextmemory(gui_handle_p h);
365 uint8_t gui_widget_settext(gui_handle_p h, const gui_char* text);
366 const gui_char * gui_widget_gettext(gui_handle_p h);
367 const gui_char * gui_widget_gettextcopy(gui_handle_p h, gui_char* dst, uint32_t len);
368 uint8_t gui_widget_setfont(gui_handle_p h, const gui_font_t* font);
369 const gui_font_t * gui_widget_getfont(gui_handle_p h);
370 uint8_t gui_widget_setfontdefault(const gui_font_t* font);
371 uint8_t gui_widget_isfontandtextset(gui_handle_p h);
372 
383 uint8_t gui_widget_setsize(gui_handle_p h, gui_dim_t width, gui_dim_t height);
384 uint8_t gui_widget_setsizepercent(gui_handle_p h, float width, float height);
385 uint8_t gui_widget_setsizeoriginal(gui_handle_p h, float width, float height);
386 uint8_t gui_widget_setwidth(gui_handle_p h, gui_dim_t width);
387 uint8_t gui_widget_setwidthpercent(gui_handle_p h, float width);
388 uint8_t gui_widget_setwidthoriginal(gui_handle_p h, float width);
389 uint8_t gui_widget_setheight(gui_handle_p h, gui_dim_t height);
390 uint8_t gui_widget_setheightpercent(gui_handle_p h, float height);
391 uint8_t gui_widget_setheightoriginal(gui_handle_p h, float height);
392 
393 gui_dim_t gui_widget_getwidth(gui_handle_p h);
394 gui_dim_t gui_widget_getheight(gui_handle_p h);
395 gui_dim_t gui_widget_getinnerwidth(gui_handle_p h);
396 gui_dim_t gui_widget_getinnerheight(gui_handle_p h);
397 float gui_widget_getwidthpercent(gui_handle_p h);
398 float gui_widget_getheightpercent(gui_handle_p h);
399 float gui_widget_getwidthoriginal(gui_handle_p h, uint8_t* is_percent);
400 float gui_widget_getheightoriginal(gui_handle_p h, uint8_t* is_percent);
401 
402 static inline float
403 gui_widget_getwidthex(gui_handle_p h, uint8_t in_percent) {
404  return GUI_FLOAT(in_percent ? gui_widget_getwidthpercent(h) : gui_widget_getwidth(h));
405 }
406 
407 static inline float
408 gui_widget_getheightex(gui_handle_p h, uint8_t in_percent) {
409  return GUI_FLOAT(in_percent ? gui_widget_getheightpercent(h) : gui_widget_getheight(h));
410 }
411 
412 uint8_t gui_widget_setexpanded(gui_handle_p h, uint8_t state);
413 uint8_t gui_widget_toggleexpanded(gui_handle_p h);
414 uint8_t gui_widget_isexpanded(gui_handle_p h);
415 
426 gui_dim_t gui_widget_getabsolutex(gui_handle_p h);
427 gui_dim_t gui_widget_getabsolutey(gui_handle_p h);
428 
429 float gui_widget_getxpositionoriginal(gui_handle_p h, uint8_t* is_percent);
430 float gui_widget_getypositionoriginal(gui_handle_p h, uint8_t* is_percent);
431 
432 uint8_t gui_widget_setposition(gui_handle_p h, gui_dim_t x, gui_dim_t y);
433 uint8_t gui_widget_setpositionpercent(gui_handle_p h, float x, float y);
434 uint8_t gui_widget_setpositionoriginal(gui_handle_p h, float x, float y);
435 uint8_t gui_widget_setxposition(gui_handle_p h, gui_dim_t x);
436 uint8_t gui_widget_setxpositionpercent(gui_handle_p h, float x);
437 uint8_t gui_widget_setxpositionoriginal(gui_handle_p h, float x);
438 uint8_t gui_widget_setyposition(gui_handle_p h, gui_dim_t y);
439 uint8_t gui_widget_setypositionpercent(gui_handle_p h, float y);
440 uint8_t gui_widget_setypositionoriginal(gui_handle_p h, float y);
441 
442 gui_dim_t gui_widget_getxposition(gui_handle_p h);
443 gui_dim_t gui_widget_getyposition(gui_handle_p h);
444 
445 uint8_t gui_widget_setscrollx(gui_handle_p h, gui_dim_t scroll);
446 uint8_t gui_widget_setscrolly(gui_handle_p h, gui_dim_t scroll);
447 uint8_t gui_widget_incscrollx(gui_handle_p h, gui_dim_t scroll);
448 uint8_t gui_widget_incscrolly(gui_handle_p h, gui_dim_t scroll);
449 gui_dim_t gui_widget_getscrollx(gui_handle_p h);
450 gui_dim_t gui_widget_getscrolly(gui_handle_p h);
451 
462 uint8_t gui_widget_show(gui_handle_p h);
463 uint8_t gui_widget_hide(gui_handle_p h);
464 uint8_t gui_widget_hidechildren(gui_handle_p h);
465 uint8_t gui_widget_putonfront(gui_handle_p h, uint8_t focus);
466 uint8_t gui_widget_getalpha(gui_handle_p h);
467 uint8_t gui_widget_setalpha(gui_handle_p h, uint8_t alpha);
468 
479 uint8_t gui_widget_invalidate(gui_handle_p h);
480 uint8_t gui_widget_force_invalidate(gui_handle_p h);
481 uint8_t gui_widget_invalidatewithparent(gui_handle_p h);
482 uint8_t gui_widget_setignoreinvalidate(gui_handle_p h, uint8_t en, uint8_t invalidate);
483 uint8_t gui_widget_setinvalidatewithparent(gui_handle_p h, uint8_t value);
484 uint8_t gui_widget_setuserdata(gui_handle_p h, void* const data);
485 void * gui_widget_getuserdata(gui_handle_p h);
486 uint8_t gui_widget_ischildof(gui_handle_p h, gui_handle_p parent);
487 uint8_t gui_widget_incselection(gui_handle_p h, int16_t dir);
488 uint8_t gui_widget_setfocus(gui_handle_p h);
489 uint8_t gui_widget_setzindex(gui_handle_p h, int32_t zindex);
490 int32_t gui_widget_getzindex(gui_handle_p h);
491 gui_handle_p gui_widget_getparent(gui_handle_p h);
492 gui_id_t gui_widget_getid(gui_handle_p h);
493 gui_handle_p gui_widget_getbyid(gui_id_t id);
494 gui_handle_p gui_widget_getbyid_ex(gui_id_t id, gui_handle_p parent, uint8_t deep);
495 uint8_t gui_widget_remove(gui_handle_p* h);
496 
507 uint8_t gui_widget_setpaddingtop(gui_handle_p h, gui_dim_t x);
508 uint8_t gui_widget_setpaddingright(gui_handle_p h, gui_dim_t x);
509 uint8_t gui_widget_setpaddingbottom(gui_handle_p h, gui_dim_t x);
510 uint8_t gui_widget_setpaddingleft(gui_handle_p h, gui_dim_t x);
511 uint8_t gui_widget_setpaddingtopbottom(gui_handle_p h, gui_dim_t x);
512 uint8_t gui_widget_setpaddingleftright(gui_handle_p h, gui_dim_t x);
513 uint8_t gui_widget_setpadding(gui_handle_p h, gui_dim_t x);
514 
515 gui_dim_t gui_widget_getpaddingtop(gui_handle_p h);
516 gui_dim_t gui_widget_getpaddingright(gui_handle_p h);
517 gui_dim_t gui_widget_getpaddingbottom(gui_handle_p h);
518 gui_dim_t gui_widget_getpaddingleft(gui_handle_p h);
519 
530 uint8_t gui_widget_processdefaultcallback(gui_handle_p h, gui_widget_evt_t evt, gui_evt_param_t* const param, gui_evt_result_t* const result);
531 uint8_t gui_widget_setcallback(gui_handle_p h, gui_widget_evt_fn callback);
532 uint8_t gui_widget_callback(gui_handle_p h, gui_widget_evt_t evt, gui_evt_param_t* const param, gui_evt_result_t* const result);
533 
538 #if defined(GUI_INTERNAL) && !__DOXYGEN__
539 //Strictly private functions by GUI
540 //Widget initialization purpose
541 void guii_widget_init(void);
542 
543 //Clipping regions
544 uint8_t guii_widget_isinsideclippingregion(gui_handle_p h, uint8_t check_sib_cover);
545 
546 //Move widget down and all its parents with it
547 void guii_widget_movedowntree(gui_handle_p h);
548 
549 void guii_widget_focus_clear(void);
550 void guii_widget_focus_set(gui_handle_p h);
551 void guii_widget_active_clear(void);
552 void guii_widget_active_set(gui_handle_p h);
553 
554 //Execute actual widget remove process
555 uint8_t guii_widget_executeremove(void);
556 #endif /* !__DOXYGEN__ */
557 
566 /* C++ detection */
567 #ifdef __cplusplus
568 }
569 #endif
570 
571 #endif /* GUI_HDR_WIDGET_H */
uint8_t gui_widget_toggleexpanded(gui_handle_p h)
Toggle expandend (maximized) mode of widget (mostly of windows)
Definition: gui_widget.c:1678
uint8_t gui_widget_setpaddingtopbottom(gui_handle_p h, gui_dim_t x)
Set widget top and bottom paddings.
Definition: gui_widget.c:2614
gui_id_t gui_widget_getid(gui_handle_p h)
Get widget ID.
Definition: gui_widget.c:2162
uint8_t gui_widget_setignoreinvalidate(gui_handle_p h, uint8_t en, uint8_t invalidate)
Set ignore widget option.
Definition: gui_widget.c:2059
uint8_t gui_widget_setheightoriginal(gui_handle_p h, float height)
Set height of widget in original units.
Definition: gui_widget.c:1664
uint8_t gui_widget_hidechildren(gui_handle_p h)
Hide children widgets.
Definition: gui_widget.c:2143
uint8_t gui_widget_incscrolly(gui_handle_p h, gui_dim_t scroll)
Increase widget scroll on Y axis.
Definition: gui_widget.c:2381
uint8_t gui_widget_isexpanded(gui_handle_p h)
Get widget expanded status.
Definition: gui_widget.c:1846
uint8_t(* gui_widget_evt_fn)(gui_handle_p h, gui_widget_evt_t evt, gui_evt_param_t *const param, gui_evt_result_t *const result)
Callback function for widget.
Definition: gui_defs.h:1103
uint8_t gui_widget_setwidthpercent(gui_handle_p h, float width)
Set width of widget in percentage relative to parent widget.
Definition: gui_widget.c:1606
uint8_t gui_widget_setscrolly(gui_handle_p h, gui_dim_t scroll)
Set widget scroll on Y axis.
Definition: gui_widget.c:2335
gui_dim_t gui_widget_getxposition(gui_handle_p h)
Get widget X position relative to parent in units of pixels.
Definition: gui_widget.c:1004
gui_dim_t guii_widget_getparentabsolutey(gui_handle_p h)
Get absolute inner Y position of parent widget.
Definition: gui_widget.c:951
uint8_t gui_widget_show(gui_handle_p h)
Show widget from visible area.
Definition: gui_widget.c:2084
uint8_t gui_widget_setxposition(gui_handle_p h, gui_dim_t x)
Set widget X position relative to parent object in units of pixels.
Definition: gui_widget.c:1903
uint8_t gui_widget_setpadding(gui_handle_p h, gui_dim_t x)
Set widget all paddings.
Definition: gui_widget.c:2648
uint8_t guii_widget_processtextkey(gui_handle_p h, guii_keyboard_data_t *key)
Process text key (add character, remove it, move cursor, etc)
Definition: gui_widget.c:1312
gui_dim_t guii_widget_getparentabsolutex(gui_handle_p h)
Get absolute inner X position of parent widget.
Definition: gui_widget.c:928
const gui_char * gui_widget_gettextcopy(gui_handle_p h, gui_char *dst, uint32_t len)
Get text from widget.
Definition: gui_widget.c:1498
Structure of output results for widget callback.
Definition: gui_defs.h:1084
uint8_t gui_widget_invalidate(gui_handle_p h)
Invalidate widget object and prepare to new redraw.
Definition: gui_widget.c:2019
uint8_t gui_widget_setsizeoriginal(gui_handle_p h, float width, float height)
Set widget size in original units.
Definition: gui_widget.c:1578
uint8_t gui_widget_ischildof(gui_handle_p h, gui_handle_p parent)
Check if widget handle is child of parent handle.
Definition: gui_widget.c:2211
uint8_t gui_widget_freetextmemory(gui_handle_p h)
Frees widget memory previously allocated for text.
Definition: gui_widget.c:1406
uint8_t gui_widget_setzindex(gui_handle_p h, int32_t zindex)
Set z-Index for widgets on the same level. This feature applies on widgets which are not dialogs.
Definition: gui_widget.c:2470
uint8_t gui_widget_setpositionoriginal(gui_handle_p h, float x, float y)
Set widget position relative to parent object in original units.
Definition: gui_widget.c:1889
uint8_t gui_widget_setypositionpercent(gui_handle_p h, float y)
Set widget Y position relative to parent object in units of percent.
Definition: gui_widget.c:1959
uint8_t gui_char
Definition: gui_defs.h:212
gui_dim_t gui_widget_getinnerwidth(gui_handle_p h)
Get inner width total width - padding left - padding right
Definition: gui_widget.c:1736
uint8_t gui_widget_setcallback(gui_handle_p h, gui_widget_evt_fn callback)
Set callback function to widget.
Definition: gui_widget.c:2280
uint8_t guii_widget_setparam(gui_handle_p h, uint16_t cfg, const void *data, uint8_t invalidate, uint8_t invalidateparent)
Set widget parameter in OS secure way.
Definition: gui_widget.c:1068
uint8_t gui_widget_setwidthoriginal(gui_handle_p h, float width)
Set width of widget in original units.
Definition: gui_widget.c:1621
uint8_t gui_widget_incselection(gui_handle_p h, int16_t dir)
Increase selection for widget.
Definition: gui_widget.c:2450
uint8_t gui_widget_setsizepercent(gui_handle_p h, float width, float height)
Set widget size in units of percent.
Definition: gui_widget.c:1565
uint8_t gui_widget_settext(gui_handle_p h, const gui_char *text)
Set text to widget.
Definition: gui_widget.c:1434
uint8_t gui_widget_getalpha(gui_handle_p h)
Get widget transparency value.
Definition: gui_widget.c:2530
const gui_font_t * gui_widget_getfont(gui_handle_p h)
Get font from widget.
Definition: gui_widget.c:1535
uint8_t gui_widget_remove(gui_handle_p *h)
Remove widget from memory.
Definition: gui_widget.c:1242
uint8_t gui_widget_invalidatewithparent(gui_handle_p h)
Invalidate widget and parent widget for redraw.
Definition: gui_widget.c:1024
uint8_t gui_widget_setypositionoriginal(gui_handle_p h, float y)
Set widget Y position relative to parent object in current units.
Definition: gui_widget.c:1974
uint32_t gui_color_t
Definition: gui_defs.h:210
Structure for each widget type.
Definition: gui_defs.h:1120
gui_handle_p gui_widget_getparent(gui_handle_p h)
Get parent widget of current.
Definition: gui_widget.c:2173
uint8_t gui_widget_setheight(gui_handle_p h, gui_dim_t height)
Set height of widget in units of pixels.
Definition: gui_widget.c:1635
uint32_t gui_widget_alloctextmemory(gui_handle_p h, uint32_t size)
Allocate memory for text operations if text will be dynamic.
Definition: gui_widget.c:1377
uint8_t gui_widget_setpaddingtop(gui_handle_p h, gui_dim_t x)
Set widget top padding.
Definition: gui_widget.c:2550
uint8_t gui_widget_callback(gui_handle_p h, gui_widget_evt_t evt, gui_evt_param_t *const param, gui_evt_result_t *const result)
Widget callback function for all events.
Definition: gui_widget.c:2300
uint8_t gui_widget_setexpanded(gui_handle_p h, uint8_t state)
Set expandend mode on widget.
Definition: gui_widget.c:1821
uint8_t gui_widget_isfontandtextset(gui_handle_p h)
Check if widget has set font and text.
Definition: gui_widget.c:1299
int32_t gui_widget_getzindex(gui_handle_p h)
Get z-index value from widget.
Definition: gui_widget.c:2492
uint8_t gui_widget_setpaddingleftright(gui_handle_p h, gui_dim_t x)
Set widget left and right paddings.
Definition: gui_widget.c:2631
float gui_widget_getypositionoriginal(gui_handle_p h, uint8_t *is_percent)
Get Y position relative to parent in original units.
Definition: gui_widget.c:2006
uint8_t gui_widget_setscrollx(gui_handle_p h, gui_dim_t scroll)
Set widget scroll on X axis.
Definition: gui_widget.c:2313
uint8_t gui_widget_setsize(gui_handle_p h, gui_dim_t width, gui_dim_t height)
Set widget size in units of pixels.
Definition: gui_widget.c:1553
gui_handle_p gui_widget_getbyid(gui_id_t id)
Get first widget handle by ID.
Definition: gui_widget.c:2185
uint8_t gui_widget_setyposition(gui_handle_p h, gui_dim_t y)
Set widget Y position relative to parent object in units of pixels.
Definition: gui_widget.c:1945
gui_dim_t gui_widget_getpaddingbottom(gui_handle_p h)
Get widget bottom padding in units of pixels.
Definition: gui_widget.c:2688
FONT structure for writing usage.
Definition: gui_defs.h:473
Internal single key data structure.
Definition: gui_defs.h:349
uint8_t gui_widget_incscrollx(gui_handle_p h, gui_dim_t scroll)
Increase widget scroll on X axis.
Definition: gui_widget.c:2358
uint8_t gui_widget_hide(gui_handle_p h)
Hide widget from visible area.
Definition: gui_widget.c:2119
float gui_widget_getxpositionoriginal(gui_handle_p h, uint8_t *is_percent)
Get X position relative to parent in original units.
Definition: gui_widget.c:1990
gui_dim_t gui_widget_getabsolutex(gui_handle_p h)
Get absolute X position on LCD for specific widget.
Definition: gui_widget.c:970
uint8_t gui_widget_setfocus(gui_handle_p h)
Manually set widget in focus.
Definition: gui_widget.c:2424
gui_dim_t gui_widget_getscrolly(gui_handle_p h)
Get widget scroll on Y axis.
Definition: gui_widget.c:2413
uint8_t gui_widget_setuserdata(gui_handle_p h, void *const data)
Set custom user data to widget.
Definition: gui_widget.c:2238
gui_dim_t gui_widget_getyposition(gui_handle_p h)
Get widget Y position relative to parent in units of pixels.
Definition: gui_widget.c:1014
gui_dim_t gui_widget_getwidth(gui_handle_p h)
Get total width of widget effective on screen in units of pixels.
Definition: gui_widget.c:1692
uint8_t gui_widget_putonfront(gui_handle_p h, uint8_t focus)
Put widget to front view and put it to focused state.
Definition: gui_widget.c:2102
uint8_t gui_widget_setxpositionoriginal(gui_handle_p h, float x)
Set widget X position relative to parent object in current units.
Definition: gui_widget.c:1931
uint8_t gui_widget_setalpha(gui_handle_p h, uint8_t alpha)
Set widget alpha level to widget.
Definition: gui_widget.c:2504
uint8_t gui_widget_setpaddingbottom(gui_handle_p h, gui_dim_t x)
Set widget bottom padding.
Definition: gui_widget.c:2582
gui_dim_t gui_widget_getpaddingleft(gui_handle_p h)
Get widget left padding in units of pixels.
Definition: gui_widget.c:2699
uint8_t gui_widget_setheightpercent(gui_handle_p h, float height)
Set height of widget in percentage relative to parent widget.
Definition: gui_widget.c:1649
gui_handle_p gui_widget_getbyid_ex(gui_id_t id, gui_handle_p parent, uint8_t deep)
Get first widget handle by ID on specific parent widget.
Definition: gui_widget.c:2200
gui_dim_t gui_widget_getabsolutey(gui_handle_p h)
Get absolute Y position on LCD for specific widget.
Definition: gui_widget.c:987
float gui_widget_getwidthpercent(gui_handle_p h)
Get widget width relative to parent width in percent.
Definition: gui_widget.c:1756
float gui_widget_getheightpercent(gui_handle_p h)
Get widget height relative to parent height in percent.
Definition: gui_widget.c:1771
int16_t gui_dim_t
Definition: gui_defs.h:211
gui_dim_t gui_widget_getheight(gui_handle_p h)
Get total height of widget effective on screen in units of pixels.
Definition: gui_widget.c:1716
uint8_t gui_widget_processdefaultcallback(gui_handle_p h, gui_widget_evt_t evt, gui_evt_param_t *const param, gui_evt_result_t *const result)
Widget callback function for all events.
Definition: gui_widget.c:2268
gui_dim_t gui_widget_getpaddingright(gui_handle_p h)
Get widget right padding in units of pixels.
Definition: gui_widget.c:2677
uint8_t gui_widget_setpaddingleft(gui_handle_p h, gui_dim_t x)
Set widget left padding.
Definition: gui_widget.c:2598
uint8_t gui_widget_setxpositionpercent(gui_handle_p h, float x)
Set widget X position relative to parent object in units of percent.
Definition: gui_widget.c:1917
float gui_widget_getwidthoriginal(gui_handle_p h, uint8_t *is_percent)
Get widget width in original units.
Definition: gui_widget.c:1789
uint8_t gui_widget_setinvalidatewithparent(gui_handle_p h, uint8_t value)
Set if parent widget should be invalidated when we invalidate primary widget.
Definition: gui_widget.c:1046
uint8_t gui_widget_setwidth(gui_handle_p h, gui_dim_t width)
Set width of widget in units of pixels.
Definition: gui_widget.c:1592
void * gui_widget_create(const gui_widget_t *widget, gui_id_t id, float x, float y, float width, float height, gui_handle_p parent, gui_widget_evt_fn evt_fn, uint16_t flags)
Create new widget and add it to linked list to parent object.
Definition: gui_widget.c:1106
Structure of input parameters for widget callback.
Definition: gui_defs.h:1069
gui_dim_t gui_widget_getinnerheight(gui_handle_p h)
Get inner height total height - padding top - padding bottom
Definition: gui_widget.c:1746
uint8_t gui_widget_setfontdefault(const gui_font_t *font)
Set default font for widgets used on widget creation.
Definition: gui_widget.c:2436
uint8_t gui_widget_setposition(gui_handle_p h, gui_dim_t x, gui_dim_t y)
Set widget position relative to parent object in units of pixels.
Definition: gui_widget.c:1864
#define GUI_FLOAT(x)
Definition: gui_defs.h:250
uint8_t gui_widget_setpaddingright(gui_handle_p h, gui_dim_t x)
Set widget right padding.
Definition: gui_widget.c:2566
gui_dim_t gui_widget_getscrollx(gui_handle_p h)
Get widget scroll on X axis.
Definition: gui_widget.c:2402
uint8_t gui_widget_setpositionpercent(gui_handle_p h, float x, float y)
Set widget position relative to parent object in units of percent.
Definition: gui_widget.c:1876
uint8_t gui_widget_setfont(gui_handle_p h, const gui_font_t *font)
Set widget font for drawing operations.
Definition: gui_widget.c:1517
gui_dim_t gui_widget_getpaddingtop(gui_handle_p h)
Get widget top padding in units of pixels.
Definition: gui_widget.c:2666
void * gui_widget_getuserdata(gui_handle_p h)
Get custom user data from widget previously set with gui_widget_setuserdata.
Definition: gui_widget.c:2250
uint8_t gui_widget_setcolor(gui_handle_p h, uint8_t index, gui_color_t color)
Set color to widget specific index.
Definition: gui_widget.c:1207
Style information.
Definition: gui_defs.h:1049
const gui_char * gui_widget_gettext(gui_handle_p h)
Get text from widget.
Definition: gui_widget.c:1471
uint32_t gui_id_t
Definition: gui_defs.h:209
float gui_widget_getheightoriginal(gui_handle_p h, uint8_t *is_percent)
Get widget height in original units.
Definition: gui_widget.c:1805
gui_widget_evt_t
Control parameters for widget.
Definition: gui_defs.h:793