lv_observer.h

API reference for lv_observer.h

Report on GitHub
See Also: Private HeaderThis header has a companion private implementation with internal data structures.lv_observer_private.h

Functions

lv_subject_set_external_data

Attaches external user data to an integer Subject with lifecycle management.

Associates arbitrary user-defined data with an LVGL observer and registers a destructor callback that will be automatically invoked when the observer is deleted. This enables:

  • Safe resource cleanup through the destructor mechanism
  • Contextual data storage for observer callbacks
  • Proper memory management for observer-related resources
 
void lv_subject_set_external_data(lv_subject_t *subject, void *data, void(*free_cb)(void *data))
Parameters
NameTypeDescription
subjectlv_subject_t *pointer to Subject
datavoid *User-defined data pointer to associate
free_cbvoid(*)(void *data)Cleanup function called when:
- Observer is explicitly deleted
- Observed object is deleted
- New data replaces current association NULL indicates no cleanup required

lv_subject_set_int

Set value of an integer Subject and notify Observers.

 
void lv_subject_set_int(lv_subject_t *subject, int32_t value)
Parameters
NameTypeDescription
subjectlv_subject_t *pointer to Subject
valueint32_tnew value

lv_subject_set_min_value_int

Set a minimum value for an integer subject

 
void lv_subject_set_min_value_int(lv_subject_t *subject, int32_t min_value)
Parameters
NameTypeDescription
subjectlv_subject_t *pointer to Subject
min_valueint32_tthe minimum value

lv_subject_set_max_value_int

Set a maximum value for an integer subject

 
void lv_subject_set_max_value_int(lv_subject_t *subject, int32_t max_value)
Parameters
NameTypeDescription
subjectlv_subject_t *pointer to Subject
max_valueint32_tthe maximum value

lv_subject_set_float

Set value of an float Subject and notify Observers.

 
void lv_subject_set_float(lv_subject_t *subject, float value)
Parameters
NameTypeDescription
subjectlv_subject_t *pointer to Subject
valuefloatnew value

lv_subject_set_min_value_float

Set a minimum value for a float subject

 
void lv_subject_set_min_value_float(lv_subject_t *subject, float min_value)
Parameters
NameTypeDescription
subjectlv_subject_t *pointer to Subject
min_valuefloatthe minimum value

lv_subject_set_max_value_float

Set a maximum value for a float subject

 
void lv_subject_set_max_value_float(lv_subject_t *subject, float max_value)
Parameters
NameTypeDescription
subjectlv_subject_t *pointer to Subject
max_valuefloatthe maximum value

lv_subject_set_pointer

Set value of a pointer Subject and notify Observers (regardless of whether it changed).

 
void lv_subject_set_pointer(lv_subject_t *subject, void *ptr)
Parameters
NameTypeDescription
subjectlv_subject_t *pointer to Subject
ptrvoid *new value

lv_subject_set_color

Set value of a color Subject and notify Observers if it changed.

 
void lv_subject_set_color(lv_subject_t *subject, lv_color_t color)
Parameters
NameTypeDescription
subjectlv_subject_t *pointer to Subject
colorlv_color_tnew value

lv_obj_set_subject_increment_event_min_value

Set the minimum subject value to set by the event

 
void lv_obj_set_subject_increment_event_min_value(lv_obj_t *obj, lv_subject_increment_dsc_t *dsc, int32_t min_value)
Parameters
NameTypeDescription
objlv_obj_t *pointer to the Widget to which the event is attached
dsclv_subject_increment_dsc_t *pointer to the descriptor returned by lv_obj_add_subject_increment_event()
min_valueint32_tthe minimum value to set

lv_obj_set_subject_increment_event_max_value

Set the maximum subject value to set by the event

 
void lv_obj_set_subject_increment_event_max_value(lv_obj_t *obj, lv_subject_increment_dsc_t *dsc, int32_t max_value)
Parameters
NameTypeDescription
objlv_obj_t *pointer to the Widget to which the event is attached
dsclv_subject_increment_dsc_t *pointer to the descriptor returned by lv_obj_add_subject_increment_event()
max_valueint32_tthe maximum value to set

lv_obj_set_subject_increment_event_rollover

Set what to do when the min/max value is crossed.

 
void lv_obj_set_subject_increment_event_rollover(lv_obj_t *obj, lv_subject_increment_dsc_t *dsc, bool rollover)
Parameters
NameTypeDescription
objlv_obj_t *pointer to the Widget to which the event is attached
dsclv_subject_increment_dsc_t *pointer to the descriptor returned by lv_obj_add_subject_increment_event()
rolloverboolfalse: stop at the min/max value; true: jump to the other end

the subject also can have min/max values and always the smaller range will be considered

lv_obj_add_subject_set_int_event

Set the value of an integer subject.

 
void lv_obj_add_subject_set_int_event(lv_obj_t *obj, lv_subject_t *subject, lv_event_code_t trigger, int32_t value)
Parameters
NameTypeDescription
objlv_obj_t *pointer to a widget
subjectlv_subject_t *pointer to a subject to change
triggerlv_event_code_tthe trigger on which the subject should be changed
valueint32_tthe value to set

