init Files
This commit is contained in:
62
libraries/lvgl/examples/styles/lv_example_style_14.c
Normal file
62
libraries/lvgl/examples/styles/lv_example_style_14.c
Normal file
@@ -0,0 +1,62 @@
|
||||
#include "../../src/themes/lv_theme_private.h"
|
||||
#include "../lv_examples.h"
|
||||
#if LV_BUILD_EXAMPLES && LV_USE_IMAGE
|
||||
|
||||
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_button_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_display_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_display_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_button_create(lv_screen_active());
|
||||
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_button_create(lv_screen_active());
|
||||
lv_obj_align(btn, LV_ALIGN_BOTTOM_MID, 0, -20);
|
||||
|
||||
label = lv_label_create(btn);
|
||||
lv_label_set_text(label, "New theme");
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user