35#ifndef __VSF_TGUI_CONTROLS_CONTROL_H__
36#define __VSF_TGUI_CONTROLS_CONTROL_H__
45#ifndef VSF_TGUI_V_TEMPLATE_TYPE_HEADER_FILE
46#if VSF_TGUI_CFG_RENDERING_TEMPLATE_SEL == VSF_TGUI_V_TEMPLATE_SIMPLE_VIEW
47# define VSF_TGUI_V_TEMPLATE_TYPE_HEADER_FILE "../view/simple_view/vsf_tgui_v_type.h"
48#elif VSF_TGUI_CFG_RENDERING_TEMPLATE_SEL == VSF_TGUI_V_TEMPLATE_SCGUI_VIEW
49# define VSF_TGUI_V_TEMPLATE_TYPE_HEADER_FILE "../view/scgui_view/vsf_tgui_v_type.h"
51# undef VSF_TGUI_CFG_RENDERING_TEMPLATE_SEL
52# define VSF_TGUI_CFG_RENDERING_TEMPLATE_SEL VSF_TGUI_V_TEMPLATE_EXAMPLE
53# define VSF_TGUI_V_TEMPLATE_TYPE_HEADER_FILE "../view/template/vsf_tgui_v_type.h"
56#include VSF_TGUI_V_TEMPLATE_TYPE_HEADER_FILE
59#if defined(__VSF_TGUI_CONTROLS_CONTROL_CLASS_IMPLEMENT)
60# define __PLOOC_CLASS_IMPLEMENT__
61# undef __VSF_TGUI_CONTROLS_CONTROL_CLASS_IMPLEMENT
62#elif defined(__VSF_TGUI_CONTROLS_CONTROL_CLASS_INHERIT)
63# define __PLOOC_CLASS_INHERIT__
64# undef __VSF_TGUI_CONTROLS_CONTROL_CLASS_INHERIT
75#define __VSF_TGUI_INTERFACE_CONTROLS_CONTROL { \
77 VSF_MSGT_NODE_HANDLER_TYPE_FSM, \
78 (vsf_msgt_method_fsm_t *)&vsf_tgui_control_msg_handler, \
80 .Status = (vsf_msgt_method_status_t *) \
81 &vsf_tgui_control_status_get, \
82 .Shoot = (vsf_msgt_method_shoot_t *)&vsf_tgui_control_shoot, \
85#define __VSF_TGUI_INTERFACE_CONTROLS_CONTAINER { \
87 VSF_MSGT_NODE_HANDLER_TYPE_FSM, \
88 (vsf_msgt_method_fsm_t *)&vsf_tgui_container_msg_handler, \
90 .Status = (vsf_msgt_method_status_t *) \
91 &vsf_tgui_control_status_get, \
92 .Shoot = (vsf_msgt_method_shoot_t *)&vsf_tgui_control_shoot, \
96#define VSF_TGUI_CTRL_STATUS_INITIALISED VSF_BIT(0)
97#define VSF_TGUI_CTRL_STATUS_ENABLED VSF_BIT(1)
98#define VSF_TGUI_CTRL_STATUS_VISIBLE VSF_BIT(2)
99#define VSF_TGUI_CTRL_STATUS_ACTIVE VSF_BIT(3)
100#define VSF_TGUI_CTRL_STATUS_HIDE_CONTAINER_CONTENT VSF_BIT(4)
104#if VSF_TGUI_CFG_SUPPORT_NAME_STRING == ENABLED
105# define ____tgui_name_string_tag(__name, __type) \
106 .node_name_ptr = "["#__type"]["#__name"]",
108# define ____tgui_name_string_tag(__name, __type)
111#define __tgui_name_string_tag(__name, __type) \
112 ____tgui_name_string_tag(__name, __type)
114#if VSF_MSG_TREE_CFG_SUPPORT_DUAL_LIST == ENABLED
115# define ____tgui_node_list_init(__name, __parent_addr, __previous, __next) \
117 .previous = (intptr_t)&((__parent_addr)->__name) \
118 - (intptr_t)&((__parent_addr)->__previous), \
119 .next = (intptr_t)&((__parent_addr)->__next) \
120 - (intptr_t)&((__parent_addr)->__name), \
123# define ____tgui_node_list_init(__name, __parent_addr, __previous, __next) \
125 .next = (intptr_t)&((__parent_addr)->__next) \
126 - (intptr_t)&((__parent_addr)->__name), \
131#define __tgui_node_list_init(__name, __parent_addr, __previous, __next) \
132 ____tgui_node_list_init(__name, __parent_addr, __previous, __next)
134#define __tgui_control_base( __NAME, \
142 .parent_ptr = (vsf_msgt_container_t *) \
143 &(((__TYPE *)(__PARENT_ADDR))->use_as__vsf_msgt_node_t), \
145 __tgui_node_list_init(__NAME, __PARENT_ADDR, __PREVIOUS, __NEXT)\
146 __tgui_name_string_tag(__NAME, __TYPE) \
147 .bIsEnabled = true, \
148 .bIsVisible = true, \
149 VSF_TGUI_V_CONTROL_STATIC_INIT_DEFAULT \
151 VSF_TGUI_V_CONTROL_STATIC_INIT_OVERRIDE \
154#define __tgui_control_base_const( __NAME, \
161 .__NAME = (const __TYPE) { \
162 .parent_ptr = (vsf_msgt_container_t *) \
163 &((__PARENT_ADDR)->use_as__vsf_msgt_node_t), \
165 __tgui_node_list_init(__NAME, __PARENT_ADDR, __PREVIOUS, __NEXT)\
166 __tgui_name_string_tag(__NAME, __TYPE) \
167 .bIsEnabled = true, \
168 .bIsVisible = true, \
169 VSF_TGUI_V_CONTROL_STATIC_INIT_DEFAULT \
171 VSF_TGUI_V_CONTROL_STATIC_INIT_OVERRIDE \
174#define __describe_tgui_control_base( __NAME, \
178 static const __TYPE __NAME = { \
180 __tgui_name_string_tag(__VAR, __TYPE) \
181 .bIsEnabled = true, \
182 .bIsVisible = true, \
183 VSF_TGUI_V_CONTROL_STATIC_INIT_DEFAULT \
185 VSF_TGUI_V_CONTROL_STATIC_INIT_OVERRIDE \
189#define __describe_tgui_container_base( __NAME, \
193 __describe_tgui_control_base( \
197 .is_container = true, \
198 .ContainerAttribute.bIsAutoSize = true, \
201 &((*(__TYPE *)0).__TYPE##_FirstNode), \
202 VSF_TGUI_V_CONTAINER_STATIC_INIT_DEFAULT \
204 VSF_TGUI_V_CONTAINER_STATIC_INIT_OVERRIDE \
207#define describe_tgui_container_base( __NAME, \
211 __describe_tgui_container_base( __NAME, \
216#define tgui_control_base( __NAME, \
223 __tgui_control_base( \
232#define tgui_control_base_const( __NAME, \
239 __tgui_control_base_const( \
249#define describe_tgui_control_base( __NAME, \
253 __describe_tgui_control_base( __NAME, \
259#define __tgui_control(__NAME, __PARENT_ADDR, __PREVIOUS, __NEXT, ...) \
260 tgui_control_base( __NAME, \
261 VSF_TGUI_COMPONENT_ID_CONTROL, \
262 vsf_tgui_control_t, \
268#define tgui_control(__NAME, __PARENT_ADDR, __PREVIOUS, __NEXT, ...) \
269 __tgui_control( __NAME, \
275#define __tgui_control_const(__NAME, __PARENT_ADDR, __PREVIOUS, __NEXT, ...) \
276 tgui_control_base_const(__NAME, \
277 VSF_TGUI_COMPONENT_ID_CONTROL, \
278 vsf_tgui_control_t, \
284#define tgui_control_const(__NAME, __PARENT_ADDR, __PREVIOUS, __NEXT, ...) \
285 __tgui_control_const( __NAME, \
291#define __use_tgui_container(__NAME, ...) \
293 implement(vsf_tgui_container_t) \
295 vsf_msgt_node_t __NAME##_FirstNode ; \
302#define use_tgui_container(__NAME, ...) __use_tgui_container(__NAME, __VA_ARGS__)
306#define __tgui_container_base( __NAME, \
320 .is_container = true, \
321 .ContainerAttribute.bIsAutoSize = true, \
324 &((__PARENT_ADDR)->__NAME.__NAME##_FirstNode), \
325 VSF_TGUI_V_CONTAINER_STATIC_INIT_DEFAULT \
327 VSF_TGUI_V_CONTAINER_STATIC_INIT_OVERRIDE \
330#define tgui_container_base(__NAME, \
337 __tgui_container_base( __NAME, \
345#define __tgui_container_base_const(__NAME, \
352 tgui_control_base_const( __NAME, \
358 .is_container = true, \
359 .ContainerAttribute.bIsAutoSize = true, \
362 &((__PARENT_ADDR)->__NAME.__NAME##_FirstNode), \
363 VSF_TGUI_V_CONTAINER_STATIC_INIT_DEFAULT \
365 VSF_TGUI_V_CONTAINER_STATIC_INIT_OVERRIDE \
368#define tgui_container_base_const(__NAME, \
375 __tgui_container_base_const(__NAME, \
383# define __tgui_container( __NAME, \
387 tgui_container_base(__NAME, \
388 VSF_TGUI_COMPONENT_ID_CONTAINER, \
389 vsf_tgui_container_t, \
396#define tgui_container( __NAME, \
401 __tgui_container(__NAME, \
463 const char *handler_name_ptr;
474#if VSF_TGUI_CFG_SUPPORT_CONTROL_LAYOUT_PADDING == ENABLED ||\
475 VSF_TGUI_CFG_SUPPORT_CONTROL_LAYOUT_MARGIN == ENABLED
487 implement(vsf_msgt_node_t)
488 vsf_msgt_node_t* node_ptr;
492 #if VSF_TGUI_CFG_SUPPORT_CONTROL_LAYOUT_ANCHOR == ENABLED
496 #if VSF_TGUI_CFG_SUPPORT_CONTROL_LAYOUT_DOCK == ENABLED
500 #if VSF_TGUI_CFG_SUPPORT_CONTROL_LAYOUT_MARGIN == ENABLED
504 #if VSF_TGUI_CFG_SUPPORT_CONTROL_LAYOUT_ALIGN == ENABLED
525 #if VSF_TGUI_CFG_SUPPORT_NAME_STRING == ENABLED
526 const char *name_ptr;
545 uint8_t bIsHideContentInsideContainer : 1;
553#if VSF_TGUI_CFG_SUPPORT_DIRTY_REGION == ENABLED
558 implement(vsf_tgui_v_control_t)
568 inherit(vsf_msgt_container_t)
571 implement(vsf_tgui_v_container_t)
579 uint8_t is_forced_to_refresh_whole_background : 1;
600 which(implement(vsf_tgui_container_t))
610 VSF_TGUI_CONTROL_REFRESHED_BY_PARENT = 0,
611 VSF_TGUI_CONTROL_REFRESHED_DIRECTLY_BY_USER
636#if VSF_TGUI_CFG_SUPPORT_TIMER == ENABLED
668#if VSF_TGUI_CFG_SUPPORT_TIMER == ENABLED
783 bool is_control_transparent);
802 const vsf_tgui_container_t *container_ptr);
817#if VSF_TGUI_CFG_REFRESH_SCHEME != VSF_TGUI_REFRESH_SCHEME_NONE
#define ENABLED
Definition __type.h:28
unsigned short uint16_t
Definition lvgl.h:41
unsigned int uint32_t
Definition lvgl.h:43
unsigned char uint8_t
Definition lvgl.h:40
signed char int8_t
Definition lvgl.h:38
unsigned char uint_fast8_t
Definition stdint.h:23
Definition vsf_tgui_control.h:630
vsf_tgui_control_method_t * Init
Definition vsf_tgui_control.h:632
vsf_tgui_control_method_t * Update
Definition vsf_tgui_control.h:633
i_tgui_v_vtable_t tView
Definition vsf_tgui_control.h:631
Definition vsf_tgui_control.h:622
vsf_tgui_v_method_render_t * Render
Definition vsf_tgui_control.h:625
vsf_tgui_v_method_t * Init
Definition vsf_tgui_control.h:623
vsf_tgui_v_method_t * Update
Definition vsf_tgui_control.h:627
vsf_tgui_v_method_t * Depose
Definition vsf_tgui_control.h:624
vsf_tgui_v_method_render_t * ContainerPostRender
Definition vsf_tgui_control.h:626
Definition vsf_tgui_control.h:449
uint16_t u10EvtMask
0 means no mask
Definition vsf_tgui_control.h:452
implement_ex(union { vsf_tgui_controal_fsm_t *FSM;vsf_eda_t *ptEDA;vsf_tgui_control_subcall_t *ptSubCall;}, fn) const char *handler_name_ptr
uint16_t u2Type
vsf_msgt_handler_type_t
Definition vsf_tgui_control.h:450
Definition vsf_tgui_common.h:271
Definition vsf_tgui_control.h:476
int8_t chLeft
Definition vsf_tgui_control.h:477
int8_t chTop
Definition vsf_tgui_control.h:478
int8_t chBottom
Definition vsf_tgui_control.h:480
int8_t chRight
Definition vsf_tgui_control.h:479
Definition vsf_tgui_common.h:558
Definition vsf_tgui_common.h:281
Definition vsf_tgui_common.h:276
Definition vsf_tgui_control.h:468
Definition vsf_tgui_common.h:591
Definition vsf_tgui_control.h:412
uint8_t bIsEnabled
Definition vsf_tgui_control.h:418
uint8_t chStatus
Definition vsf_tgui_control.h:413
uint8_t __skip_render_frame
Definition vsf_tgui_control.h:431
uint8_t bIsHideContentInsideContainer
Definition vsf_tgui_control.h:421
uint8_t __is_the_first_node_for_refresh
Definition vsf_tgui_control.h:428
uint8_t bIsVisible
Definition vsf_tgui_control.h:419
uint8_t bIsInitialised
Definition vsf_tgui_control.h:417
struct vsf_tgui_status_t::@138 Values
uint8_t bIsTransparent
Definition vsf_tgui_control.h:422
uint8_t __does_contain_builtin_structure
Definition vsf_tgui_control.h:429
uint8_t bIsActive
Definition vsf_tgui_control.h:420
uint8_t __skip_render
Definition vsf_tgui_control.h:430
Definition vsf_tgui_common.h:444
void(* vsf_param_eda_evthandler_t)(uintptr_t target, vsf_evt_t evt)
Definition vsf_eda.h:658
fsm_rt_t
Definition vsf_fsm.h:315
vsf_msgt_msg_t
Definition vsf_msg_tree.h:79
vsf_msgt_container_t * parent_ptr
parent node
Definition vsf_msg_tree.h:187
def_class(vsf_stream_fifo_t, which(vsf_stream_tx_t TX;vsf_stream_rx_t RX;), private:vsf_slist_queue_t union { vsf_stream_fifo_cfg_t cfg;struct { vsf_stream_dat_rdy_evt_t tDataReadyEventHandling;vsf_stream_dat_drn_evt_t tDataDrainEventHandling;vsf_stream_status_t Status;#if !defined(VSF_PBUF_QUEUE_CFG_ATOM_ACCESS) vsf_protect_region_t *pregion;#endif };};) end_def_class(vsf_stream_fifo_t) extern vsf_err_t vsf_stream_fifo_init(vsf_stream_fifo_t *obj_ptr
uintptr_t item_ptr
Definition vsf_pool.h:476
#define VSF_TGUI_CFG_SUPPORT_NAME_STRING
Definition vsf_tgui_cfg.h:120
#define VSF_TGUI_CFG_SUPPORT_CONTROL_LAYOUT_PADDING
Definition vsf_tgui_cfg.h:89
vsf_tgui_align_mode_t
Definition vsf_tgui_common.h:287
vsf_tgui_anchor_mode_t
Definition vsf_tgui_common.h:332
vsf_tgui_dock_mode_t
Definition vsf_tgui_common.h:320
struct vsf_tgui_control_t vsf_tgui_control_t
Definition vsf_tgui_common.h:555
struct vsf_tgui_root_container_t vsf_tgui_root_container_t
Definition vsf_tgui_common.h:556
bool vsf_tgui_control_is_in_range(const vsf_tgui_region_t *region_ptr, const vsf_tgui_location_t *ptLocation)
Definition vsf_tgui_control.c:281
vsf_tgui_size_t * vsf_tgui_control_get_size(const vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:225
vsf_tgui_region_t * vsf_tgui_get_absolute_control_region(const vsf_tgui_control_t *control_ptr, vsf_tgui_region_t *ptRegionBuffer)
Definition vsf_tgui_control.c:269
vsf_tgui_region_t * vsf_tgui_control_get_relative_region(const vsf_tgui_control_t *control_ptr, vsf_tgui_region_t *ptAbsoluteRegion)
Definition vsf_tgui_control.c:343
bool vsf_tgui_timer_is_working(vsf_tgui_timer_t *ptTimer)
Definition vsf_tgui_control.c:174
fsm_rt_t vsf_tgui_container_msg_handler(vsf_tgui_container_t *control_ptr, vsf_tgui_msg_t *ptMSG)
Definition vsf_tgui_control.c:1109
bool vsf_tgui_control_is_container(const vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:446
fsm_rt_t vk_tgui_container_update(vsf_tgui_container_t *container_ptr)
Definition vsf_tgui_control.c:1518
bool vsf_tgui_control_set_active(const vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:555
void vsf_tgui_timer_init(vsf_tgui_timer_t *ptTimer, const vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:120
vsf_tgui_status_t vsf_tgui_control_status_get(const vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:432
bool vsf_tgui_control_get_visible_region(const vsf_tgui_control_t *control_ptr, vsf_tgui_region_t *ptRegionBuffer)
get the visible region (with absolute location) !
Definition vsf_tgui_control.c:315
vsf_tgui_location_t * vsf_tgui_control_get_location(const vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:220
bool vsf_tgui_control_update(const vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:509
bool vsf_tgui_control_send_message(const vsf_tgui_control_t *control_ptr, vsf_tgui_evt_t event)
Definition vsf_tgui_control.c:490
vsf_tgui_location_t * __vk_tgui_calculate_control_location_from_parent(const vsf_tgui_control_t *control_ptr, const vsf_tgui_control_t *parent_ptr, vsf_tgui_location_t *ptLocation)
get the relative location information base on the location information ! of or derived from target co...
Definition vsf_tgui_control.c:194
bool vsf_tgui_control_set_is_transparent_bit(vsf_tgui_control_t *control_ptr, bool is_control_transparent)
update bIsTransparent bit in control status ! \parame control_ptr target control address !
Definition vsf_tgui_control.c:416
void vsf_tgui_timer_disable(vsf_tgui_timer_t *ptTimer)
Definition vsf_tgui_control.c:156
fsm_rt_t __vk_tgui_control_user_message_handling(vsf_tgui_control_t *control_ptr, const vsf_tgui_evt_t *event_ptr)
Definition vsf_tgui_control.c:580
uint_fast8_t vk_tgui_container_visible_item_get(const vsf_tgui_container_t *container_ptr)
Definition vsf_tgui_control.c:459
vsf_tgui_region_t * vsf_tgui_control_calculate_absolute_region(const vsf_tgui_control_t *control_ptr, vsf_tgui_region_t *region_ptr)
If you get a relative region inside a control, this function can calculate ! the absolute location an...
Definition vsf_tgui_control.c:259
const vsf_tgui_control_t * __vk_tgui_control_get_next_visible_one_within_container(const vsf_tgui_control_t *item_ptr)
Definition vsf_tgui_control.c:1163
vsf_tgui_t * vsf_tgui_control_get_gui_instance(const vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:483
bool vsf_tgui_control_shoot(const vsf_tgui_control_t *control_ptr, const vsf_tgui_location_t *ptLocation)
Definition vsf_tgui_control.c:386
fsm_rt_t vk_tgui_control_update(vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:1508
fsm_rt_t vk_tgui_control_init(vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:1523
fsm_rt_t __vsf_tgui_control_msg_handler(vsf_tgui_control_t *control_ptr, vsf_tgui_msg_t *ptMSG, const i_tgui_control_methods_t *ptMethods)
Definition vsf_tgui_control.c:727
void vsf_tgui_timer_enable(vsf_tgui_timer_t *ptTimer)
Definition vsf_tgui_control.c:135
void vsf_tgui_control_status_set(vsf_tgui_control_t *control_ptr, vsf_tgui_status_t Status)
Definition vsf_tgui_control.c:439
vsf_tgui_region_t * vsf_tgui_control_generate_dirty_region_from_parent_dirty_region(const vsf_tgui_control_t *parent_ptr, const vsf_tgui_region_t *ptParentDirtyRegion, const vsf_tgui_control_t *ptPrivate, vsf_tgui_region_t *ptNewDirtyRegionBuffer)
Definition vsf_tgui_control.c:359
fsm_rt_t vk_tgui_container_init(vsf_tgui_container_t *container_ptr)
Definition vsf_tgui_control.c:1534
vsf_tgui_control_t * vsf_tgui_control_get_parent(const vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:452
const vsf_tgui_root_container_t * vk_tgui_control_get_top(const vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:470
fsm_rt_t vsf_tgui_control_msg_handler(vsf_tgui_control_t *control_ptr, vsf_tgui_msg_t *ptMSG)
Definition vsf_tgui_control.c:1101
vsf_tgui_location_t * vsf_tgui_control_calculate_absolute_location(const vsf_tgui_control_t *control_ptr, vsf_tgui_location_t *ptOffset)
Definition vsf_tgui_control.c:230
bool vsf_tgui_control_update_tree(const vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.c:523
uint32_t bIsWorking
Definition vsf_tgui_control.h:660
fsm_rt_t vsf_tgui_v_method_render_t(vsf_tgui_t *gui_ptr, vsf_tgui_control_t *control_ptr, vsf_tgui_region_t *ptDirtyRegion, vsf_tgui_control_refresh_mode_t tMode)
Definition vsf_tgui_control.h:615
struct i_tgui_control_vtable_t i_tgui_control_methods_t
fsm_rt_t vsf_tgui_control_method_t(vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.h:620
end_def_class(vsf_tgui_container_t) declare_class(vsf_tgui_root_container_t) def_class(vsf_tgui_root_container_t
vsf_tgui_margin_t tContainerPadding
Definition vsf_tgui_control.h:590
which(union { inherit(vsf_msgt_container_t) vsf_tgui_control_t };vsf_tgui_v_container_t) implement_ex(struct
Definition vsf_tgui_control.h:566
uint32_t u29Interval
Definition vsf_tgui_control.h:652
fsm_rt_t vsf_tgui_v_method_t(vsf_tgui_t *gui_ptr, vsf_tgui_control_t *control_ptr)
Definition vsf_tgui_control.h:614
uint32_t bEnabled
Definition vsf_tgui_control.h:652
uint32_t bIsRepeat
Definition vsf_tgui_control.h:652
fsm_rt_t vsf_tgui_controal_fsm_t(vsf_tgui_control_t *node_ptr, vsf_tgui_msg_t *ptMSG)
Definition vsf_tgui_control.h:445
declare_class(vsf_tgui_control_t) typedef struct vsf_tgui_control_subcall_t
Definition vsf_tgui_control.h:437
vsf_tgui_control_refresh_mode_t
Definition vsf_tgui_control.h:612
uint8_t chVisibleItemCount
Definition vsf_tgui_control.h:581
vsf_tgui_control_subcall_t
Definition vsf_tgui_control.h:443
which(vsf_tgui_control_t vsf_tgui_v_label_t) public vsf_tgui_msg_t * ptMSG
Definition vsf_tgui_label.h:161
const vsf_tgui_control_t * control_ptr
Definition vsf_tgui_scguiv_port.h:91