lv_obj_add_subject_set_float_event

Set the value of a float subject.

 
void lv_obj_add_subject_set_float_event(lv_obj_t *obj, lv_subject_t *subject, lv_event_code_t trigger, float value)
Parameters
NameTypeDescription
objlv_obj_t *pointer to a widget
subjectlv_subject_t *pointer to a subject to change
triggerlv_event_code_tthe trigger on which the subject should be changed
valuefloatthe value to set

lv_obj_add_subject_set_string_event

Set the value of a string subject.

 
void lv_obj_add_subject_set_string_event(lv_obj_t *obj, lv_subject_t *subject, lv_event_code_t trigger, const char *value)
Parameters
NameTypeDescription
objlv_obj_t *pointer to a widget
subjectlv_subject_t *pointer to a subject to change
triggerlv_event_code_tthe trigger on which the subject should be changed
valueconst char *the value to set

Enums

lv_subject_type_t

Values for lv_subject_t's type field

NameValueDescription
LV_SUBJECT_TYPE_INVALID0indicates Subject not initialized yet
LV_SUBJECT_TYPE_NONE1a null value like None or NILt
LV_SUBJECT_TYPE_INT2an int32_t
LV_SUBJECT_TYPE_FLOAT3a float, requires LV_USE_FLOAT 1
LV_SUBJECT_TYPE_POINTER4a void pointer
LV_SUBJECT_TYPE_COLOR5an lv_color_t
LV_SUBJECT_TYPE_GROUP6an array of Subjects
LV_SUBJECT_TYPE_STRING7a char pointer

Structs

struct

lv_subject_value_t

A common type to handle all the various observable types in the same way

MemberTypeDescription
numint32_tInteger number (opacity, enums, booleans or "normal" numbers)
pointerconst void *Constant pointer (string buffer, format string, font, cone text, etc.)
colorlv_color_tColor
float_vfloatFloating point value
struct

_lv_subject_t

The Subject (an observable value)

MemberTypeDescription
ext_datalv_ext_data_t
subs_lllv_ll_tSubscribers
valuelv_subject_value_tCurrent value
prev_valuelv_subject_value_tPrevious value
min_valuelv_subject_value_tMinimum value for min. int or float
max_valuelv_subject_value_tMaximum value for max. int or float
user_datavoid *Additional parameter, can be used freely by user
typeuint32_tOne of the LV_SUBJECT_TYPE_... values
sizeuint32_tString buffer size or group length
notify_restart_queryuint32_tIf an Observer was deleted during notification, start notifying from the beginning.

Typedefs

lv_observer_cb_t

 
typedef void(* lv_observer_cb_t) (lv_observer_t *observer, lv_subject_t *subject)

Callback called to notify Observer that Subject's value has changed

Used by 3 functions
  • lv_subject_add_observer — param observer_cb
  • lv_subject_add_observer_obj — param observer_cb
  • lv_subject_add_observer_with_target — param observer_cb

Dependencies

How is this guide?

Last updated on

On this page

Functionslv_subject_set_external_datalv_subject_set_intlv_subject_set_min_value_intlv_subject_set_max_value_intlv_subject_set_floatlv_subject_set_min_value_floatlv_subject_set_max_value_floatlv_subject_set_pointerlv_subject_set_colorlv_obj_set_subject_increment_event_min_valuelv_obj_set_subject_increment_event_max_valuelv_obj_set_subject_increment_event_rolloverlv_obj_add_subject_set_int_eventlv_obj_add_subject_set_float_eventlv_obj_add_subject_set_string_eventlv_subject_get_intlv_subject_get_previous_intlv_subject_get_floatlv_subject_get_previous_floatlv_subject_get_stringlv_subject_get_previous_stringlv_subject_get_pointerlv_subject_get_previous_pointerlv_subject_get_colorlv_subject_get_previous_colorlv_subject_get_group_elementlv_observer_get_targetlv_observer_get_target_objlv_observer_get_user_datalv_subject_init_intlv_subject_init_floatlv_subject_init_stringlv_subject_copy_stringlv_subject_snprintflv_subject_init_pointerlv_subject_init_colorlv_subject_init_grouplv_subject_deinitlv_subject_add_observerlv_subject_add_observer_objlv_subject_add_observer_with_targetlv_observer_removelv_obj_remove_from_subjectlv_subject_notifylv_obj_add_subject_increment_eventlv_obj_add_subject_toggle_eventlv_obj_bind_flag_if_eqlv_obj_bind_flag_if_not_eqlv_obj_bind_flag_if_gtlv_obj_bind_flag_if_gelv_obj_bind_flag_if_ltlv_obj_bind_flag_if_lelv_obj_bind_state_if_eqlv_obj_bind_state_if_not_eqlv_obj_bind_state_if_gtlv_obj_bind_state_if_gelv_obj_bind_state_if_ltlv_obj_bind_state_if_lelv_obj_bind_checkedEnumslv_subject_type_tStructslv_subject_value_t_lv_subject_tTypedefslv_observer_cb_tDependencies