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
 |