EasyGUI
gui_defs.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_DEFS_H
34 #define GUI_HDR_DEFS_H
35 
36 /* C++ detection */
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
41 /* List of includes */
42 #include <stdlib.h>
43 #include <string.h>
44 #include <stdint.h>
45 #include <stdio.h>
46 #include <stddef.h>
47 #include "gui_config.h"
48 #include "pt/pt.h"
49 
68 #define GUI_FLAG_REDRAW ((uint32_t)0x00000001)
69 #define GUI_FLAG_CHILD ((uint32_t)0x00000002)
70 #define GUI_FLAG_DYNAMICTEXTALLOC ((uint32_t)0x00000004)
71 #define GUI_FLAG_ACTIVE ((uint32_t)0x00000008)
72 #define GUI_FLAG_FOCUS ((uint32_t)0x00000010)
73 #define GUI_FLAG_HIDDEN ((uint32_t)0x00000020)
74 #define GUI_FLAG_DISABLED ((uint32_t)0x00000040)
75 #define GUI_FLAG_3D ((uint32_t)0x00000080)
76 #define GUI_FLAG_WIDTH_PERCENT ((uint32_t)0x00000100)
77 #define GUI_FLAG_HEIGHT_PERCENT ((uint32_t)0x00000200)
78 #define GUI_FLAG_XPOS_PERCENT ((uint32_t)0x00000400)
79 #define GUI_FLAG_YPOS_PERCENT ((uint32_t)0x00000800)
80 #define GUI_FLAG_EXPANDED ((uint32_t)0x00001000)
81 #define GUI_FLAG_REMOVE ((uint32_t)0x00002000)
82 #define GUI_FLAG_IGNORE_INVALIDATE ((uint32_t)0x00004000)
83 #define GUI_FLAG_FIRST_INVALIDATE ((uint32_t)0x00008000)
84 #define GUI_FLAG_TOUCH_MOVE ((uint32_t)0x00010000)
97 #define GUI_FLAG_WIDGET_ALLOW_CHILDREN ((uint32_t)0x00040000)
98 #define GUI_FLAG_WIDGET_DIALOG_BASE ((uint32_t)0x00080000)
99 #define GUI_FLAG_WIDGET_INVALIDATE_PARENT ((uint32_t)0x00100000)
105 #define GUI_FLAG_LCD_WAIT_LAYER_CONFIRM ((uint32_t)0x00000001)
114 #define GUI_HALIGN_MASK 0x03
115 #define GUI_HALIGN_LEFT 0x00
116 #define GUI_HALIGN_CENTER 0x01
117 #define GUI_HALIGN_RIGHT 0x02
119 #define GUI_VALIGN_MASK (0x03 << 2)
120 #define GUI_VALIGN_TOP (0x00 << 2)
121 #define GUI_VALIGN_CENTER (0x01 << 2)
122 #define GUI_VALIGN_BOTTOM (0x02 << 2)
140 #define GUI_KEY_UP ((uint32_t)0x0001)
141 #define GUI_KEY_DOWN ((uint32_t)0x0002)
142 #define GUI_KEY_LEFT ((uint32_t)0x0003)
143 #define GUI_KEY_RIGHT ((uint32_t)0x0004)
144 #define GUI_KEY_ESC ((uint32_t)0x0005)
145 #define GUI_KEY_PG_UP ((uint32_t)0x0006)
146 #define GUI_KEY_PG_DOWN ((uint32_t)0x0007)
147 #define GUI_KEY_BACKSPACE ((uint32_t)0x0008)
148 #define GUI_KEY_TAB ((uint32_t)0x0009)
149 #define GUI_KEY_LF ((uint32_t)'\n')
150 #define GUI_KEY_CR ((uint32_t)'\r')
151 #define GUI_KEY_WS ((uint32_t)' ')
152 #define GUI_KEY_SHIFT ((uint32_t)0x0015)
167 typedef enum guir {
168  guiOK = 0x00,
169  guiERROR = 0x01
170 } guir_t;
171 
177 typedef struct gui_linkedlist {
178  void* prev;
179  void* next;
181 
186 typedef struct gui_linkedlistmulti {
188  void* element;
190 
196 typedef struct gui_linkedlistroot {
197  void* first;
198  void* last;
200 
204 typedef struct gui_timer_core {
205  uint32_t time;
208 
209 typedef uint32_t gui_id_t;
210 typedef uint32_t gui_color_t;
211 typedef int16_t gui_dim_t;
212 typedef uint8_t gui_char;
213 #define _GT(x) (gui_char *)(x)
214 #define gui_const const
216 #define GUI_DIM_MIN ((gui_dim_t)0x8000)
217 #define GUI_DIM_MAX ((gui_dim_t)0x7FFF)
218 
225 #define GUI_ARRAYSIZE(x) (sizeof(x) / sizeof((x)[0]))
226 
227 #define GUI_COUNT_OF(x) GUI_ARRAYSIZE(x)
228 
234 #define gui_containerof(ptr, type, memb) (type *)((char *)(ptr) - (char *)offsetof(type, memb))
235 
243 #define GUI_U8(x) ((uint8_t)(x))
244 #define GUI_I8(x) ((int8_t)(x))
245 #define GUI_U16(x) ((uint16_t)(x))
246 #define GUI_I16(x) ((int16_t)(x))
247 #define GUI_U32(x) ((uint32_t)(x))
248 #define GUI_I32(x) ((int32_t)(x
249 #define GUI_VP(x) ((void *)(x))
250 #define GUI_FLOAT(x) ((float)(x))
251 #define GUI_DIM(x) ((gui_dim_t)(x))
260 struct gui_handle;
261 
265 typedef struct gui_handle* gui_handle_p;
266 
270 typedef void (*gui_eventcallback_t)(void);
271 
275 typedef struct {
279 
283 typedef enum {
287 
291 typedef enum {
292  touchHANDLED = 0x00,
296 
300 typedef struct {
301  uint8_t count;
305  uint32_t time;
307 
311 typedef struct {
325 #if GUI_CFG_TOUCH_MAX_PRESSES > 1 || __DOXYGEN__
326  float distance_old;
327  float distance;
328 #endif /* GUI_CFG_TOUCH_MAX_PRESSES > 1 || __DOXYGEN__ */
329  struct pt pt;
331 
335 typedef struct {
336 #if GUI_CFG_USE_UNICODE || __DOXYGEN__
337  gui_char keys[4];
338 #else
339  gui_char keys[1];
340 #endif
341  uint8_t flags;
342  uint32_t time;
344 
349 typedef struct {
352 
356 typedef enum {
357  keyHANDLED = 0x00,
360 
364 typedef struct {
369 } gui_display_t;
370 
374 typedef struct {
375  uint8_t num;
377  volatile uint8_t pending;
384 } gui_layer_t;
385 
389 typedef struct {
392  uint8_t pixel_size;
395  size_t layer_count;
397  uint32_t flags;
398 } gui_lcd_t;
399 
404 typedef struct {
407  uint8_t bpp;
408  const uint8_t* image;
410 
414 typedef enum {
431 
435 typedef struct gui_ll_t {
436  void (*Init) (gui_lcd_t *);
437  uint8_t (*IsReady) (gui_lcd_t *);
441  void (*Copy) (gui_lcd_t *, gui_layer_t *, void *, const void *, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t);
442  void (*CopyBlend) (gui_lcd_t *, gui_layer_t *, void *, const void *, uint8_t, uint8_t, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t);
446  void (*DrawImage16) (gui_lcd_t *, gui_layer_t *, const gui_image_desc_t *, void *, const void *, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t);
447  void (*DrawImage24) (gui_lcd_t *, gui_layer_t *, const gui_image_desc_t *, void *, const void *, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t);
448  void (*DrawImage32) (gui_lcd_t *, gui_layer_t *, const gui_image_desc_t *, void *, const void *, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t);
449  void (*CopyChar) (gui_lcd_t *, gui_layer_t *, void *, const void *, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t, gui_color_t);
450 } gui_ll_t;
451 
461 typedef struct {
462  uint8_t x_size;
463  uint8_t y_size;
464  uint8_t x_pos;
465  uint8_t y_pos;
466  uint8_t x_margin;
467  const uint8_t* data;
469 
473 typedef struct {
474  const gui_char* name;
475  uint8_t size;
476  uint16_t startchar;
477  uint16_t endchar;
478  uint8_t flags;
480 } gui_font_t;
481 
482 #define GUI_FLAG_FONT_AA ((uint8_t)0x01)
483 #define GUI_FLAG_TEXT_RIGHTALIGN ((uint8_t)0x02)
484 #define GUI_FLAG_TEXT_MULTILINE ((uint8_t)0x04)
485 #define GUI_FLAG_TEXT_EDITMODE ((uint8_t)0x08)
487 #if defined(GUI_INTERNAL) || __DOXYGEN__
488 
491 typedef struct {
494  const gui_font_t* font;
496 #endif /* defined(GUI_INTERNAL) || __DOXYGEN__ */
497 
498 #if !__DOXYGEN__
499 #define ________ 0x00
500 #define _______X 0x01
501 #define ______X_ 0x02
502 #define ______XX 0x03
503 #define _____X__ 0x04
504 #define _____X_X 0x05
505 #define _____XX_ 0x06
506 #define _____XXX 0x07
507 #define ____X___ 0x08
508 #define ____X__X 0x09
509 #define ____X_X_ 0x0A
510 #define ____X_XX 0x0B
511 #define ____XX__ 0x0C
512 #define ____XX_X 0x0D
513 #define ____XXX_ 0x0E
514 #define ____XXXX 0x0F
515 #define ___X____ 0x10
516 #define ___X___X 0x11
517 #define ___X__X_ 0x12
518 #define ___X__XX 0x13
519 #define ___X_X__ 0x14
520 #define ___X_X_X 0x15
521 #define ___X_XX_ 0x16
522 #define ___X_XXX 0x17
523 #define ___XX___ 0x18
524 #define ___XX__X 0x19
525 #define ___XX_X_ 0x1A
526 #define ___XX_XX 0x1B
527 #define ___XXX__ 0x1C
528 #define ___XXX_X 0x1D
529 #define ___XXXX_ 0x1E
530 #define ___XXXXX 0x1F
531 #define __X_____ 0x20
532 #define __X____X 0x21
533 #define __X___X_ 0x22
534 #define __X___XX 0x23
535 #define __X__X__ 0x24
536 #define __X__X_X 0x25
537 #define __X__XX_ 0x26
538 #define __X__XXX 0x27
539 #define __X_X___ 0x28
540 #define __X_X__X 0x29
541 #define __X_X_X_ 0x2A
542 #define __X_X_XX 0x2B
543 #define __X_XX__ 0x2C
544 #define __X_XX_X 0x2D
545 #define __X_XXX_ 0x2E
546 #define __X_XXXX 0x2F
547 #define __XX____ 0x30
548 #define __XX___X 0x31
549 #define __XX__X_ 0x32
550 #define __XX__XX 0x33
551 #define __XX_X__ 0x34
552 #define __XX_X_X 0x35
553 #define __XX_XX_ 0x36
554 #define __XX_XXX 0x37
555 #define __XXX___ 0x38
556 #define __XXX__X 0x39
557 #define __XXX_X_ 0x3A
558 #define __XXX_XX 0x3B
559 #define __XXXX__ 0x3C
560 #define __XXXX_X 0x3D
561 #define __XXXXX_ 0x3E
562 #define __XXXXXX 0x3F
563 #define _X______ 0x40
564 #define _X_____X 0x41
565 #define _X____X_ 0x42
566 #define _X____XX 0x43
567 #define _X___X__ 0x44
568 #define _X___X_X 0x45
569 #define _X___XX_ 0x46
570 #define _X___XXX 0x47
571 #define _X__X___ 0x48
572 #define _X__X__X 0x49
573 #define _X__X_X_ 0x4A
574 #define _X__X_XX 0x4B
575 #define _X__XX__ 0x4C
576 #define _X__XX_X 0x4D
577 #define _X__XXX_ 0x4E
578 #define _X__XXXX 0x4F
579 #define _X_X____ 0x50
580 #define _X_X___X 0x51
581 #define _X_X__X_ 0x52
582 #define _X_X__XX 0x53
583 #define _X_X_X__ 0x54
584 #define _X_X_X_X 0x55
585 #define _X_X_XX_ 0x56
586 #define _X_X_XXX 0x57
587 #define _X_XX___ 0x58
588 #define _X_XX__X 0x59
589 #define _X_XX_X_ 0x5A
590 #define _X_XX_XX 0x5B
591 #define _X_XXX__ 0x5C
592 #define _X_XXX_X 0x5D
593 #define _X_XXXX_ 0x5E
594 #define _X_XXXXX 0x5F
595 #define _XX_____ 0x60
596 #define _XX____X 0x61
597 #define _XX___X_ 0x62
598 #define _XX___XX 0x63
599 #define _XX__X__ 0x64
600 #define _XX__X_X 0x65
601 #define _XX__XX_ 0x66
602 #define _XX__XXX 0x67
603 #define _XX_X___ 0x68
604 #define _XX_X__X 0x69
605 #define _XX_X_X_ 0x6A
606 #define _XX_X_XX 0x6B
607 #define _XX_XX__ 0x6C
608 #define _XX_XX_X 0x6D
609 #define _XX_XXX_ 0x6E
610 #define _XX_XXXX 0x6F
611 #define _XXX____ 0x70
612 #define _XXX___X 0x71
613 #define _XXX__X_ 0x72
614 #define _XXX__XX 0x73
615 #define _XXX_X__ 0x74
616 #define _XXX_X_X 0x75
617 #define _XXX_XX_ 0x76
618 #define _XXX_XXX 0x77
619 #define _XXXX___ 0x78
620 #define _XXXX__X 0x79
621 #define _XXXX_X_ 0x7A
622 #define _XXXX_XX 0x7B
623 #define _XXXXX__ 0x7C
624 #define _XXXXX_X 0x7D
625 #define _XXXXXX_ 0x7E
626 #define _XXXXXXX 0x7F
627 #define X_______ 0x80
628 #define X______X 0x81
629 #define X_____X_ 0x82
630 #define X_____XX 0x83
631 #define X____X__ 0x84
632 #define X____X_X 0x85
633 #define X____XX_ 0x86
634 #define X____XXX 0x87
635 #define X___X___ 0x88
636 #define X___X__X 0x89
637 #define X___X_X_ 0x8A
638 #define X___X_XX 0x8B
639 #define X___XX__ 0x8C
640 #define X___XX_X 0x8D
641 #define X___XXX_ 0x8E
642 #define X___XXXX 0x8F
643 #define X__X____ 0x90
644 #define X__X___X 0x91
645 #define X__X__X_ 0x92
646 #define X__X__XX 0x93
647 #define X__X_X__ 0x94
648 #define X__X_X_X 0x95
649 #define X__X_XX_ 0x96
650 #define X__X_XXX 0x97
651 #define X__XX___ 0x98
652 #define X__XX__X 0x99
653 #define X__XX_X_ 0x9A
654 #define X__XX_XX 0x9B
655 #define X__XXX__ 0x9C
656 #define X__XXX_X 0x9D
657 #define X__XXXX_ 0x9E
658 #define X__XXXXX 0x9F
659 #define X_X_____ 0xA0
660 #define X_X____X 0xA1
661 #define X_X___X_ 0xA2
662 #define X_X___XX 0xA3
663 #define X_X__X__ 0xA4
664 #define X_X__X_X 0xA5
665 #define X_X__XX_ 0xA6
666 #define X_X__XXX 0xA7
667 #define X_X_X___ 0xA8
668 #define X_X_X__X 0xA9
669 #define X_X_X_X_ 0xAA
670 #define X_X_X_XX 0xAB
671 #define X_X_XX__ 0xAC
672 #define X_X_XX_X 0xAD
673 #define X_X_XXX_ 0xAE
674 #define X_X_XXXX 0xAF
675 #define X_XX____ 0xB0
676 #define X_XX___X 0xB1
677 #define X_XX__X_ 0xB2
678 #define X_XX__XX 0xB3
679 #define X_XX_X__ 0xB4
680 #define X_XX_X_X 0xB5
681 #define X_XX_XX_ 0xB6
682 #define X_XX_XXX 0xB7
683 #define X_XXX___ 0xB8
684 #define X_XXX__X 0xB9
685 #define X_XXX_X_ 0xBA
686 #define X_XXX_XX 0xBB
687 #define X_XXXX__ 0xBC
688 #define X_XXXX_X 0xBD
689 #define X_XXXXX_ 0xBE
690 #define X_XXXXXX 0xBF
691 #define XX______ 0xC0
692 #define XX_____X 0xC1
693 #define XX____X_ 0xC2
694 #define XX____XX 0xC3
695 #define XX___X__ 0xC4
696 #define XX___X_X 0xC5
697 #define XX___XX_ 0xC6
698 #define XX___XXX 0xC7
699 #define XX__X___ 0xC8
700 #define XX__X__X 0xC9
701 #define XX__X_X_ 0xCA
702 #define XX__X_XX 0xCB
703 #define XX__XX__ 0xCC
704 #define XX__XX_X 0xCD
705 #define XX__XXX_ 0xCE
706 #define XX__XXXX 0xCF
707 #define XX_X____ 0xD0
708 #define XX_X___X 0xD1
709 #define XX_X__X_ 0xD2
710 #define XX_X__XX 0xD3
711 #define XX_X_X__ 0xD4
712 #define XX_X_X_X 0xD5
713 #define XX_X_XX_ 0xD6
714 #define XX_X_XXX 0xD7
715 #define XX_XX___ 0xD8
716 #define XX_XX__X 0xD9
717 #define XX_XX_X_ 0xDA
718 #define XX_XX_XX 0xDB
719 #define XX_XXX__ 0xDC
720 #define XX_XXX_X 0xDD
721 #define XX_XXXX_ 0xDE
722 #define XX_XXXXX 0xDF
723 #define XXX_____ 0xE0
724 #define XXX____X 0xE1
725 #define XXX___X_ 0xE2
726 #define XXX___XX 0xE3
727 #define XXX__X__ 0xE4
728 #define XXX__X_X 0xE5
729 #define XXX__XX_ 0xE6
730 #define XXX__XXX 0xE7
731 #define XXX_X___ 0xE8
732 #define XXX_X__X 0xE9
733 #define XXX_X_X_ 0xEA
734 #define XXX_X_XX 0xEB
735 #define XXX_XX__ 0xEC
736 #define XXX_XX_X 0xED
737 #define XXX_XXX_ 0xEE
738 #define XXX_XXXX 0xEF
739 #define XXXX____ 0xF0
740 #define XXXX___X 0xF1
741 #define XXXX__X_ 0xF2
742 #define XXXX__XX 0xF3
743 #define XXXX_X__ 0xF4
744 #define XXXX_X_X 0xF5
745 #define XXXX_XX_ 0xF6
746 #define XXXX_XXX 0xF7
747 #define XXXXX___ 0xF8
748 #define XXXXX__X 0xF9
749 #define XXXXX_X_ 0xFA
750 #define XXXXX_XX 0xFB
751 #define XXXXXX__ 0xFC
752 #define XXXXXX_X 0xFD
753 #define XXXXXXX_ 0xFE
754 #define XXXXXXXX 0xFF
755 #endif /* !__DOXYGEN__ */
756 
769 typedef struct gui_timer {
771  uint16_t period;
772  uint16_t counter;
773  uint8_t flags;
774  void* params;
775  void (*callback)(struct gui_timer *);
776 } gui_timer_t;
777 
783 
793 typedef enum {
794  GUI_EVT_NONE = 0x00,
795 #if defined(GUI_INTERNAL) || __DOXYGEN__
796 
805 
813 
821 
829 #endif /* defined(GUI_INTERNAL) || __DOXYGEN__ */
830 
840  GUI_EVT_INIT = 0x05,
841 
849 
857 
865 
874 
884 
893 
902 
913 
924 
933 
945 
954 
962 
970 
978 
986 
999 
1012 
1022 
1033 
1045 
1049 typedef struct {
1050  void* arg;
1051 } gui_style_t;
1052 
1057 
1061 typedef struct {
1062  uint16_t type;
1063  void* data;
1065 
1069 typedef struct {
1070  union {
1071  int i;
1072  int16_t i16;
1077  gui_handle_p h;
1078  } u;
1079 } gui_evt_param_t;
1080 
1084 typedef struct {
1085  union {
1086  uint8_t u8;
1089  } u;
1091 
1103 typedef 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);
1104 
1105 #define GUI_EVT_PARAMTYPE_DISP(x) (x)->u.disp
1106 #define GUI_EVT_PARAMTYPE_TOUCH(x) (x)->u.td
1107 #define GUI_EVT_PARAMTYPE_KEYBOARD(x) (x)->u.kd
1108 #define GUI_EVT_PARAMTYPE_WIDGETPARAM(x) (x)->u.wp
1109 #define GUI_EVT_PARAMTYPE_I16(x) (x)->u.i16
1110 #define GUI_EVT_PARAMTYPE_HANDLE(x) (x)->u.h
1111 #define GUI_EVT_PARAMTYPE_INT(x) (x)->u.i
1112 
1113 #define GUI_EVT_RESULTTYPE_TOUCH(x) (x)->u.ts
1114 #define GUI_EVT_RESULTTYPE_KEYBOARD(x) (x)->u.ks
1115 #define GUI_EVT_RESULTTYPE_U8(x) (x)->u.u8
1116 
1120 typedef struct {
1121  const gui_char* name;
1122  uint16_t size;
1123  uint32_t flags;
1126  uint8_t color_count;
1127 } gui_widget_t;
1128 
1129 #if defined(GUI_INTERNAL) || __DOXYGEN__
1130 
1134 typedef struct gui_handle {
1139  uint32_t footprint;
1142  struct gui_handle* parent;
1144  float x;
1145  float y;
1146  float width;
1147  float height;
1149 #if GUI_CFG_USE_POS_SIZE_CACHE || __DOXYGEN__
1150  /* Absolute values for position and size, changed each time position/size is modified */
1156  /* Visible parts on screen, used on clipping calculations */
1161 #endif /* GUI_CFG_USE_POS_SIZE_CACHE */
1162 
1163  uint32_t padding;
1165  int32_t zindex;
1167 #if GUI_CFG_USE_ALPHA || __DOXYGEN__
1168  uint8_t alpha;
1169 #endif /* GUI_CFG_USE_ALPHA */
1170  uint32_t flags;
1173  size_t textmemsize;
1174  size_t textcursor;
1178  /* Scroll feature, available only for widgets with children support */
1182  void* arg;
1183 } gui_handle;
1184 #endif /* defined(GUI_INTERNAL) || __DOXYGEN__ */
1185 
1189 typedef gui_handle_p (*gui_widget_createfunc_fn)(gui_id_t, float, float, float, float, gui_handle_p, gui_widget_evt_fn, uint16_t);
1190 
1199 typedef struct {
1200  const gui_char* lang;
1201  const gui_char** entries;
1202  size_t count;
1204 
1209 typedef struct gui_translate {
1212 } gui_translate_t;
1213 
1218 /* C++ detection */
1219 #ifdef __cplusplus
1220 }
1221 #endif
1222 
1223 #endif /* GUI_HDR_DEFS_H */
gui_dim_t y_scroll
Definition: gui_defs.h:1180
Notification when touch move event occurs on widget.
Definition: gui_defs.h:944
gui_dim_t x_size
Definition: gui_defs.h:405
gui_dim_t x_scroll
Definition: gui_defs.h:1179
int32_t zindex
Definition: gui_defs.h:1165
const gui_char * name
Definition: gui_defs.h:1121
void(* Fill)(gui_lcd_t *, gui_layer_t *, void *, gui_dim_t, gui_dim_t, gui_dim_t, gui_color_t)
Definition: gui_defs.h:440
uint8_t count
Definition: gui_defs.h:301
Value of widget has been changed.
Definition: gui_defs.h:1011
GUI LCD structure.
Definition: gui_defs.h:389
uint8_t alpha
Definition: gui_defs.h:1168
const gui_font_t * font
Definition: gui_defs.h:1171
gui_handle_p(* gui_widget_createfunc_fn)(gui_id_t, float, float, float, float, gui_handle_p, gui_widget_evt_fn, uint16_t)
Widget create function footprint for structures as callbacks.
Definition: gui_defs.h:1189
GUI FONT character information.
Definition: gui_defs.h:461
uint32_t flags
Definition: gui_defs.h:1170
gui_display_t display
Definition: gui_defs.h:378
Single touch data structure.
Definition: gui_defs.h:300
uint8_t y_pos
Definition: gui_defs.h:465
gui_touch_state_t
Touch state on widget.
Definition: gui_defs.h:283
Definition: gui_defs.h:285
uint32_t flags
Definition: gui_defs.h:1123
gui_widget_evt_fn callback
Definition: gui_defs.h:1124
Linked list root structure for start and end widget in structure.
Definition: gui_defs.h:196
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
gui_dim_t abs_visible_x2
Definition: gui_defs.h:1159
uint8_t num
Definition: gui_defs.h:375
void * next
Definition: gui_defs.h:179
gui_dim_t height
Definition: gui_defs.h:391
size_t layer_count
Definition: gui_defs.h:395
guir_t
Results enumeration.
Definition: gui_defs.h:167
void * prev
Definition: gui_defs.h:178
Definition: gui_defs.h:293
float width
Definition: gui_defs.h:1146
gui_touch_data_t ts
Definition: gui_defs.h:312
Widget should increase/decrease selection.
Definition: gui_defs.h:1032
void(* DrawImage24)(gui_lcd_t *, gui_layer_t *, const gui_image_desc_t *, void *, const void *, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t)
Definition: gui_defs.h:447
uint16_t endchar
Definition: gui_defs.h:477
float distance
Definition: gui_defs.h:327
int i
Definition: gui_defs.h:1071
uint16_t startchar
Definition: gui_defs.h:476
Check if widget should not be added to linked list after creation.
Definition: gui_defs.h:812
uint8_t(* IsReady)(gui_lcd_t *)
Definition: gui_defs.h:437
gui_linkedlist_t list
Definition: gui_defs.h:492
Called when dialog is dismissed.
Definition: gui_defs.h:1043
Structure used in setting and getting parameter values from widgets using callbacks.
Definition: gui_defs.h:1061
gui_dim_t abs_x
Definition: gui_defs.h:1151
Definition: gui_defs.h:294
Notification called when widget clears widget state.
Definition: gui_defs.h:901
A new child widget has been added to parent's linked list. It is called on parent widget.
Definition: gui_defs.h:848
Structure of output results for widget callback.
Definition: gui_defs.h:1084
gui_dim_t abs_y
Definition: gui_defs.h:1152
void * last
Definition: gui_defs.h:198
const gui_color_t * colors
Definition: gui_defs.h:1125
gui_timer_t * gui_timer_p
Pointer to gui_timer_t.
Definition: gui_defs.h:782
Notification for active status on widget.
Definition: gui_defs.h:912
gui_layer_t * active_layer
Definition: gui_defs.h:393
gui_display_t * disp
Definition: gui_defs.h:1073
uint8_t gui_char
Definition: gui_defs.h:212
Translation language structure.
Definition: gui_defs.h:1199
gui_dim_t y1
Definition: gui_defs.h:366
uint8_t bpp
Definition: gui_defs.h:407
void(* SetPixel)(gui_lcd_t *, gui_layer_t *, gui_dim_t, gui_dim_t, gui_color_t)
Definition: gui_defs.h:438
guii_keyboard_status_t
Keyboard internal processing enumeration.
Definition: gui_defs.h:356
Color gradient definition.
Definition: gui_defs.h:275
float x
Definition: gui_defs.h:1144
gui_layer_t * layers
Definition: gui_defs.h:396
Draw widget on screen.
Definition: gui_defs.h:856
gui_dim_t widget_x
Definition: gui_defs.h:321
uint8_t pixel_size
Definition: gui_defs.h:392
Notification when long press has been detected.
Definition: gui_defs.h:969
#define GUI_CFG_TOUCH_MAX_PRESSES
Number of touch presses available at a time.
Definition: gui_config_default.h:85
Check if widget can be removed. User can perform check if for example widget needs save or similar op...
Definition: gui_defs.h:873
uint8_t x_size
Definition: gui_defs.h:462
gui_widget_evt_fn callback
Definition: gui_defs.h:1141
const gui_font_char_t * data
Definition: gui_defs.h:479
Notification when widget selection has changed.
Definition: gui_defs.h:998
void(* DrawImage32)(gui_lcd_t *, gui_layer_t *, const gui_image_desc_t *, void *, const void *, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t)
Definition: gui_defs.h:448
uint8_t flags
Definition: gui_defs.h:773
const gui_font_t * font
Definition: gui_defs.h:494
guii_touch_data_t * td
Definition: gui_defs.h:1074
uint32_t gui_color_t
Definition: gui_defs.h:210
Definition: gui_defs.h:357
gui_dim_t widget_y
Definition: gui_defs.h:322
const uint8_t * data
Definition: gui_defs.h:467
const uint8_t * image
Definition: gui_defs.h:408
Set user parameter for widget.
Definition: gui_defs.h:820
Structure for each widget type.
Definition: gui_defs.h:1120
Notification when touch up event occurs on widget.
Definition: gui_defs.h:953
gui_dim_t width
Definition: gui_defs.h:390
void(* CopyChar)(gui_lcd_t *, gui_layer_t *, void *, const void *, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t, gui_color_t)
Definition: gui_defs.h:449
Widget text value has been changed.
Definition: gui_defs.h:1021
uint32_t footprint
Definition: gui_defs.h:1139
gui_dim_t height
Definition: gui_defs.h:381
Single key data structure.
Definition: gui_defs.h:335
GUI_LL_Command_t
Low-level LCD command enumeration.
Definition: gui_defs.h:414
uint32_t time
Definition: gui_defs.h:342
gui_linkedlist_t list
Definition: gui_defs.h:1135
uint8_t size
Definition: gui_defs.h:475
GUI clipping management.
Definition: gui_defs.h:364
gui_color_t * colors
Definition: gui_defs.h:1176
gui_dim_t widget_height
Definition: gui_defs.h:324
void(* DrawHLine)(gui_lcd_t *, gui_layer_t *, gui_dim_t, gui_dim_t, gui_dim_t, gui_color_t)
Definition: gui_defs.h:443
Definition: gui_defs.h:168
gui_color_t start
Definition: gui_defs.h:276
guii_keyboard_data_t * kd
Definition: gui_defs.h:1075
uint32_t time
Definition: gui_defs.h:205
gui_layer_t * drawing_layer
Definition: gui_defs.h:394
Called just after widget has been created. Used for internal widget purpose only.
Definition: gui_defs.h:804
uint8_t color_count
Definition: gui_defs.h:1126
void(* DrawImage16)(gui_lcd_t *, gui_layer_t *, const gui_image_desc_t *, void *, const void *, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t)
Definition: gui_defs.h:446
void(* FillRect)(gui_lcd_t *, gui_layer_t *, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t, gui_color_t)
Definition: gui_defs.h:445
uint32_t time
Definition: gui_defs.h:305
gui_dim_t y2
Definition: gui_defs.h:368
gui_style_t * gui_style_p
Style handle object.
Definition: gui_defs.h:1056
void * data
Definition: gui_defs.h:1063
gui_keyboard_data_t kb
Definition: gui_defs.h:350
gui_dim_t y_size
Definition: gui_defs.h:406
void * params
Definition: gui_defs.h:774
Notification when key has been pushed to this widget.
Definition: gui_defs.h:985
LCD layer structure.
Definition: gui_defs.h:374
Linked list structure.
Definition: gui_defs.h:177
struct gui_handle * parent
Definition: gui_defs.h:1142
uint32_t flags
Definition: gui_defs.h:397
FONT structure for writing usage.
Definition: gui_defs.h:473
uint8_t x_margin
Definition: gui_defs.h:466
const gui_char * lang
Definition: gui_defs.h:1200
Internal single key data structure.
Definition: gui_defs.h:349
volatile uint8_t pending
Definition: gui_defs.h:377
Notification before widget delete will actually happen. In case of specific user allocations in memor...
Definition: gui_defs.h:883
gui_dim_t abs_visible_y1
Definition: gui_defs.h:1158
uint16_t counter
Definition: gui_defs.h:772
void(* Init)(gui_lcd_t *)
Definition: gui_defs.h:436
const gui_translate_language_t * source
Definition: gui_defs.h:1210
Internal touch structure used for widget callbacks.
Definition: gui_defs.h:311
Char temporary entry stored in RAM for faster copy with blending operations.
Definition: gui_defs.h:491
gui_dim_t y_pos
Definition: gui_defs.h:383
gui_dim_t widget_width
Definition: gui_defs.h:323
gui_widget_param * wp
Definition: gui_defs.h:1076
gui_dim_t abs_height
Definition: gui_defs.h:1154
size_t count
Definition: gui_defs.h:1202
Initialize low-level part of GUI.
Definition: gui_defs.h:429
gui_color_t(* GetPixel)(gui_lcd_t *, gui_layer_t *, gui_dim_t, gui_dim_t)
Definition: gui_defs.h:439
#define gui_const
Definition: gui_defs.h:214
int16_t i16
Definition: gui_defs.h:1072
gui_color_t stop
Definition: gui_defs.h:277
gui_handle_p h
Definition: gui_defs.h:1077
int16_t gui_dim_t
Definition: gui_defs.h:211
void(* Copy)(gui_lcd_t *, gui_layer_t *, void *, const void *, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t)
Definition: gui_defs.h:441
gui_dim_t abs_visible_x1
Definition: gui_defs.h:1157
Notification for cleared active status on widget.
Definition: gui_defs.h:923
uint8_t y_size
Definition: gui_defs.h:463
Timer structure.
Definition: gui_defs.h:769
Definition: gui_defs.h:169
Definition: pt.h:54
uint8_t flags
Definition: gui_defs.h:478
gui_id_t id
Definition: gui_defs.h:1138
guii_touch_status_t ts
Definition: gui_defs.h:1087
gui_linkedlist_t list
Definition: gui_defs.h:770
Draw widget on screen after its children widgets were drawn.
Definition: gui_defs.h:864
Structure used for dynamic struct allocation.
Definition: gui_defs.h:186
uint16_t period
Definition: gui_defs.h:771
const gui_widget_t * widget
Definition: gui_defs.h:1140
gui_dim_t width
Definition: gui_defs.h:380
Initialize low-level part of GUI.
Definition: gui_defs.h:421
gui_char * text
Definition: gui_defs.h:1172
uint8_t x_pos
Definition: gui_defs.h:464
Widget has been created and ready to init for future setup.
Definition: gui_defs.h:840
gui_dim_t x1
Definition: gui_defs.h:365
Notification when touch down event occurs on widget.
Definition: gui_defs.h:932
uint32_t padding
Definition: gui_defs.h:1163
float y
Definition: gui_defs.h:1145
size_t textmemsize
Definition: gui_defs.h:1173
gui_dim_t abs_visible_y2
Definition: gui_defs.h:1160
Structure of input parameters for widget callback.
Definition: gui_defs.h:1069
Notification when double click has been detected.
Definition: gui_defs.h:977
Definition: gui_defs.h:292
Image descriptor structure.
Definition: gui_defs.h:404
gui_dim_t x_pos
Definition: gui_defs.h:382
gui_touch_state_t status
Definition: gui_defs.h:304
Core timer structure for GUI timers.
Definition: gui_defs.h:204
uint8_t u8
Definition: gui_defs.h:1086
float distance_old
Definition: gui_defs.h:326
Definition: gui_defs.h:284
gui_dim_t abs_width
Definition: gui_defs.h:1153
Basic translation structure for internal use.
Definition: gui_defs.h:1209
Definition: gui_defs.h:358
gui_linkedlist_t list
Definition: gui_defs.h:187
float height
Definition: gui_defs.h:1147
guii_touch_status_t
Touch internal processing enumeration.
Definition: gui_defs.h:291
const gui_font_char_t * ch
Definition: gui_defs.h:493
void * arg
Definition: gui_defs.h:1182
Notification called when widget becomes focused.
Definition: gui_defs.h:892
gui_linkedlistroot_t list
Definition: gui_defs.h:206
void(* DrawVLine)(gui_lcd_t *, gui_layer_t *, gui_dim_t, gui_dim_t, gui_dim_t, gui_color_t)
Definition: gui_defs.h:444
void(* gui_eventcallback_t)(void)
Global event callback function declaration.
Definition: gui_defs.h:270
gui_linkedlistroot_t root_list
Definition: gui_defs.h:1136
void(* CopyBlend)(gui_lcd_t *, gui_layer_t *, void *, const void *, uint8_t, uint8_t, gui_dim_t, gui_dim_t, gui_dim_t, gui_dim_t)
Definition: gui_defs.h:442
gui_dim_t x2
Definition: gui_defs.h:367
guii_keyboard_status_t ks
Definition: gui_defs.h:1088
void * first
Definition: gui_defs.h:197
const gui_char ** entries
Definition: gui_defs.h:1201
const gui_translate_language_t * active
Definition: gui_defs.h:1211
void * start_address
Definition: gui_defs.h:376
GUI Low-Level structure for drawing operations.
Definition: gui_defs.h:435
uint16_t size
Definition: gui_defs.h:1122
Style information.
Definition: gui_defs.h:1049
uint16_t type
Definition: gui_defs.h:1062
gui_timer_t * timer
Definition: gui_defs.h:1175
const gui_char * name
Definition: gui_defs.h:474
size_t textcursor
Definition: gui_defs.h:1174
uint8_t flags
Definition: gui_defs.h:341
uint32_t gui_id_t
Definition: gui_defs.h:209
Notification when click event has been detected.
Definition: gui_defs.h:961
void * element
Definition: gui_defs.h:188
Common GUI values for widgets.
Definition: gui_defs.h:1134
Get parameter for widget.
Definition: gui_defs.h:828
gui_widget_evt_t
Control parameters for widget.
Definition: gui_defs.h:793