From a06e5d40dc753267818216f65a2fc3d49ebecfbb Mon Sep 17 00:00:00 2001 From: fvanroie Date: Sat, 28 Nov 2020 23:40:21 +0100 Subject: [PATCH] Add hasp theme --- include/lv_conf.h | 4 +- src/lv_theme_hasp.cpp | 1190 +++++++++++++++++++++++++++++++---------- src/lv_theme_hasp.h | 13 +- 3 files changed, 932 insertions(+), 275 deletions(-) diff --git a/include/lv_conf.h b/include/lv_conf.h index dec39ee2..d7f528bf 100644 --- a/include/lv_conf.h +++ b/include/lv_conf.h @@ -387,7 +387,7 @@ typedef void* lv_font_user_data_t; /*Always enable at least on theme*/ #define LV_USE_THEME_MATERIAL 1 /*A fast and impressive theme*/ -#define LV_THEME_DEFAULT_INIT lv_theme_material_init +#define LV_THEME_DEFAULT_INIT lv_theme_hasp_init // We init the theme ourselves #define LV_THEME_DEFAULT_COLOR_PRIMARY LV_COLOR_RED #define LV_THEME_DEFAULT_COLOR_SECONDARY LV_COLOR_BLUE #define LV_THEME_DEFAULT_FLAGS 0 //LV_THEME_MATERIAL_FLAG_NONE @@ -642,7 +642,7 @@ typedef uint8_t lv_obj_user_data_t; #endif /*Window (dependencies: lv_cont, lv_btn, lv_label, lv_img, lv_page)*/ -#define LV_USE_WIN (LV_HIGH_RESOURCE_MCU) +#define LV_USE_WIN 1 /*================== * Non-user section diff --git a/src/lv_theme_hasp.cpp b/src/lv_theme_hasp.cpp index 558c7db3..80742a6d 100644 --- a/src/lv_theme_hasp.cpp +++ b/src/lv_theme_hasp.cpp @@ -1,17 +1,18 @@ /** - * @file lv_theme_hasp.cpp + * @file lv_theme_hasp.c * */ /********************* * INCLUDES *********************/ -#include "lvgl.h" /*To see all the widgets*/ +#include "lvgl.h" /*To see all the widgets*/ +#include "lv_conf.h" /*To see all the widgets*/ +#include "lv_theme_hasp.h" /*To see all the widgets*/ -#if LV_USE_THEME_HASP +//#if LV_USE_THEME_HASP -#include "lv_misc/lv_gc.h" -#include "lv_theme_hasp.h" +#include "src/lv_misc/lv_gc.h" #if defined(LV_GC_INCLUDE) #include LV_GC_INCLUDE @@ -21,30 +22,183 @@ * DEFINES *********************/ +/*SCREEN*/ + +#define COLOR_SCR (IS_LIGHT ? LV_COLOR_WHITE : lv_color_hex(0x545b6a)) +#define COLOR_SCR_GRAD (IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex(0x222b3a)) +#define COLOR_SCR_TEXT (IS_LIGHT ? lv_color_hex(0x3b3e42) : lv_color_hex(0xefefef)) + +/*BUTTON*/ +#define COLOR_BTN (IS_LIGHT ? lv_color_hex(0xffffff) : lv_color_hex(0x586273)) +#define COLOR_BTN_PR \ + (IS_LIGHT ? lv_color_mix(theme.color_primary, COLOR_BTN, LV_OPA_10) \ + : lv_color_mix(theme.color_primary, COLOR_BTN, LV_OPA_30)) + +#define COLOR_BTN_CHK (theme.color_primary) +#define COLOR_BTN_CHK_PR (lv_color_darken(theme.color_primary, LV_OPA_30)) +#define COLOR_BTN_DIS (IS_LIGHT ? lv_color_hex3(0xccc) : lv_color_hex3(0x888)) + +#define COLOR_BTN_BORDER theme.color_primary +#define COLOR_BTN_BORDER_PR theme.color_primary +#define COLOR_BTN_BORDER_CHK theme.color_primary +#define COLOR_BTN_BORDER_CHK_PR theme.color_primary +#define COLOR_BTN_BORDER_INA (IS_LIGHT ? lv_color_hex3(0x888) : lv_color_hex(0x404040)) + +/*BACKGROUND*/ +#define COLOR_BG (IS_LIGHT ? lv_color_hex(0xffffff) : lv_color_hex(0x586273)) +#define COLOR_BG_PR (IS_LIGHT ? lv_color_hex(0xeeeeee) : lv_color_hex(0x494f57)) +#define COLOR_BG_CHK theme.color_primary +#define COLOR_BG_PR_CHK lv_color_darken(theme.color_primary, LV_OPA_20) +#define COLOR_BG_DIS COLOR_BG + +#define COLOR_BG_BORDER (IS_LIGHT ? lv_color_hex(0xd6dde3) : lv_color_hex(0x808a97)) /*dfe7ed*/ +#define COLOR_BG_BORDER_PR (IS_LIGHT ? lv_color_hex3(0xccc) : lv_color_hex(0x5f656e)) +#define COLOR_BG_BORDER_CHK (IS_LIGHT ? lv_color_hex(0x3b3e42) : lv_color_hex(0x5f656e)) +#define COLOR_BG_BORDER_CHK_PR (IS_LIGHT ? lv_color_hex(0x3b3e42) : lv_color_hex(0x5f656e)) +#define COLOR_BG_BORDER_DIS (IS_LIGHT ? lv_color_hex(0xd6dde3) : lv_color_hex(0x5f656e)) + +#define COLOR_BG_TEXT (IS_LIGHT ? lv_color_hex(0x3b3e42) : lv_color_hex(0xffffff)) +#define COLOR_BG_TEXT_PR (IS_LIGHT ? lv_color_hex(0x3b3e42) : lv_color_hex(0xffffff)) +#define COLOR_BG_TEXT_CHK (IS_LIGHT ? lv_color_hex(0xffffff) : lv_color_hex(0xffffff)) +#define COLOR_BG_TEXT_CHK_PR (IS_LIGHT ? lv_color_hex(0xffffff) : lv_color_hex(0xffffff)) +#define COLOR_BG_TEXT_DIS (IS_LIGHT ? lv_color_hex3(0xaaa) : lv_color_hex3(0x999)) + +/*SECONDARY BACKGROUND*/ +#define COLOR_BG_SEC lv_color_lighten(theme.color_primary, LV_OPA_30) +#define COLOR_BG_GRAD theme.color_primary +#define COLOR_BG_SEC_BORDER (IS_LIGHT ? lv_color_hex(0xdfe7ed) : lv_color_hex(0x404040)) +#define COLOR_BG_SEC_TEXT (IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xa5a8ad)) +#define COLOR_BG_SEC_TEXT_DIS (IS_LIGHT ? lv_color_hex(0xaaaaaa) : lv_color_hex(0xa5a8ad)) + +#define TRANSITION_TIME 0 /*((theme.flags & LV_THEME_MATERIAL_FLAG_NO_TRANSITION) ? 0 : 150)*/ +#define BORDER_WIDTH LV_DPX(2) +#define BORDER_COLOR lv_color_hex3(0x8888) +#define OUTLINE_WIDTH ((theme.flags & LV_THEME_HASP_FLAG_NO_FOCUS) ? 0 : LV_DPX(3)) +#define OUTLINE_COLOR ((theme.flags & LV_THEME_HASP_FLAG_NO_FOCUS) ? BORDER_COLOR : theme.color_secondary) + +#define IS_LIGHT (theme.flags & LV_THEME_HASP_FLAG_LIGHT) +#define NO_FOCUS (theme.flags & LV_THEME_HASP_FLAG_NO_FOCUS) + +#define PAD_DEF (lv_disp_get_size_category(NULL) <= LV_DISP_SIZE_MEDIUM ? LV_DPX(15) : (LV_DPX(30))) + +/*SCROLLBAR*/ +#define SCROLLBAR_COLOR \ + (IS_LIGHT ? lv_color_mix(theme.color_primary, lv_color_hex3(0x999), LV_OPA_10) \ + : lv_color_mix(theme.color_primary, lv_color_hex3(0x999), LV_OPA_10)) + /********************** * TYPEDEFS **********************/ - typedef struct { - lv_style_t bg; + + lv_style_t transparent; // Objects with transparent background, like Checkbox, container + lv_style_t pretty; // Background gradient + lv_style_t pretty_color; // Primary Colored gradient + lv_style_t bg_click; + lv_style_t bg_sec; lv_style_t btn; - lv_style_t round; - lv_style_t color; - lv_style_t gray; - lv_style_t tick_line; - lv_style_t tight; + lv_style_t pad_inner; // Space inner objects + lv_style_t pad_small; // Inner margin and space inner objects + +#if LV_USE_DROPDOWN || LV_USE_ROLLER + lv_style_t line_space; + lv_style_t selected; +#endif + +#if LV_USE_ARC + lv_style_t arc_indic; + lv_style_t arc_bg; + lv_style_t arc_knob; +#endif + +#if LV_USE_BAR + lv_style_t bar_bg; + lv_style_t bar_indic; +#endif + +#if LV_USE_CALENDAR + lv_style_t calendar_date_nums, calendar_header, calendar_daynames; +#endif + +#if LV_USE_CPICKER + lv_style_t cpicker_bg, cpicker_indic; +#endif + +#if LV_USE_CHART + lv_style_t chart_bg, chart_series_bg, chart_series; +#endif + +#if LV_USE_CHECKBOX + lv_style_t cb_bullet; +#endif + +#if LV_USE_GAUGE + lv_style_t gauge_main, gauge_strong, gauge_needle; +#endif + +#if LV_USE_KEYBOARD + lv_style_t kb_bg; +#endif + +#if LV_USE_LED + lv_style_t led; +#endif + +#if LV_USE_LINEMETER + lv_style_t lmeter; +#endif + +#if LV_USE_LIST + lv_style_t list_btn; +#endif + +#if LV_USE_MSGBOX + lv_style_t mbox_bg; +#endif + +#if LV_USE_PAGE + lv_style_t sb; +#if LV_USE_ANIMATION + lv_style_t edge_flash; +#endif +#endif + +#if LV_USE_SLIDER + lv_style_t slider_knob, slider_bg; +#endif + +#if LV_USE_SPINBOX + lv_style_t spinbox_cursor; +#endif + +#if LV_USE_SWITCH + lv_style_t sw_knob; +#endif + +#if LV_USE_TABLE + lv_style_t table_cell; +#endif + +#if LV_USE_TABVIEW || LV_USE_WIN + lv_style_t tabview_btns, tabview_btns_bg, tabview_indic, tabview_page_scrl; +#endif + +#if LV_USE_TEXTAREA + lv_style_t ta_cursor, ta_placeholder; +#endif + } theme_styles_t; /********************** * STATIC PROTOTYPES **********************/ static void theme_apply(lv_theme_t * th, lv_obj_t * obj, lv_theme_style_t name); +static void style_init_reset(lv_style_t * style); /********************** * STATIC VARIABLES **********************/ - static lv_theme_t theme; static theme_styles_t * styles; @@ -57,72 +211,206 @@ static bool inited; /********************** * STATIC FUNCTIONS **********************/ -static void style_init_reset(lv_style_t * style); static void basic_init(void) { - style_init_reset(&styles->bg); - lv_style_set_bg_opa(&styles->bg, LV_STATE_DEFAULT, LV_OPA_COVER); - lv_style_set_border_width(&styles->bg, LV_STATE_DEFAULT, 1); - lv_style_set_border_width(&styles->bg, LV_STATE_FOCUSED, 2); - lv_style_set_border_color(&styles->bg, LV_STATE_FOCUSED, theme.color_secondary); - lv_style_set_border_color(&styles->bg, LV_STATE_EDITED, lv_color_darken(theme.color_secondary, LV_OPA_30)); - lv_style_set_line_width(&styles->bg, LV_STATE_DEFAULT, 1); - lv_style_set_scale_end_line_width(&styles->bg, LV_STATE_DEFAULT, 1); - lv_style_set_scale_end_color(&styles->bg, LV_STATE_DEFAULT, theme.color_primary); - lv_style_set_text_color(&styles->bg, LV_STATE_DEFAULT, LV_COLOR_BLACK); - lv_style_set_text_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); - lv_style_set_pad_left(&styles->bg, LV_STATE_DEFAULT, LV_DPI / 10); - lv_style_set_pad_right(&styles->bg, LV_STATE_DEFAULT, LV_DPI / 10); - lv_style_set_pad_top(&styles->bg, LV_STATE_DEFAULT, LV_DPI / 10); - lv_style_set_pad_bottom(&styles->bg, LV_STATE_DEFAULT, LV_DPI / 10); - lv_style_set_pad_inner(&styles->bg, LV_STATE_DEFAULT, LV_DPI / 10); - lv_style_set_value_font(&styles->bg, LV_STATE_DEFAULT, theme.font_normal); + + // Objects with transparent background, like Checkbox, container + style_init_reset(&styles->transparent); + lv_style_set_bg_opa(&styles->transparent, LV_STATE_DEFAULT, LV_OPA_TRANSP); + lv_style_set_border_width(&styles->transparent, LV_STATE_DEFAULT, 0); + lv_style_set_value_color(&styles->transparent, LV_STATE_DEFAULT, COLOR_SCR_TEXT); + lv_style_set_value_font(&styles->transparent, LV_STATE_DEFAULT, theme.font_subtitle); + + if(!NO_FOCUS) lv_style_set_outline_width(&styles->transparent, LV_STATE_DEFAULT, OUTLINE_WIDTH); + + // Background gradient + style_init_reset(&styles->pretty); + + lv_style_set_radius(&styles->pretty, LV_STATE_DEFAULT, LV_DPI / 30); + + lv_style_set_bg_color(&styles->pretty, LV_STATE_DEFAULT, COLOR_SCR); + lv_style_set_bg_grad_color(&styles->pretty, LV_STATE_DEFAULT, COLOR_SCR_GRAD); + lv_style_set_bg_grad_dir(&styles->pretty, LV_STATE_DEFAULT, LV_GRAD_DIR_VER); + lv_style_set_bg_opa(&styles->pretty, LV_STATE_DEFAULT, LV_OPA_COVER); + + lv_style_set_line_width(&styles->pretty, LV_STATE_DEFAULT, 1); + lv_style_set_line_color(&styles->pretty, LV_STATE_DEFAULT, lv_color_make(0x20, 0x20, 0x20)); + + lv_style_set_scale_end_line_width(&styles->pretty, LV_STATE_DEFAULT, 1); + lv_style_set_scale_end_color(&styles->pretty, LV_STATE_DEFAULT, theme.color_primary); + + lv_style_set_text_color(&styles->pretty, LV_STATE_DEFAULT, COLOR_SCR_TEXT); + lv_style_set_text_font(&styles->pretty, LV_STATE_DEFAULT, theme.font_normal); + + lv_style_set_value_color(&styles->pretty, LV_STATE_DEFAULT, COLOR_SCR_TEXT); + lv_style_set_value_font(&styles->pretty, LV_STATE_DEFAULT, theme.font_subtitle); + + lv_style_set_border_opa(&styles->pretty, LV_STATE_DEFAULT, LV_OPA_60); + lv_style_set_border_width(&styles->pretty, LV_STATE_DEFAULT, BORDER_WIDTH); + lv_style_set_border_color(&styles->pretty, LV_STATE_DEFAULT, BORDER_COLOR); + lv_style_set_border_color(&styles->pretty, LV_STATE_EDITED, lv_color_darken(theme.color_secondary, LV_OPA_30)); + + lv_style_set_outline_width(&styles->pretty, LV_STATE_DEFAULT, OUTLINE_WIDTH); + + if(!NO_FOCUS) { + lv_style_set_border_color(&styles->pretty, LV_STATE_FOCUSED, theme.color_secondary); + lv_style_set_border_width(&styles->pretty, LV_STATE_FOCUSED, OUTLINE_WIDTH); + } + + // Primary Colored gradient + style_init_reset(&styles->pretty_color); + lv_style_set_radius(&styles->pretty_color, LV_STATE_DEFAULT, LV_DPI / 30); + lv_style_set_bg_color(&styles->pretty_color, LV_STATE_DEFAULT, COLOR_BG); + lv_style_set_bg_grad_color(&styles->pretty_color, LV_STATE_DEFAULT, COLOR_BG_GRAD); + lv_style_set_bg_grad_dir(&styles->pretty_color, LV_STATE_DEFAULT, LV_GRAD_DIR_VER); + + lv_style_set_bg_opa(&styles->pretty_color, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_line_width(&styles->pretty_color, LV_STATE_DEFAULT, 1); + lv_style_set_scale_end_line_width(&styles->pretty_color, LV_STATE_DEFAULT, 1); + lv_style_set_scale_end_color(&styles->pretty_color, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_text_color(&styles->pretty_color, LV_STATE_DEFAULT, COLOR_SCR_TEXT); + lv_style_set_line_color(&styles->pretty_color, LV_STATE_DEFAULT, lv_color_make(0x20, 0x20, 0x20)); + lv_style_set_text_font(&styles->pretty_color, LV_STATE_DEFAULT, theme.font_normal); + + lv_style_set_value_font(&styles->pretty_color, LV_STATE_DEFAULT, theme.font_subtitle); + lv_style_set_value_color(&styles->pretty_color, LV_STATE_DEFAULT, COLOR_SCR_TEXT); + + lv_style_set_border_opa(&styles->pretty_color, LV_STATE_DEFAULT, LV_OPA_60); + lv_style_set_border_width(&styles->pretty_color, LV_STATE_DEFAULT, BORDER_WIDTH); + lv_style_set_border_color(&styles->pretty_color, LV_STATE_DEFAULT, BORDER_COLOR); + lv_style_set_border_color(&styles->pretty_color, LV_STATE_EDITED, + lv_color_darken(theme.color_secondary, LV_OPA_30)); + + lv_style_set_outline_width(&styles->pretty_color, LV_STATE_DEFAULT, OUTLINE_WIDTH); + if(!NO_FOCUS) { + lv_style_set_border_color(&styles->pretty_color, LV_STATE_FOCUSED, theme.color_secondary); + lv_style_set_border_width(&styles->pretty_color, LV_STATE_FOCUSED, OUTLINE_WIDTH); + } + + style_init_reset(&styles->bg_sec); + lv_style_copy(&styles->bg_sec, &styles->pretty_color); + lv_style_set_bg_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC); + lv_style_set_bg_grad_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_BORDER); + lv_style_set_bg_grad_dir(&styles->bg_sec, LV_STATE_DEFAULT, LV_GRAD_DIR_VER); + + lv_style_set_border_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_BORDER); + lv_style_set_text_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); + lv_style_set_value_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); + lv_style_set_image_recolor(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); + lv_style_set_line_color(&styles->bg_sec, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); + + style_init_reset(&styles->bg_click); + lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_PR); + lv_style_set_bg_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_CHK); + lv_style_set_bg_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_PR_CHK); + lv_style_set_bg_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_DIS); + lv_style_set_border_width(&styles->bg_click, LV_STATE_CHECKED, 0); + lv_style_set_border_color(&styles->bg_click, LV_STATE_FOCUSED | LV_STATE_PRESSED, + lv_color_darken(theme.color_primary, LV_OPA_20)); + lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_BORDER_PR); + lv_style_set_border_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_BORDER_CHK); + lv_style_set_border_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_BORDER_CHK_PR); + lv_style_set_border_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_BORDER_DIS); + lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); + lv_style_set_text_color(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); + lv_style_set_text_color(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); + lv_style_set_text_color(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); + lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); + lv_style_set_image_recolor(&styles->bg_click, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); + lv_style_set_image_recolor(&styles->bg_click, LV_STATE_PRESSED | LV_STATE_CHECKED, COLOR_BG_TEXT_CHK_PR); + lv_style_set_image_recolor(&styles->bg_click, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); + lv_style_set_transition_prop_5(&styles->bg_click, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); style_init_reset(&styles->btn); - lv_style_set_bg_color(&styles->btn, LV_STATE_PRESSED, lv_color_hex3(0xccc)); - lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED, theme.color_primary); - lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, - lv_color_darken(theme.color_primary, LV_OPA_30)); - lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED, LV_COLOR_SILVER); - lv_style_set_text_color(&styles->btn, LV_STATE_DISABLED, LV_COLOR_GRAY); - lv_style_set_image_recolor(&styles->btn, LV_STATE_DISABLED, LV_COLOR_GRAY); + lv_style_set_radius(&styles->btn, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_bg_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_bg_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN); + lv_style_set_bg_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_PR); + lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED, COLOR_BTN_CHK); + lv_style_set_bg_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BTN_CHK_PR); + lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN); + lv_style_set_bg_color(&styles->btn, LV_STATE_DISABLED | LV_STATE_CHECKED, COLOR_BTN_DIS); + lv_style_set_border_color(&styles->btn, LV_STATE_DEFAULT, COLOR_BTN_BORDER); + lv_style_set_border_color(&styles->btn, LV_STATE_PRESSED, COLOR_BTN_BORDER_PR); + lv_style_set_border_color(&styles->btn, LV_STATE_DISABLED, COLOR_BTN_BORDER_INA); + lv_style_set_border_width(&styles->btn, LV_STATE_DEFAULT, BORDER_WIDTH); + lv_style_set_border_opa(&styles->btn, LV_STATE_CHECKED, LV_OPA_TRANSP); - style_init_reset(&styles->round); - lv_style_set_radius(&styles->round, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_text_color(&styles->btn, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); + lv_style_set_text_color(&styles->btn, LV_STATE_PRESSED, IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); + lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); + lv_style_set_text_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); + lv_style_set_text_color(&styles->btn, LV_STATE_DISABLED, + IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); - style_init_reset(&styles->color); - lv_style_set_bg_color(&styles->color, LV_STATE_DEFAULT, theme.color_primary); - lv_style_set_line_color(&styles->color, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_image_recolor(&styles->btn, LV_STATE_DEFAULT, + IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); + lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, + IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); + lv_style_set_image_recolor(&styles->btn, LV_STATE_PRESSED, lv_color_hex(0xffffff)); + lv_style_set_image_recolor(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); + lv_style_set_image_recolor(&styles->btn, LV_STATE_DISABLED, + IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); - style_init_reset(&styles->gray); - lv_style_set_bg_color(&styles->gray, LV_STATE_DEFAULT, LV_COLOR_SILVER); - lv_style_set_line_color(&styles->gray, LV_STATE_DEFAULT, LV_COLOR_SILVER); - lv_style_set_text_color(&styles->gray, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_style_set_value_color(&styles->btn, LV_STATE_DEFAULT, + IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); + lv_style_set_value_color(&styles->btn, LV_STATE_PRESSED, + IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xffffff)); + lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED, lv_color_hex(0xffffff)); + lv_style_set_value_color(&styles->btn, LV_STATE_CHECKED | LV_STATE_PRESSED, lv_color_hex(0xffffff)); + lv_style_set_value_color(&styles->btn, LV_STATE_DISABLED, + IS_LIGHT ? lv_color_hex(0x888888) : lv_color_hex(0x888888)); - style_init_reset(&styles->tick_line); - lv_style_set_line_width(&styles->tick_line, LV_STATE_DEFAULT, 5); - lv_style_set_scale_end_line_width(&styles->tick_line, LV_STATE_DEFAULT, 5); - lv_style_set_scale_end_color(&styles->tick_line, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_pad_left(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); + lv_style_set_pad_right(&styles->btn, LV_STATE_DEFAULT, LV_DPX(40)); + lv_style_set_pad_top(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); + lv_style_set_pad_bottom(&styles->btn, LV_STATE_DEFAULT, LV_DPX(15)); + lv_style_set_pad_inner(&styles->btn, LV_STATE_DEFAULT, LV_DPX(20)); - style_init_reset(&styles->tight); - lv_style_set_pad_left(&styles->tight, LV_STATE_DEFAULT, 0); - lv_style_set_pad_right(&styles->tight, LV_STATE_DEFAULT, 0); - lv_style_set_pad_top(&styles->tight, LV_STATE_DEFAULT, 0); - lv_style_set_pad_bottom(&styles->tight, LV_STATE_DEFAULT, 0); - lv_style_set_pad_inner(&styles->tight, LV_STATE_DEFAULT, 0); -} + lv_style_set_outline_width(&styles->btn, LV_STATE_DEFAULT, OUTLINE_WIDTH); + if(!NO_FOCUS) { + lv_style_set_outline_opa(&styles->btn, LV_STATE_DEFAULT, LV_OPA_0); + lv_style_set_outline_opa(&styles->btn, LV_STATE_FOCUSED, LV_OPA_50); + lv_style_set_outline_color(&styles->btn, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_outline_color(&styles->btn, LV_STATE_EDITED, theme.color_secondary); + } -static void arc_init(void) -{ -#if LV_USE_ARC != 0 + lv_style_set_transition_time(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); + lv_style_set_transition_prop_4(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BORDER_OPA); + lv_style_set_transition_prop_5(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); + lv_style_set_transition_prop_6(&styles->btn, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); + lv_style_set_transition_delay(&styles->btn, LV_STATE_DEFAULT, TRANSITION_TIME); + lv_style_set_transition_delay(&styles->btn, LV_STATE_PRESSED, 0); + style_init_reset(&styles->pad_inner); + lv_style_set_pad_inner(&styles->pad_inner, LV_STATE_DEFAULT, + lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(20) : LV_DPX(40)); + + style_init_reset(&styles->pad_small); + lv_style_int_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20); + lv_style_set_pad_all(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); + lv_style_set_pad_inner(&styles->pad_small, LV_STATE_DEFAULT, pad_small_value); + +#if LV_USE_DROPDOWN || LV_USE_ROLLER + style_init_reset(&styles->line_space); + lv_style_set_text_line_space(&styles->line_space, LV_STATE_DEFAULT, LV_DPX(20)); + // lv_style_set_clip_corner(&styles->line_space, LV_STATE_DEFAULT, true); + + style_init_reset(&styles->selected); + lv_style_set_radius(&styles->selected, LV_STATE_DEFAULT, 0); + // lv_style_set_bg_opa(&styles->selected, LV_STATE_DEFAULT, LV_OPA_COVER); + // lv_style_set_bg_color(&styles->selected, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_text_color(&styles->selected, LV_STATE_DEFAULT, + IS_LIGHT ? lv_color_hex3(0xfff) : lv_color_hex3(0xfff)); + lv_style_set_bg_color(&styles->selected, LV_STATE_PRESSED, COLOR_BG_PR); + lv_style_set_text_color(&styles->selected, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); #endif } -static void bar_init(void) +static void cont_init(void) { -#if LV_USE_BAR +#if LV_USE_CONT != 0 #endif } @@ -134,62 +422,6 @@ static void btn_init(void) #endif } -static void btnmatrix_init(void) -{ -#if LV_USE_BTNMATRIX - -#endif -} - -static void calendar_init(void) -{ -#if LV_USE_CALENDAR - -#endif -} - -static void chart_init(void) -{ -#if LV_USE_CHART - -#endif -} - -static void cpicker_init(void) -{ -#if LV_USE_CPICKER - -#endif -} - -static void checkbox_init(void) -{ -#if LV_USE_CHECKBOX != 0 - -#endif -} - -static void cont_init(void) -{ -#if LV_USE_CONT != 0 - -#endif -} - -static void gauge_init(void) -{ -#if LV_USE_GAUGE != 0 - -#endif -} - -static void img_init(void) -{ -#if LV_USE_IMG != 0 - -#endif -} - static void label_init(void) { #if LV_USE_LABEL != 0 @@ -197,9 +429,34 @@ static void label_init(void) #endif } -static void linemeter_init(void) +static void bar_init(void) { -#if LV_USE_LINEMETER != 0 +#if LV_USE_BAR + style_init_reset(&styles->bar_bg); + lv_style_set_radius(&styles->bar_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_bg_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_bg_color(&styles->bar_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); + lv_style_set_value_color(&styles->bar_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); + lv_style_set_outline_color(&styles->bar_bg, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_outline_color(&styles->bar_bg, LV_STATE_EDITED, theme.color_secondary); + lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); + // lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_FOCUSED, LV_OPA_50); + lv_style_set_outline_width(&styles->bar_bg, LV_STATE_DEFAULT, OUTLINE_WIDTH); + lv_style_set_transition_time(&styles->bar_bg, LV_STATE_DEFAULT, TRANSITION_TIME); + lv_style_set_transition_prop_6(&styles->bar_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); + + style_init_reset(&styles->bar_indic); + lv_style_set_bg_opa(&styles->bar_indic, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_radius(&styles->bar_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DISABLED, lv_color_hex3(0x888)); + lv_style_set_value_color(&styles->bar_indic, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x41404f) : LV_COLOR_WHITE); +#endif +} + +static void img_init(void) +{ +#if LV_USE_IMG != 0 #endif } @@ -214,20 +471,39 @@ static void line_init(void) static void led_init(void) { #if LV_USE_LED != 0 - -#endif -} - -static void page_init(void) -{ -#if LV_USE_PAGE - + style_init_reset(&styles->led); + lv_style_set_bg_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_bg_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_border_width(&styles->led, LV_STATE_DEFAULT, 2); + lv_style_set_border_opa(&styles->led, LV_STATE_DEFAULT, LV_OPA_50); + lv_style_set_border_color(&styles->led, LV_STATE_DEFAULT, lv_color_lighten(theme.color_primary, LV_OPA_30)); + lv_style_set_radius(&styles->led, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_shadow_width(&styles->led, LV_STATE_DEFAULT, LV_DPX(15)); + lv_style_set_shadow_color(&styles->led, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_shadow_spread(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); + lv_style_set_margin_all(&styles->led, LV_STATE_DEFAULT, LV_DPX(5)); #endif } static void slider_init(void) { #if LV_USE_SLIDER != 0 + style_init_reset(&styles->slider_knob); + // lv_style_set_bg_opa(&styles->slider_knob, LV_STATE_DEFAULT, LV_OPA_COVER); + // lv_style_set_bg_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE); + // lv_style_set_value_color(&styles->slider_knob, LV_STATE_DEFAULT, + // IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); + // lv_style_set_radius(&styles->slider_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); + lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); + lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); + lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7)); + + style_init_reset(&styles->slider_bg); + lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); + lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); + lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); + lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10)); #endif } @@ -235,13 +511,101 @@ static void slider_init(void) static void switch_init(void) { #if LV_USE_SWITCH != 0 - + style_init_reset(&styles->sw_knob); + // lv_style_set_bg_opa(&styles->sw_knob, LV_STATE_DEFAULT, LV_OPA_COVER); + // lv_style_set_bg_color(&styles->sw_knob, LV_STATE_DEFAULT, LV_COLOR_WHITE); + // lv_style_set_radius(&styles->sw_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_pad_top(&styles->sw_knob, LV_STATE_DEFAULT, LV_DPX(2)); + lv_style_set_pad_bottom(&styles->sw_knob, LV_STATE_DEFAULT, LV_DPX(2)); + lv_style_set_pad_left(&styles->sw_knob, LV_STATE_DEFAULT, LV_DPX(2)); + lv_style_set_pad_right(&styles->sw_knob, LV_STATE_DEFAULT, LV_DPX(2)); #endif } -static void spinbox_init(void) +static void linemeter_init(void) { -#if LV_USE_SPINBOX +#if LV_USE_LINEMETER != 0 + style_init_reset(&styles->lmeter); + lv_style_set_radius(&styles->lmeter, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_pad_left(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); + lv_style_set_pad_right(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); + lv_style_set_pad_top(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(20)); + lv_style_set_pad_inner(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(30)); + lv_style_set_scale_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(25)); + + lv_style_set_line_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_scale_grad_color(&styles->lmeter, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_scale_end_color(&styles->lmeter, LV_STATE_DEFAULT, lv_color_hex3(0x888)); + lv_style_set_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(10)); + lv_style_set_scale_end_line_width(&styles->lmeter, LV_STATE_DEFAULT, LV_DPX(7)); +#endif +} + +static void gauge_init(void) +{ +#if LV_USE_GAUGE != 0 + style_init_reset(&styles->gauge_main); + lv_style_set_line_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); + lv_style_set_scale_grad_color(&styles->gauge_main, LV_STATE_DEFAULT, lv_color_hex3(0x888)); + lv_style_set_scale_end_color(&styles->gauge_main, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_line_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(2)); // normal scale minor thick width + lv_style_set_scale_end_line_width(&styles->gauge_main, LV_STATE_DEFAULT, + LV_DPX(2)); // strong scale minor tick width + lv_style_set_scale_end_border_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(3)); + lv_style_set_pad_left(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); // left margin + lv_style_set_pad_right(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); // right margin + lv_style_set_pad_top(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(20)); // top margin + lv_style_set_pad_inner(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(15)); // position of the labels + lv_style_set_scale_width(&styles->gauge_main, LV_STATE_DEFAULT, LV_DPX(10)); // minor thick length + lv_style_set_radius(&styles->gauge_main, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + + style_init_reset(&styles->gauge_strong); + lv_style_set_line_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); + lv_style_set_scale_grad_color(&styles->gauge_strong, LV_STATE_DEFAULT, lv_color_hex3(0x888)); + lv_style_set_scale_end_color(&styles->gauge_strong, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); // strong scale arc width + lv_style_set_scale_end_line_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(8)); + lv_style_set_scale_width(&styles->gauge_strong, LV_STATE_DEFAULT, LV_DPX(20)); // major thick length + + style_init_reset(&styles->gauge_needle); + lv_style_set_line_color(&styles->gauge_needle, LV_STATE_DEFAULT, + IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); + lv_style_set_line_width(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(8)); + lv_style_set_bg_opa(&styles->gauge_needle, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_bg_color(&styles->gauge_needle, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x464b5b) : LV_COLOR_WHITE); + lv_style_set_radius(&styles->gauge_needle, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_size(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(30)); + lv_style_set_pad_inner(&styles->gauge_needle, LV_STATE_DEFAULT, LV_DPX(10)); +#endif +} + +static void arc_init(void) +{ +#if LV_USE_ARC != 0 + style_init_reset(&styles->arc_indic); + lv_style_set_line_color(&styles->arc_indic, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_line_width(&styles->arc_indic, LV_STATE_DEFAULT, LV_DPX(25)); + lv_style_set_line_rounded(&styles->arc_indic, LV_STATE_DEFAULT, true); + + style_init_reset(&styles->arc_bg); + lv_style_set_line_color(&styles->arc_bg, LV_STATE_DEFAULT, COLOR_BG_SEC); + lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); + lv_style_set_line_rounded(&styles->arc_bg, LV_STATE_DEFAULT, true); + // lv_style_set_radius(&styles->arc_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_border_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25)); + /* + lv_style_set_border_opa(&styles->pretty_color, LV_STATE_DEFAULT, LV_OPA_TRANSP); + lv_style_set_border_opa(&styles->pretty_color, LV_STATE_FOCUSED, LV_OPA_30); + lv_style_set_border_width(&styles->pretty_color, LV_STATE_DEFAULT, LV_DPI / 50 >= 1 ? LV_DPI / 50 : 1); + lv_style_set_border_width(&styles->pretty_color, LV_STATE_FOCUSED, LV_DPI / 50 >= 1 ? LV_DPI / 25 : 2); + lv_style_set_pad_all(&styles->pretty_color, LV_STATE_DEFAULT, LV_DPI / 50 >= 1 ? LV_DPI / 25 : 2); + */ + style_init_reset(&styles->arc_knob); + lv_style_set_radius(&styles->arc_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_pad_top(&styles->arc_knob, LV_STATE_DEFAULT, LV_DPX(0)); + lv_style_set_pad_bottom(&styles->arc_knob, LV_STATE_DEFAULT, LV_DPX(0)); + lv_style_set_pad_left(&styles->arc_knob, LV_STATE_DEFAULT, LV_DPX(0)); + lv_style_set_pad_right(&styles->arc_knob, LV_STATE_DEFAULT, LV_DPX(0)); #endif } @@ -249,27 +613,203 @@ static void spinbox_init(void) static void spinner_init(void) { #if LV_USE_SPINNER != 0 +#endif +} + +static void chart_init(void) +{ +#if LV_USE_CHART + style_init_reset(&styles->chart_bg); + lv_style_set_text_color(&styles->chart_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); + + style_init_reset(&styles->chart_series_bg); + lv_style_set_line_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(1)); + lv_style_set_line_dash_width(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); + lv_style_set_line_dash_gap(&styles->chart_series_bg, LV_STATE_DEFAULT, LV_DPX(10)); + lv_style_set_line_color(&styles->chart_series_bg, LV_STATE_DEFAULT, COLOR_BG_BORDER); + + style_init_reset(&styles->chart_series); + lv_style_set_line_width(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(3)); + lv_style_set_size(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(4)); + lv_style_set_pad_inner(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(2)); /*Space between columns*/ + lv_style_set_radius(&styles->chart_series, LV_STATE_DEFAULT, LV_DPX(1)); #endif } +static void calendar_init(void) +{ +#if LV_USE_CALENDAR + + style_init_reset(&styles->calendar_header); + lv_style_set_pad_top(&styles->calendar_header, LV_STATE_DEFAULT, 0); + lv_style_set_pad_left(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_right(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_bottom(&styles->calendar_header, LV_STATE_DEFAULT, 0); + lv_style_set_margin_top(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_margin_bottom(&styles->calendar_header, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_text_color(&styles->calendar_header, LV_STATE_PRESSED, + IS_LIGHT ? lv_color_hex(0x888888) : LV_COLOR_WHITE); + + style_init_reset(&styles->calendar_daynames); + lv_style_set_text_color(&styles->calendar_daynames, LV_STATE_DEFAULT, + IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex3(0xeee)); + lv_style_set_pad_left(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_right(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_bottom(&styles->calendar_daynames, LV_STATE_DEFAULT, PAD_DEF); + + style_init_reset(&styles->calendar_date_nums); + lv_style_set_radius(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(4)); + lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_CHECKED, + IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE); + lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_DISABLED, LV_COLOR_GRAY); + lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_CHECKED, IS_LIGHT ? LV_OPA_20 : LV_OPA_40); + lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_PRESSED, LV_OPA_20); + lv_style_set_bg_opa(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_OPA_COVER); + lv_style_set_text_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, LV_COLOR_WHITE); + lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_FOCUSED, theme.color_primary); + lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_DEFAULT, + IS_LIGHT ? lv_color_hex(0x666666) : LV_COLOR_WHITE); + lv_style_set_bg_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); + lv_style_set_border_width(&styles->calendar_date_nums, LV_STATE_CHECKED, 2); + lv_style_set_border_side(&styles->calendar_date_nums, LV_STATE_CHECKED, LV_BORDER_SIDE_LEFT); + lv_style_set_border_color(&styles->calendar_date_nums, LV_STATE_CHECKED, theme.color_primary); + lv_style_set_pad_inner(&styles->calendar_date_nums, LV_STATE_DEFAULT, LV_DPX(3)); + lv_style_set_pad_left(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_right(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_bottom(&styles->calendar_date_nums, LV_STATE_DEFAULT, PAD_DEF); +#endif +} + +static void cpicker_init(void) +{ +#if LV_USE_CPICKER + style_init_reset(&styles->cpicker_bg); + lv_style_set_scale_width(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(30)); + lv_style_set_bg_opa(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_bg_color(&styles->cpicker_bg, LV_STATE_DEFAULT, COLOR_SCR); + lv_style_set_pad_inner(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_DPX(20)); + lv_style_set_radius(&styles->cpicker_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + + style_init_reset(&styles->cpicker_indic); + lv_style_set_radius(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_bg_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_WHITE); + lv_style_set_bg_opa(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_border_width(&styles->cpicker_indic, LV_STATE_DEFAULT, 2); + lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_COLOR_GRAY); + lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_FOCUSED, theme.color_primary); + lv_style_set_border_color(&styles->cpicker_indic, LV_STATE_EDITED, theme.color_secondary); + lv_style_set_pad_left(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); + lv_style_set_pad_right(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); + lv_style_set_pad_top(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); + lv_style_set_pad_bottom(&styles->cpicker_indic, LV_STATE_DEFAULT, LV_DPX(13)); +#endif +} + +static void checkbox_init(void) +{ +#if LV_USE_CHECKBOX != 0 + /* style_init_reset(&styles->cb_bg); + lv_style_set_radius(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(4)); + lv_style_set_pad_inner(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); + lv_style_set_outline_color(&styles->cb_bg, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP); + lv_style_set_outline_opa(&styles->cb_bg, LV_STATE_FOCUSED, LV_OPA_50); + lv_style_set_outline_width(&styles->cb_bg, LV_STATE_DEFAULT, OUTLINE_WIDTH); + lv_style_set_outline_pad(&styles->cb_bg, LV_STATE_DEFAULT, LV_DPX(10)); + lv_style_set_transition_time(&styles->cb_bg, LV_STATE_DEFAULT, TRANSITION_TIME); + lv_style_set_transition_prop_6(&styles->cb_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA); + */ + style_init_reset(&styles->cb_bullet); + lv_style_set_outline_opa(&styles->cb_bullet, LV_STATE_FOCUSED, LV_OPA_TRANSP); + lv_style_set_radius(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(4)); + lv_style_set_pattern_image(&styles->cb_bullet, LV_STATE_CHECKED, LV_SYMBOL_OK); + lv_style_set_pattern_recolor(&styles->cb_bullet, LV_STATE_CHECKED, LV_COLOR_WHITE); + lv_style_set_pattern_opa(&styles->cb_bullet, LV_STATE_DEFAULT, LV_OPA_TRANSP); + lv_style_set_pattern_opa(&styles->cb_bullet, LV_STATE_CHECKED, LV_OPA_COVER); + lv_style_set_transition_prop_3(&styles->cb_bullet, LV_STATE_DEFAULT, LV_STYLE_PATTERN_OPA); + lv_style_set_text_font(&styles->cb_bullet, LV_STATE_CHECKED, theme.font_small); + lv_style_set_pad_left(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); + lv_style_set_pad_right(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); + lv_style_set_pad_top(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); + lv_style_set_pad_bottom(&styles->cb_bullet, LV_STATE_DEFAULT, LV_DPX(3)); +#endif +} + +static void btnmatrix_init(void) +{} + static void keyboard_init(void) { #if LV_USE_KEYBOARD - + style_init_reset(&styles->kb_bg); + lv_style_set_radius(&styles->kb_bg, LV_STATE_DEFAULT, 0); + lv_style_set_border_width(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(4)); + lv_style_set_border_side(&styles->kb_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP); + lv_style_set_border_color(&styles->kb_bg, LV_STATE_DEFAULT, IS_LIGHT ? COLOR_BG_TEXT : LV_COLOR_BLACK); + lv_style_set_border_color(&styles->kb_bg, LV_STATE_EDITED, theme.color_secondary); + lv_style_set_pad_left(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); + lv_style_set_pad_right(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); + lv_style_set_pad_top(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); + lv_style_set_pad_bottom(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(5)); + lv_style_set_pad_inner(&styles->kb_bg, LV_STATE_DEFAULT, LV_DPX(3)); #endif } static void msgbox_init(void) { #if LV_USE_MSGBOX + style_init_reset(&styles->mbox_bg); + lv_style_set_shadow_width(&styles->mbox_bg, LV_STATE_DEFAULT, LV_DPX(50)); + lv_style_set_shadow_color(&styles->mbox_bg, LV_STATE_DEFAULT, IS_LIGHT ? LV_COLOR_SILVER : lv_color_hex3(0x777)); #endif } +static void page_init(void) +{ +#if LV_USE_PAGE + style_init_reset(&styles->sb); + lv_style_set_bg_opa(&styles->sb, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_bg_color(&styles->sb, LV_STATE_DEFAULT, SCROLLBAR_COLOR); + lv_style_set_radius(&styles->sb, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + lv_style_set_size(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); + lv_style_set_pad_right(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); + lv_style_set_pad_bottom(&styles->sb, LV_STATE_DEFAULT, LV_DPX(7)); + +#if LV_USE_ANIMATION + style_init_reset(&styles->edge_flash); + lv_style_set_bg_opa(&styles->edge_flash, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_bg_color(&styles->edge_flash, LV_STATE_DEFAULT, lv_color_hex3(0x888)); +#endif +#endif +} + static void textarea_init(void) { #if LV_USE_TEXTAREA + style_init_reset(&styles->ta_cursor); + lv_style_set_border_color(&styles->ta_cursor, LV_STATE_DEFAULT, COLOR_BG_SEC_TEXT); + lv_style_set_border_width(&styles->ta_cursor, LV_STATE_DEFAULT, BORDER_WIDTH); + lv_style_set_pad_left(&styles->ta_cursor, LV_STATE_DEFAULT, LV_DPX(1)); + lv_style_set_border_side(&styles->ta_cursor, LV_STATE_DEFAULT, LV_BORDER_SIDE_LEFT); + + style_init_reset(&styles->ta_placeholder); + lv_style_set_text_color(&styles->ta_placeholder, LV_STATE_DEFAULT, + IS_LIGHT ? COLOR_BG_TEXT_DIS : lv_color_hex(0xa1adbd)); +#endif +} + +static void spinbox_init(void) +{ +#if LV_USE_SPINBOX + + style_init_reset(&styles->spinbox_cursor); + lv_style_set_bg_opa(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_bg_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_text_color(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_COLOR_WHITE); + lv_style_set_pad_top(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); + lv_style_set_pad_bottom(&styles->spinbox_cursor, LV_STATE_DEFAULT, LV_DPX(100)); #endif } @@ -277,7 +817,55 @@ static void textarea_init(void) static void list_init(void) { #if LV_USE_LIST != 0 + /* style_init_reset(&styles->list_bg); + lv_style_set_clip_corner(&styles->list_bg, LV_STATE_DEFAULT, true); + lv_style_set_pad_left(&styles->list_bg, LV_STATE_DEFAULT, 0); + lv_style_set_pad_right(&styles->list_bg, LV_STATE_DEFAULT, 0); + lv_style_set_pad_top(&styles->list_bg, LV_STATE_DEFAULT, 0); + lv_style_set_pad_bottom(&styles->list_bg, LV_STATE_DEFAULT, 0); + lv_style_set_pad_inner(&styles->list_bg, LV_STATE_DEFAULT, 0); + */ + style_init_reset(&styles->list_btn); + lv_style_set_bg_opa(&styles->list_btn, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_bg_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG); + lv_style_set_bg_color(&styles->list_btn, LV_STATE_PRESSED, COLOR_BG_PR); + lv_style_set_bg_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_DIS); + lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_CHK); + lv_style_set_bg_color(&styles->list_btn, LV_STATE_CHECKED | LV_STATE_PRESSED, COLOR_BG_PR_CHK); + + lv_style_set_text_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); + lv_style_set_text_color(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); + lv_style_set_text_color(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); + + lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_TEXT); + lv_style_set_image_recolor(&styles->list_btn, LV_STATE_CHECKED, COLOR_BG_TEXT_CHK); + lv_style_set_image_recolor(&styles->list_btn, LV_STATE_DISABLED, COLOR_BG_TEXT_DIS); + + lv_style_set_border_side(&styles->list_btn, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM); + lv_style_set_border_color(&styles->list_btn, LV_STATE_DEFAULT, COLOR_BG_BORDER); + lv_style_set_border_color(&styles->list_btn, LV_STATE_FOCUSED, theme.color_primary); + lv_style_set_border_width(&styles->list_btn, LV_STATE_DEFAULT, BORDER_WIDTH); + + lv_style_set_outline_color(&styles->list_btn, LV_STATE_FOCUSED, theme.color_secondary); + // lv_style_set_outline_width(&styles->list_btn, LV_STATE_FOCUSED, OUTLINE_WIDTH); + lv_style_set_outline_pad(&styles->list_btn, LV_STATE_FOCUSED, -BORDER_WIDTH); + + lv_style_set_pad_left(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_right(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_top(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_bottom(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_inner(&styles->list_btn, LV_STATE_DEFAULT, PAD_DEF); + + lv_style_set_transform_width(&styles->list_btn, LV_STATE_DEFAULT, -PAD_DEF); + lv_style_set_transform_width(&styles->list_btn, LV_STATE_PRESSED, -BORDER_WIDTH); + lv_style_set_transform_width(&styles->list_btn, LV_STATE_CHECKED, -BORDER_WIDTH); + lv_style_set_transform_width(&styles->list_btn, LV_STATE_DISABLED, -BORDER_WIDTH); + lv_style_set_transform_width(&styles->list_btn, LV_STATE_FOCUSED, -BORDER_WIDTH); + + lv_style_set_transition_time(&styles->list_btn, LV_STATE_DEFAULT, TRANSITION_TIME); + lv_style_set_transition_prop_6(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_BG_COLOR); + lv_style_set_transition_prop_5(&styles->list_btn, LV_STATE_DEFAULT, LV_STYLE_TRANSFORM_WIDTH); #endif } @@ -285,20 +873,38 @@ static void ddlist_init(void) { #if LV_USE_DROPDOWN != 0 +/* style_init_reset(&styles->ddlist_page); + lv_style_set_text_line_space(&styles->ddlist_page, LV_STATE_DEFAULT, LV_DPX(20)); + lv_style_set_clip_corner(&styles->ddlist_page, LV_STATE_DEFAULT, true); + + style_init_reset(&styles->ddlist_sel); + lv_style_set_radius(&styles->ddlist_sel, LV_STATE_DEFAULT, 0); + // lv_style_set_bg_opa(&styles->ddlist_sel, LV_STATE_DEFAULT, LV_OPA_COVER); + // lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_DEFAULT, + IS_LIGHT ? lv_color_hex3(0xfff) : lv_color_hex3(0xfff)); + lv_style_set_bg_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_PR); + lv_style_set_text_color(&styles->ddlist_sel, LV_STATE_PRESSED, COLOR_BG_TEXT_PR); + */ #endif } static void roller_init(void) { #if LV_USE_ROLLER != 0 + /* style_init_reset(&styles->roller_bg); + lv_style_set_text_line_space(&styles->roller_bg, LV_STATE_DEFAULT, LV_DPX(25)); + style_init_reset(&styles->roller_sel); + lv_style_set_bg_opa(&styles->roller_sel, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_bg_color(&styles->roller_sel, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_text_color(&styles->roller_sel, LV_STATE_DEFAULT, LV_COLOR_WHITE);*/ #endif } static void tabview_init(void) { #if LV_USE_TABVIEW != 0 - #endif } @@ -311,6 +917,14 @@ static void tileview_init(void) static void table_init(void) { #if LV_USE_TABLE != 0 + style_init_reset(&styles->table_cell); + lv_style_set_border_color(&styles->table_cell, LV_STATE_DEFAULT, COLOR_BG_BORDER); + lv_style_set_border_width(&styles->table_cell, LV_STATE_DEFAULT, 1); + lv_style_set_border_side(&styles->table_cell, LV_STATE_DEFAULT, LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM); + lv_style_set_pad_left(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_right(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_top(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_bottom(&styles->table_cell, LV_STATE_DEFAULT, PAD_DEF); #endif } @@ -318,7 +932,43 @@ static void table_init(void) static void win_init(void) { #if LV_USE_WIN != 0 +#endif +} +static void tabview_win_shared_init(void) +{ +#if LV_USE_TABVIEW || LV_USE_WIN + style_init_reset(&styles->tabview_btns_bg); + lv_style_set_bg_opa(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_bg_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG); + lv_style_set_text_color(&styles->tabview_btns_bg, LV_STATE_DEFAULT, COLOR_SCR_TEXT); + lv_style_set_image_recolor(&styles->tabview_btns_bg, LV_STATE_DEFAULT, lv_color_hex(0x979a9f)); + lv_style_set_pad_top(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); + lv_style_set_pad_left(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); + lv_style_set_pad_right(&styles->tabview_btns_bg, LV_STATE_DEFAULT, LV_DPX(7)); + + style_init_reset(&styles->tabview_btns); + lv_style_set_bg_opa(&styles->tabview_btns, LV_STATE_PRESSED, LV_OPA_50); + lv_style_set_bg_color(&styles->tabview_btns, LV_STATE_PRESSED, lv_color_hex3(0x888)); + lv_style_set_text_color(&styles->tabview_btns, LV_STATE_CHECKED, COLOR_SCR_TEXT); + lv_style_set_pad_top(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); + lv_style_set_pad_bottom(&styles->tabview_btns, LV_STATE_DEFAULT, LV_DPX(20)); + lv_style_set_text_color(&styles->tabview_btns, LV_STATE_FOCUSED, theme.color_primary); + lv_style_set_text_color(&styles->tabview_btns, LV_STATE_EDITED, theme.color_secondary); + + style_init_reset(&styles->tabview_indic); + lv_style_set_bg_opa(&styles->tabview_indic, LV_STATE_DEFAULT, LV_OPA_COVER); + lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_DEFAULT, theme.color_primary); + lv_style_set_bg_color(&styles->tabview_indic, LV_STATE_EDITED, theme.color_secondary); + lv_style_set_size(&styles->tabview_indic, LV_STATE_DEFAULT, LV_DPX(5)); + lv_style_set_radius(&styles->tabview_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE); + + style_init_reset(&styles->tabview_page_scrl); + lv_style_set_pad_top(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_bottom(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_left(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_right(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); + lv_style_set_pad_inner(&styles->tabview_page_scrl, LV_STATE_DEFAULT, PAD_DEF); #endif } @@ -344,15 +994,10 @@ lv_theme_t * lv_theme_hasp_init(lv_color_t color_primary, lv_color_t color_secon /* This trick is required only to avoid the garbage collection of * styles' data if LVGL is used in a binding (e.g. Micropython) - * In a general case styles could be simple `static lv_style_t my style` variables or allocated directly into - * `styles`*/ + * In a general case styles could be simple `static lv_style_t my style` variables*/ if(!inited) { -#if defined(LV_GC_INCLUDE) - LV_GC_ROOT(_lv_theme_template_styles) = lv_mem_alloc(sizeof(theme_styles_t)); - styles = (theme_styles_t *)LV_GC_ROOT(_lv_theme_template_styles); -#else - styles = (theme_styles_t*)lv_mem_alloc(sizeof(theme_styles_t)); -#endif + LV_GC_ROOT(_lv_theme_material_styles) = lv_mem_alloc(sizeof(theme_styles_t)); + styles = (theme_styles_t *)LV_GC_ROOT(_lv_theme_material_styles); } theme.color_primary = color_primary; @@ -394,14 +1039,19 @@ lv_theme_t * lv_theme_hasp_init(lv_color_t color_primary, lv_color_t color_secon tileview_init(); table_init(); win_init(); + tabview_win_shared_init(); theme.apply_xcb = NULL; theme.apply_cb = theme_apply; + inited = true; + + lv_obj_report_style_mod(NULL); + return &theme; } -void theme_apply(lv_theme_t * th, lv_obj_t * obj, lv_theme_style_t name) +static void theme_apply(lv_theme_t * th, lv_obj_t * obj, lv_theme_style_t name) { LV_UNUSED(th); @@ -413,174 +1063,171 @@ void theme_apply(lv_theme_t * th, lv_obj_t * obj, lv_theme_style_t name) case LV_THEME_SCR: list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->tight); + _lv_style_list_add_style(list, &styles->pretty); break; + case LV_THEME_OBJ: list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); break; + #if LV_USE_CONT case LV_THEME_CONT: list = lv_obj_get_style_list(obj, LV_CONT_PART_MAIN); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->transparent); + _lv_style_list_add_style(list, &styles->pad_small); break; #endif #if LV_USE_BTN case LV_THEME_BTN: list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); - _lv_style_list_add_style(list, &styles->bg); _lv_style_list_add_style(list, &styles->btn); + _lv_style_list_add_style(list, &styles->bg_sec); break; #endif #if LV_USE_BTNMATRIX case LV_THEME_BTNMATRIX: list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->pad_inner); list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BTN); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->btn); + _lv_style_list_add_style(list, &styles->pretty_color); + _lv_style_list_add_style(list, &styles->bg_click); break; #endif #if LV_USE_KEYBOARD case LV_THEME_KEYBOARD: list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->kb_bg); list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BTN); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->btn); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->bg_click); break; #endif #if LV_USE_BAR case LV_THEME_BAR: list = lv_obj_get_style_list(obj, LV_BAR_PART_BG); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->tight); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->pad_small); list = lv_obj_get_style_list(obj, LV_BAR_PART_INDIC); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->color); + _lv_style_list_add_style(list, &styles->pretty_color); break; #endif #if LV_USE_SWITCH case LV_THEME_SWITCH: list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->tight); - _lv_style_list_add_style(list, &styles->round); + _lv_style_list_add_style(list, &styles->pretty); list = lv_obj_get_style_list(obj, LV_SWITCH_PART_INDIC); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->color); + _lv_style_list_add_style(list, &styles->pretty_color); list = lv_obj_get_style_list(obj, LV_SWITCH_PART_KNOB); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->tight); - _lv_style_list_add_style(list, &styles->round); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->sw_knob); + // _lv_style_list_add_style(list, &styles->pad_small); + break; #endif #if LV_USE_CANVAS case LV_THEME_CANVAS: - list = lv_obj_get_style_list(obj, LV_CANVAS_PART_MAIN); break; #endif #if LV_USE_IMG case LV_THEME_IMAGE: - list = lv_obj_get_style_list(obj, LV_IMG_PART_MAIN); break; #endif #if LV_USE_IMGBTN case LV_THEME_IMGBTN: - list = lv_obj_get_style_list(obj, LV_IMG_PART_MAIN); break; #endif #if LV_USE_LABEL case LV_THEME_LABEL: - list = lv_obj_get_style_list(obj, LV_LABEL_PART_MAIN); break; #endif #if LV_USE_LINE case LV_THEME_LINE: - list = lv_obj_get_style_list(obj, LV_LABEL_PART_MAIN); break; #endif #if LV_USE_ARC case LV_THEME_ARC: list = lv_obj_get_style_list(obj, LV_ARC_PART_BG); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->tick_line); - _lv_style_list_add_style(list, &styles->round); + _lv_style_list_add_style(list, &styles->pretty); + //_lv_style_list_add_style(list, &styles->arc_bg); list = lv_obj_get_style_list(obj, LV_ARC_PART_INDIC); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->color); - _lv_style_list_add_style(list, &styles->tick_line); + _lv_style_list_add_style(list, &styles->arc_indic); + + list = lv_obj_get_style_list(obj, LV_ARC_PART_KNOB); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->bg_click); + _lv_style_list_add_style(list, &styles->arc_knob); break; #endif #if LV_USE_SPINNER case LV_THEME_SPINNER: list = lv_obj_get_style_list(obj, LV_SPINNER_PART_BG); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->tick_line); + _lv_style_list_add_style(list, &styles->pretty); list = lv_obj_get_style_list(obj, LV_SPINNER_PART_INDIC); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->color); - _lv_style_list_add_style(list, &styles->tick_line); + _lv_style_list_add_style(list, &styles->arc_indic); break; #endif #if LV_USE_SLIDER case LV_THEME_SLIDER: list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->pad_small); list = lv_obj_get_style_list(obj, LV_SLIDER_PART_INDIC); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->color); + _lv_style_list_add_style(list, &styles->pretty_color); list = lv_obj_get_style_list(obj, LV_SLIDER_PART_KNOB); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->round); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->slider_knob); break; #endif #if LV_USE_CHECKBOX case LV_THEME_CHECKBOX: list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BG); + _lv_style_list_add_style(list, &styles->transparent); list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BULLET); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->btn); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->cb_bullet); break; #endif #if LV_USE_MSGBOX case LV_THEME_MSGBOX: list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->pad_small); + _lv_style_list_add_style(list, &styles->mbox_bg); // shadow break; case LV_THEME_MSGBOX_BTNS: list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pad_small); list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN); - _lv_style_list_add_style(list, &styles->bg); _lv_style_list_add_style(list, &styles->btn); break; @@ -588,52 +1235,44 @@ void theme_apply(lv_theme_t * th, lv_obj_t * obj, lv_theme_style_t name) #if LV_USE_LED case LV_THEME_LED: list = lv_obj_get_style_list(obj, LV_LED_PART_MAIN); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->color); - _lv_style_list_add_style(list, &styles->round); + _lv_style_list_add_style(list, &styles->led); break; #endif #if LV_USE_PAGE case LV_THEME_PAGE: list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->gray); + _lv_style_list_add_style(list, &styles->pretty); list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pad_inner); list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLBAR); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->sb); + +#if LV_USE_ANIMATION + list = lv_obj_get_style_list(obj, LV_PAGE_PART_EDGE_FLASH); + _lv_style_list_add_style(list, &styles->edge_flash); +#endif break; #endif #if LV_USE_TABVIEW case LV_THEME_TABVIEW: list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG); - _lv_style_list_add_style(list, &styles->bg); - - list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG_SCRLLABLE); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->color); + _lv_style_list_add_style(list, &styles->pretty); list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->tabview_btns_bg); list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_INDIC); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->color); + _lv_style_list_add_style(list, &styles->pretty_color); list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BTN); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->btn); + _lv_style_list_add_style(list, &styles->tabview_btns); break; case LV_THEME_TABVIEW_PAGE: - list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->gray); - list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCROLLABLE); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->tabview_page_scrl); break; #endif @@ -641,24 +1280,28 @@ void theme_apply(lv_theme_t * th, lv_obj_t * obj, lv_theme_style_t name) #if LV_USE_TILEVIEW case LV_THEME_TILEVIEW: list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_SCROLLBAR); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->sb); +#if LV_USE_ANIMATION list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->edge_flash); +#endif break; #endif #if LV_USE_ROLLER case LV_THEME_ROLLER: list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->line_space); // clip and linespace + //_lv_style_list_add_style(list, &styles->roller_bg); list = lv_obj_get_style_list(obj, LV_ROLLER_PART_SELECTED); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->color); + _lv_style_list_add_style(list, &styles->pretty_color); + _lv_style_list_add_style(list, &styles->selected); break; #endif @@ -671,56 +1314,63 @@ void theme_apply(lv_theme_t * th, lv_obj_t * obj, lv_theme_style_t name) #if LV_USE_LIST case LV_THEME_LIST: list = lv_obj_get_style_list(obj, LV_LIST_PART_BG); - _lv_style_list_add_style(list, &styles->bg); - - list = lv_obj_get_style_list(obj, LV_LIST_PART_SCROLLABLE); + _lv_style_list_add_style(list, &styles->pretty); + // _lv_style_list_add_style(list, &styles->list_bg); list = lv_obj_get_style_list(obj, LV_LIST_PART_SCROLLBAR); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->sb); break; case LV_THEME_LIST_BTN: list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->btn); + _lv_style_list_add_style(list, &styles->list_btn); break; #endif #if LV_USE_DROPDOWN case LV_THEME_DROPDOWN: list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_MAIN); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->btn); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->bg_click); + _lv_style_list_add_style(list, &styles->pad_small); list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->pad_small); + _lv_style_list_add_style(list, &styles->line_space); // clip and linespace list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SCROLLBAR); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->sb); list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->color); + _lv_style_list_add_style(list, &styles->pretty_color); + _lv_style_list_add_style(list, &styles->pad_small); + _lv_style_list_add_style(list, &styles->selected); break; #endif #if LV_USE_CHART case LV_THEME_CHART: list = lv_obj_get_style_list(obj, LV_CHART_PART_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->chart_bg); + _lv_style_list_add_style(list, &styles->pad_small); list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pad_small); + _lv_style_list_add_style(list, &styles->chart_series_bg); + + list = lv_obj_get_style_list(obj, LV_CHART_PART_CURSOR); + _lv_style_list_add_style(list, &styles->chart_series_bg); list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->tight); + _lv_style_list_add_style(list, &styles->chart_series); break; #endif #if LV_USE_TABLE case LV_THEME_TABLE: { list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty_color); int idx = 1; /* start value should be 1, not zero, since cell styles start at 1 due to presence of LV_TABLE_PART_BG=0 @@ -728,7 +1378,7 @@ void theme_apply(lv_theme_t * th, lv_obj_t * obj, lv_theme_style_t name) /* declaring idx outside loop to work with older compilers */ for(; idx <= LV_TABLE_CELL_STYLE_CNT; idx++) { list = lv_obj_get_style_list(obj, idx); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->table_cell); } break; } @@ -737,105 +1387,105 @@ void theme_apply(lv_theme_t * th, lv_obj_t * obj, lv_theme_style_t name) #if LV_USE_WIN case LV_THEME_WIN: list = lv_obj_get_style_list(obj, LV_WIN_PART_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); list = lv_obj_get_style_list(obj, LV_WIN_PART_SCROLLBAR); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->sb); list = lv_obj_get_style_list(obj, LV_WIN_PART_CONTENT_SCROLLABLE); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->tabview_page_scrl); list = lv_obj_get_style_list(obj, LV_WIN_PART_HEADER); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->tabview_btns_bg); break; case LV_THEME_WIN_BTN: list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->btn); + _lv_style_list_add_style(list, &styles->tabview_btns); break; #endif #if LV_USE_TEXTAREA case LV_THEME_TEXTAREA: list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->pad_small); list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER); - _lv_style_list_add_style(list, &styles->gray); + _lv_style_list_add_style(list, &styles->ta_placeholder); list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_CURSOR); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->tight); + _lv_style_list_add_style(list, &styles->ta_cursor); list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_SCROLLBAR); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->sb); break; + #endif #if LV_USE_SPINBOX case LV_THEME_SPINBOX: list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->pad_small); list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_CURSOR); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->spinbox_cursor); break; case LV_THEME_SPINBOX_BTN: list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->btn); + _lv_style_list_add_style(list, &styles->pretty_color); + _lv_style_list_add_style(list, &styles->bg_click); break; #endif #if LV_USE_CALENDAR case LV_THEME_CALENDAR: list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_BG); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->pretty); list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DATE); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->btn); - _lv_style_list_add_style(list, &styles->tight); + _lv_style_list_add_style(list, &styles->calendar_date_nums); list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_HEADER); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->transparent); + _lv_style_list_add_style(list, &styles->pad_small); list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DAY_NAMES); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->tight); + _lv_style_list_add_style(list, &styles->transparent); + _lv_style_list_add_style(list, &styles->pad_small); break; #endif #if LV_USE_CPICKER case LV_THEME_CPICKER: list = lv_obj_get_style_list(obj, LV_CPICKER_PART_MAIN); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->cpicker_bg); list = lv_obj_get_style_list(obj, LV_CPICKER_PART_KNOB); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->round); + _lv_style_list_add_style(list, &styles->cpicker_indic); break; #endif #if LV_USE_LINEMETER case LV_THEME_LINEMETER: list = lv_obj_get_style_list(obj, LV_LINEMETER_PART_MAIN); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->round); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->lmeter); break; #endif + #if LV_USE_GAUGE case LV_THEME_GAUGE: list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN); - _lv_style_list_add_style(list, &styles->bg); - _lv_style_list_add_style(list, &styles->round); + _lv_style_list_add_style(list, &styles->pretty); + _lv_style_list_add_style(list, &styles->gauge_main); list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAJOR); - _lv_style_list_add_style(list, &styles->tick_line); + _lv_style_list_add_style(list, &styles->gauge_strong); list = lv_obj_get_style_list(obj, LV_GAUGE_PART_NEEDLE); - _lv_style_list_add_style(list, &styles->bg); + _lv_style_list_add_style(list, &styles->gauge_needle); break; #endif default: @@ -857,4 +1507,4 @@ static void style_init_reset(lv_style_t * style) lv_style_init(style); } -#endif +//#endif diff --git a/src/lv_theme_hasp.h b/src/lv_theme_hasp.h index bd468d34..49425093 100644 --- a/src/lv_theme_hasp.h +++ b/src/lv_theme_hasp.h @@ -13,13 +13,20 @@ extern "C" { /********************* * INCLUDES *********************/ -#include "lv_conf.h" +#include "./lv_conf.h" +#include "lvgl.h" /*To see all the widgets*/ -#if LV_USE_THEME_HASP +//#if LV_USE_THEME_HASP /********************* * DEFINES *********************/ +typedef enum { + LV_THEME_HASP_FLAG_DARK = 0x01, + LV_THEME_HASP_FLAG_LIGHT = 0x02, + LV_THEME_HASP_FLAG_NO_TRANSITION = 0x10, + LV_THEME_HASP_FLAG_NO_FOCUS = 0x20, +} lv_theme_hasp_flag_t; /********************** * TYPEDEFS @@ -53,4 +60,4 @@ lv_theme_t * lv_theme_hasp_init(lv_color_t color_primary, lv_color_t color_secon } /* extern "C" */ #endif -#endif /*LV_THEME_HASP_H*/ +//#endif /*LV_THEME_HASP_H*/