LVGL V8 events

event

Details
Events are fired in LVGL when something happens that the user might be interested in, such as when an object

  • was clicked
  • scroll
  • value is changed
  • Repaint etc.
lv_obj_t * btn = lv_btn_create(lv_scr_act());
lv_obj_add_event_cb(btn, my_event_cb, LV_EVENT_CLICKED, NULL);   /*Assign an event callback*/

...

static void my_event_cb(lv_event_t * event)
{
    
    
    printf("Clicked\n");
}

In the example, LV_EVENT_CLICKED means that only when a click event occurs on the object, the event will be triggered and enter the event processing callback function my_event_cb.

functional interface

//事件回调函数
 lv_obj_add_event_cb(btn, event_handler, LV_EVENT_CLICKED, &user_data);
//手动发送事件到对象
lv_event_send(obj, LV_EVENT_..., &user_data)

lv_event_get_target

* Gets the object the event was originally aimed at. Even if things are bubbling, it's the same.
@param e pointer to the event descriptor
@return returns the target of event_code

struct _lv_obj_t * lv_event_get_target(lv_event_t * e);

effect

Switch between Chinese and English


lv_event_get_current_target

* Get the current target of the event. It is the object on which the event handler is invoked.
*Same as "normal" target if the event is not bubbling.
@param e A pointer to the event descriptor
@return Returns a pointer to the current target of event_code

struct _lv_obj_t * lv_event_get_current_target(lv_event_t * e);

effect

Switch between Chinese and English


lv_event_get_code

* Get the event code of the event
@param e Pointer to the event descriptor
@return Return the event code. (eg. "LV_EVENT_CLICKED", "LV_EVENT_FOCUSED", etc.)

lv_event_code_t lv_event_get_code(lv_event_t * e);

effect


lv_event_get_param

* Get the parameter passed when the event is sent
@param e pointer to the event descriptor
@return returns the pointer to the parameter

void * lv_event_get_param(lv_event_t * e);

effect

Return the member param of the event structure e

void * lv_event_get_param(lv_event_t * e)
{
    
    
    return e->param;
}

The member param is assigned by lv_event_send

lv_res_t lv_event_send(lv_obj_t * obj, lv_event_code_t event_code, void * param)
{
    
    
    if(obj == NULL) return LV_RES_OK;

    LV_ASSERT_OBJ(obj, MY_CLASS);

    lv_event_t e;
    e.target = obj;
    e.current_target = obj;
    e.code = event_code;
    e.user_data = NULL;
    e.param = param;
    e.deleted = 0;
    e.stop_bubbling = 0;
    e.stop_processing = 0;

    /*从事件中使用的对象构建一个简单的链表,重要的是要知道这个对象是否被嵌套事件删除了从' event_cb '调用。
     *Build a simple linked list from the objects used in the events
     *It's important to know if this object was deleted by a nested event
     *called from this `event_cb`.*/
    e.prev = event_head;
    event_head = &e;

    /*发送事件    Send the event*/
    lv_res_t res = event_send_core(&e);

    /*从列表中删除此元素  Remove this element from the list*/
    event_head = e.prev;

    return res;
}

lv_event_get_user_data

When the event is registered on the object, get user_data
@param e pointer to event descriptor
@return return pointer user_data

void * lv_event_get_user_data(lv_event_t * e);

effect

Switch between Chinese and English


lv_event_stop_bubbling

* Stop event bubbling.
* Only valid when called in the middle of an event handling chain.
@param e pointer to event descriptor

void lv_event_stop_bubbling(lv_event_t * e);

effect


lv_event_stop_processing

* Stop processing this event.
* Only valid when called in the middle of an event handling chain.
@param e pointer to event descriptor

void lv_event_stop_processing(lv_event_t * e);

effect


lv_event_register_id

Register for a new, custom event ID.
Its usage is the same as the example sentence. ' LV_EVENT_CLICKED ' send custom event
@return return new event id
@example
uint32_t LV_EVENT_MINE = 0;
...
LV_EVENT_MINE = lv_event_register_id();
...
lv_event_send(obj, LV_EVENT_MINE, &some_data);

uint32_t lv_event_register_id(void);

effect


_lv_event_mark_deleted

Nested events can be invoked, one of which may belong to the object being deleted.
* Mark this object's 'event_temp_data' as deleted knowing that its 'lv_event_send' should return 'LV_RES_INV'
@param obj Pointer to an object marked as deleted

void _lv_event_mark_deleted(struct _lv_obj_t * obj);
void _lv_event_mark_deleted(lv_obj_t * obj)
{
    
    
    lv_event_t * e = event_head;

    while(e) {
    
    
        if(e->current_target == obj || e->target == obj) e->deleted = 1;
        e = e->prev;
    }
}

effect


lv_obj_add_event_cb

Add an event handler to an object.
Used by the user to react to events that occur on the object.
An object can have multiple event handlers. They are called in the same order as they were added.
@param obj Pointer to an object
@param filter should be invoked with the event code (eg: ' LV_EVENT_CLICKED '). ' LV_EVENT_ALL ' can be used to receive all events.
@param event_cb New event function
@param user_data Custom data will be available in 'event_cb'
@return Returns a pointer to the event descriptor. Available in ::lv_obj_remove_event_dsc

