33 #ifndef GUI_HDR_WIDGET_H 34 #define GUI_HDR_WIDGET_H 53 #include "gui/gui_draw.h" 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 112 #define guii_widget_iswidget(h) (__GH(h) != NULL && __GH(h)->footprint == GUI_WIDGET_FOOTPRINT) 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) \ 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) \ 144 #define guii_widget_getflag(h, flag) (__GH(h)->flags & (flag)) 154 #define guii_widget_getcoreflag(h, flag) (__GH(h)->widget->flags & (flag)) 163 #define guii_widget_setflag(h, flag) (__GH(h)->flags |= (flag)) 172 #define guii_widget_clrflag(h, flag) (__GH(h)->flags &= ~(flag)) 181 #define guii_widget_getparent(h) (__GH(h) != NULL ? __GH(h)->parent : NULL) 190 #define guii_widget_hasparent(h) (__GH(h) != NULL && __GH(h)->parent != NULL) 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)) 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)) 222 #define guii_widget_getparentwidth(h) GUI_DIM((guii_widget_hasparent(h) ? gui_widget_getwidth(guii_widget_getparent(h)) : GUI.lcd.width)) 231 #define guii_widget_getparentheight(h) GUI_DIM((guii_widget_hasparent(h) ? gui_widget_getheight(guii_widget_getparent(h)) : GUI.lcd.height)) 242 #define guii_widget_getparentinnerwidth(h) GUI_DIM((guii_widget_hasparent(h) ? gui_widget_getinnerwidth(guii_widget_getparent(h)) : GUI.lcd.width)) 253 #define guii_widget_getparentinnerheight(h) GUI_DIM((guii_widget_hasparent(h) ? gui_widget_getinnerheight(guii_widget_getparent(h)) : GUI.lcd.height)) 262 #if GUI_CFG_USE_ALPHA 263 #define guii_widget_isvisible(h) (!guii_widget_getflag(__GH(h), GUI_FLAG_HIDDEN) && __GH(h)->alpha) 265 #define guii_widget_isvisible(h) (!guii_widget_getflag(h, GUI_FLAG_HIDDEN)) 275 #define guii_widget_ishidden(h) (!guii_widget_isvisible(__GH(h))) 284 #define guii_widget_allowchildren(h) (!!guii_widget_getcoreflag(h, GUI_FLAG_WIDGET_ALLOW_CHILDREN)) 293 #define guii_widget_haschildren(h) (guii_widget_allowchildren(h) && gui_linkedlist_hasentries(&h->root_list)) 302 #define guii_widget_isdialogbase(h) (!!(guii_widget_getcoreflag(h, GUI_FLAG_WIDGET_DIALOG_BASE) || guii_widget_getflag(h, GUI_FLAG_WIDGET_DIALOG_BASE))) 311 #define guii_widget_isfocused(h) (!!guii_widget_getflag(h, GUI_FLAG_FOCUS)) 320 #define guii_widget_isactive(h) (!!guii_widget_getflag(h, GUI_FLAG_ACTIVE)) 330 #define guii_widget_hasalpha(h) (guii_widget_isvisible(h) && gui_widget_getalpha(h) < 0xFF) 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);
351 uint8_t gui_widget_setstyle(gui_handle_p h,
const gui_style_p style);
403 gui_widget_getwidthex(gui_handle_p h, uint8_t in_percent) {
408 gui_widget_getheightex(gui_handle_p h, uint8_t in_percent) {
480 uint8_t gui_widget_force_invalidate(gui_handle_p h);
538 #if defined(GUI_INTERNAL) && !__DOXYGEN__ 541 void guii_widget_init(
void);
544 uint8_t guii_widget_isinsideclippingregion(gui_handle_p h, uint8_t check_sib_cover);
547 void guii_widget_movedowntree(gui_handle_p h);
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);
555 uint8_t guii_widget_executeremove(
void);
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
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