You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.6 KiB
C
65 lines
1.6 KiB
C
#include "../lv_examples.h"
|
|
#if LV_BUILD_EXAMPLES && LV_USE_IMG
|
|
|
|
|
|
static lv_style_t style_btn;
|
|
|
|
/*Will be called when the styles of the base theme are already added
|
|
to add new styles*/
|
|
static void new_theme_apply_cb(lv_theme_t * th, lv_obj_t * obj)
|
|
{
|
|
LV_UNUSED(th);
|
|
|
|
if(lv_obj_check_type(obj, &lv_btn_class)) {
|
|
lv_obj_add_style(obj, &style_btn, 0);
|
|
}
|
|
}
|
|
|
|
static void new_theme_init_and_set(void)
|
|
{
|
|
/*Initialize the styles*/
|
|
lv_style_init(&style_btn);
|
|
lv_style_set_bg_color(&style_btn, lv_palette_main(LV_PALETTE_GREEN));
|
|
lv_style_set_border_color(&style_btn, lv_palette_darken(LV_PALETTE_GREEN, 3));
|
|
lv_style_set_border_width(&style_btn, 3);
|
|
|
|
/*Initialize the new theme from the current theme*/
|
|
lv_theme_t * th_act = lv_disp_get_theme(NULL);
|
|
static lv_theme_t th_new;
|
|
th_new = *th_act;
|
|
|
|
/*Set the parent theme and the style apply callback for the new theme*/
|
|
lv_theme_set_parent(&th_new, th_act);
|
|
lv_theme_set_apply_cb(&th_new, new_theme_apply_cb);
|
|
|
|
/*Assign the new theme to the current display*/
|
|
lv_disp_set_theme(NULL, &th_new);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Extending the current theme
|
|
*/
|
|
void lv_example_style_14(void)
|
|
{
|
|
lv_obj_t * btn;
|
|
lv_obj_t * label;
|
|
|
|
btn = lv_btn_create(lv_scr_act());
|
|
lv_obj_align(btn, LV_ALIGN_TOP_MID, 0, 20);
|
|
|
|
label = lv_label_create(btn);
|
|
lv_label_set_text(label, "Original theme");
|
|
|
|
new_theme_init_and_set();
|
|
|
|
btn = lv_btn_create(lv_scr_act());
|
|
lv_obj_align(btn, LV_ALIGN_BOTTOM_MID, 0, -20);
|
|
|
|
label = lv_label_create(btn);
|
|
lv_label_set_text(label, "New theme");
|
|
}
|
|
|
|
#endif
|