struct _lv_event_dsc_t * lv_obj_add_event_cb(struct _lv_obj_t * obj, lv_event_cb_t event_cb, lv_event_code_t filter,void * user_data);

effect


lv_obj_remove_event_cb

Event handler function for deleting objects.
@param obj Pointer to an object
@param event_cb is the event function to be removed, or ' NULL ' is the first added event callback function
@return @returns true if any event handlers are removed

bool lv_obj_remove_event_cb(struct _lv_obj_t * obj, lv_event_cb_t event_cb);

effect


lv_obj_remove_event_cb_with_user_data

Removes an event handler with the specified user_data from an object.
@param obj pointer to an object
@param event_cb event function deletes, or ' NULL ' only important for ' user_data '.
@param event_user_data user_data specified in ::lv_obj_add_event_cb
@return @returns true if any event handlers are removed

bool lv_obj_remove_event_cb_with_user_data(struct _lv_obj_t * obj, lv_event_cb_t event_cb,const void * event_user_data);

effect


lv_obj_remove_event_dsc

Deprecated because it doesn't work if more than one event handler is added to an object.
Delete an event handler for an object.
@param obj pointer to an object
@param event_dsc pointer to the event descriptor to be deleted (returned by ::lv_obj_add_event_cb)
@return @returns true if any event handlers are deleted

bool lv_obj_remove_event_dsc(struct _lv_obj_t * obj, struct _lv_event_dsc_t * event_dsc);

effect


lv_obj_get_event_user_data

User data for the event callback object. Will always return the first object matching ' event_cb '.
@param obj pointer points to an object
@param event_cb event function
@returns user_data

void * lv_obj_get_event_user_data(struct _lv_obj_t * obj, lv_event_cb_t event_cb);

effect


lv_event_get_indev

Gets the input device passed as a parameter to indev related events.
@param e A pointer to the event
@return returns the indev that triggered the event, or NULL if an event that is not related to indev is called

lv_indev_t * lv_event_get_indev(lv_event_t * e);

effect


lv_event_get_draw_part_dsc

Get the part draw descriptor passed as a parameter to ' lv_event_draw_part_begin /END '.
@param e Pointer to the event
@return Returns the component draw descriptor to hook graphics, or NULL if calling an unrelated event

lv_obj_draw_part_dsc_t * lv_event_get_draw_part_dsc(lv_event_t * e);

effect


lv_event_get_draw_ctx

Get the drawing context, which should be the first parameter of the drawing function.
Namely: ' LV_EVENT_DRAW_MAIN/POST ', ' LV_EVENT_DRAW_MAIN/POST_BEGIN ', ' LV_EVENT_DRAW_MAIN/POST_END '
@param e pointer to the event
@return returns the pointer to the drawing context, or NULL if an unrelated event is called

lv_draw_ctx_t * lv_event_get_draw_ctx(lv_event_t * e);

effect


lv_event_get_old_size

Gets the old area of ​​the object before its size changed. Can be used in ' LV_EVENT_SIZE_CHANGED '
@param e pointer to event
@return Returns the original absolute area, or NULL if calling an unrelated event

const lv_area_t * lv_event_get_old_size(lv_event_t * e);

effect


lv_event_get_key

Get the key passed as a parameter to the event. Can be used in "LV_EVENT_KEY"
@param e pointer to the event
@return returns the trigger key or NULL if calling an unrelated event

uint32_t lv_event_get_key(lv_event_t * e);

effect


lv_event_get_scroll_anim

Get the animation descriptor for scrolling.
You can use @param e pointer to the event @return in "LV_EVENT_SCROLL_BEGIN"
to return the animation of the scrolling object. (can be modified as needed)

lv_anim_t * lv_event_get_scroll_anim(lv_event_t * e);

effect


lv_event_set_ext_draw_size

Set the new extra draw size. Can be used in "lv_event_ref_ext_draw_size"
@param e pointer to event
@param size new extra draw size

void lv_event_set_ext_draw_size(lv_event_t * e, lv_coord_t size);

effect


lv_event_get_self_size_info

Get a pointer to a "lv_point_t" variable in which to store your own size ("point->x" for width and "point->y" for height).
Can be used in ' LV_EVENT_GET_SELF_SIZE '
@param e pointer to event
@return returns pointer to ' lv_point_t ' or NULL if calling unrelated event

lv_point_t * lv_event_get_self_size_info(lv_event_t * e);

effect


lv_event_get_cover_area

Gets a pointer to an area that should be checked to see if the object completely covers it.
Available for "LV_EVENT_HIT_TEST"
@param e pointer to event
@return returns a region with absolute coordinates to check

const lv_area_t * lv_event_get_cover_area(lv_event_t * e);

effect


lv_event_set_cover_res

* Set override check result. The ::lv_cover_check_info_t element can be parsed using
@param e pointer to event @param in "LV_EVENT_COVER_CHECK"

void lv_event_set_cover_res(lv_event_t * e, lv_cover_res_t res);

effect

Guess you like

Origin blog.csdn.net/m0_37187962/article/details/125660179
v8