acid-drop- Hacking the planet from a LilyGo T-Deck using custom firmware |
git clone git://git.acid.vegas/acid-drop.git |
Log | Files | Refs | Archive | README | LICENSE |
lv_theme_default.c (49296B)
1 /** 2 * @file lv_theme_default.c 3 * 4 */ 5 6 /********************* 7 * INCLUDES 8 *********************/ 9 #include "../../../lvgl.h" /*To see all the widgets*/ 10 11 #if LV_USE_THEME_DEFAULT 12 13 #include "lv_theme_default.h" 14 #include "../../../misc/lv_gc.h" 15 16 /********************* 17 * DEFINES 18 *********************/ 19 #define MODE_DARK 1 20 #define RADIUS_DEFAULT (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 12) : lv_disp_dpx(theme.disp, 8)) 21 22 /*SCREEN*/ 23 #define LIGHT_COLOR_SCR lv_palette_lighten(LV_PALETTE_GREY, 4) 24 #define LIGHT_COLOR_CARD lv_color_white() 25 #define LIGHT_COLOR_TEXT lv_palette_darken(LV_PALETTE_GREY, 4) 26 #define LIGHT_COLOR_GREY lv_palette_lighten(LV_PALETTE_GREY, 2) 27 #define DARK_COLOR_SCR lv_color_hex(0x15171A) 28 #define DARK_COLOR_CARD lv_color_hex(0x282b30) 29 #define DARK_COLOR_TEXT lv_palette_lighten(LV_PALETTE_GREY, 5) 30 #define DARK_COLOR_GREY lv_color_hex(0x2f3237) 31 32 #define TRANSITION_TIME LV_THEME_DEFAULT_TRANSITION_TIME 33 #define BORDER_WIDTH lv_disp_dpx(theme.disp, 2) 34 #define OUTLINE_WIDTH lv_disp_dpx(theme.disp, 3) 35 36 #define PAD_DEF (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 24) : disp_size == DISP_MEDIUM ? lv_disp_dpx(theme.disp, 20) : lv_disp_dpx(theme.disp, 16)) 37 #define PAD_SMALL (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 14) : disp_size == DISP_MEDIUM ? lv_disp_dpx(theme.disp, 12) : lv_disp_dpx(theme.disp, 10)) 38 #define PAD_TINY (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 8) : disp_size == DISP_MEDIUM ? lv_disp_dpx(theme.disp, 6) : lv_disp_dpx(theme.disp, 2)) 39 40 /********************** 41 * TYPEDEFS 42 **********************/ 43 typedef struct { 44 lv_style_t scr; 45 lv_style_t scrollbar; 46 lv_style_t scrollbar_scrolled; 47 lv_style_t card; 48 lv_style_t btn; 49 50 /*Utility*/ 51 lv_style_t bg_color_primary; 52 lv_style_t bg_color_primary_muted; 53 lv_style_t bg_color_secondary; 54 lv_style_t bg_color_secondary_muted; 55 lv_style_t bg_color_grey; 56 lv_style_t bg_color_white; 57 lv_style_t pressed; 58 lv_style_t disabled; 59 lv_style_t pad_zero; 60 lv_style_t pad_tiny; 61 lv_style_t pad_small; 62 lv_style_t pad_normal; 63 lv_style_t pad_gap; 64 lv_style_t line_space_large; 65 lv_style_t text_align_center; 66 lv_style_t outline_primary; 67 lv_style_t outline_secondary; 68 lv_style_t circle; 69 lv_style_t no_radius; 70 lv_style_t clip_corner; 71 #if LV_THEME_DEFAULT_GROW 72 lv_style_t grow; 73 #endif 74 lv_style_t transition_delayed; 75 lv_style_t transition_normal; 76 lv_style_t anim; 77 lv_style_t anim_fast; 78 79 /*Parts*/ 80 lv_style_t knob; 81 lv_style_t indic; 82 83 #if LV_USE_ARC 84 lv_style_t arc_indic; 85 lv_style_t arc_indic_primary; 86 #endif 87 88 #if LV_USE_CHART 89 lv_style_t chart_series, chart_indic, chart_ticks, chart_bg; 90 #endif 91 92 #if LV_USE_DROPDOWN 93 lv_style_t dropdown_list; 94 #endif 95 96 #if LV_USE_CHECKBOX 97 lv_style_t cb_marker, cb_marker_checked; 98 #endif 99 100 #if LV_USE_SWITCH 101 lv_style_t switch_knob; 102 #endif 103 104 #if LV_USE_LINE 105 lv_style_t line; 106 #endif 107 108 #if LV_USE_TABLE 109 lv_style_t table_cell; 110 #endif 111 112 #if LV_USE_METER 113 lv_style_t meter_marker, meter_indic; 114 #endif 115 116 #if LV_USE_TEXTAREA 117 lv_style_t ta_cursor, ta_placeholder; 118 #endif 119 120 #if LV_USE_CALENDAR 121 lv_style_t calendar_btnm_bg, calendar_btnm_day, calendar_header; 122 #endif 123 124 #if LV_USE_COLORWHEEL 125 lv_style_t colorwheel_main; 126 #endif 127 128 #if LV_USE_MENU 129 lv_style_t menu_bg, menu_cont, menu_sidebar_cont, menu_main_cont, menu_page, menu_header_cont, menu_header_btn, 130 menu_section, menu_pressed, menu_separator; 131 #endif 132 133 #if LV_USE_MSGBOX 134 lv_style_t msgbox_bg, msgbox_btn_bg, msgbox_backdrop_bg; 135 #endif 136 137 #if LV_USE_KEYBOARD 138 lv_style_t keyboard_btn_bg; 139 #endif 140 141 #if LV_USE_LIST 142 lv_style_t list_bg, list_btn, list_item_grow, list_label; 143 #endif 144 145 #if LV_USE_TABVIEW 146 lv_style_t tab_bg_focus, tab_btn; 147 #endif 148 #if LV_USE_LED 149 lv_style_t led; 150 #endif 151 } my_theme_styles_t; 152 153 typedef struct { 154 lv_theme_t base; 155 uint8_t light : 1; 156 } my_theme_t; 157 158 typedef enum { 159 DISP_SMALL = 3, 160 DISP_MEDIUM = 2, 161 DISP_LARGE = 1, 162 } disp_size_t; 163 164 /********************** 165 * STATIC PROTOTYPES 166 **********************/ 167 static void theme_apply(lv_theme_t * th, lv_obj_t * obj); 168 static void style_init_reset(lv_style_t * style); 169 170 /********************** 171 * STATIC VARIABLES 172 **********************/ 173 static my_theme_styles_t * styles; 174 static lv_theme_t theme; 175 static disp_size_t disp_size; 176 static lv_color_t color_scr; 177 static lv_color_t color_text; 178 static lv_color_t color_card; 179 static lv_color_t color_grey; 180 static bool inited = false; 181 182 183 /********************** 184 * MACROS 185 **********************/ 186 187 /********************** 188 * STATIC FUNCTIONS 189 **********************/ 190 191 192 static lv_color_t dark_color_filter_cb(const lv_color_filter_dsc_t * f, lv_color_t c, lv_opa_t opa) 193 { 194 LV_UNUSED(f); 195 return lv_color_darken(c, opa); 196 } 197 198 static lv_color_t grey_filter_cb(const lv_color_filter_dsc_t * f, lv_color_t color, lv_opa_t opa) 199 { 200 LV_UNUSED(f); 201 if(theme.flags & MODE_DARK) return lv_color_mix(lv_palette_darken(LV_PALETTE_GREY, 2), color, opa); 202 else return lv_color_mix(lv_palette_lighten(LV_PALETTE_GREY, 2), color, opa); 203 } 204 205 static void style_init(void) 206 { 207 static const lv_style_prop_t trans_props[] = { 208 LV_STYLE_BG_OPA, LV_STYLE_BG_COLOR, 209 LV_STYLE_TRANSFORM_WIDTH, LV_STYLE_TRANSFORM_HEIGHT, 210 LV_STYLE_TRANSLATE_Y, LV_STYLE_TRANSLATE_X, 211 LV_STYLE_TRANSFORM_ZOOM, LV_STYLE_TRANSFORM_ANGLE, 212 LV_STYLE_COLOR_FILTER_OPA, LV_STYLE_COLOR_FILTER_DSC, 213 0 214 }; 215 216 color_scr = theme.flags & MODE_DARK ? DARK_COLOR_SCR : LIGHT_COLOR_SCR; 217 color_text = theme.flags & MODE_DARK ? DARK_COLOR_TEXT : LIGHT_COLOR_TEXT; 218 color_card = theme.flags & MODE_DARK ? DARK_COLOR_CARD : LIGHT_COLOR_CARD; 219 color_grey = theme.flags & MODE_DARK ? DARK_COLOR_GREY : LIGHT_COLOR_GREY; 220 221 style_init_reset(&styles->transition_delayed); 222 style_init_reset(&styles->transition_normal); 223 #if TRANSITION_TIME 224 static lv_style_transition_dsc_t trans_delayed; 225 lv_style_transition_dsc_init(&trans_delayed, trans_props, lv_anim_path_linear, TRANSITION_TIME, 70, NULL); 226 227 static lv_style_transition_dsc_t trans_normal; 228 lv_style_transition_dsc_init(&trans_normal, trans_props, lv_anim_path_linear, TRANSITION_TIME, 0, NULL); 229 230 lv_style_set_transition(&styles->transition_delayed, &trans_delayed); /*Go back to default state with delay*/ 231 232 lv_style_set_transition(&styles->transition_normal, &trans_normal); /*Go back to default state with delay*/ 233 #endif 234 235 style_init_reset(&styles->scrollbar); 236 lv_color_t sb_color = (theme.flags & MODE_DARK) ? lv_palette_darken(LV_PALETTE_GREY, 237 2) : lv_palette_main(LV_PALETTE_GREY); 238 lv_style_set_bg_color(&styles->scrollbar, sb_color); 239 240 lv_style_set_radius(&styles->scrollbar, LV_RADIUS_CIRCLE); 241 lv_style_set_pad_all(&styles->scrollbar, lv_disp_dpx(theme.disp, 7)); 242 lv_style_set_width(&styles->scrollbar, lv_disp_dpx(theme.disp, 5)); 243 lv_style_set_bg_opa(&styles->scrollbar, LV_OPA_40); 244 #if TRANSITION_TIME 245 lv_style_set_transition(&styles->scrollbar, &trans_normal); 246 #endif 247 248 style_init_reset(&styles->scrollbar_scrolled); 249 lv_style_set_bg_opa(&styles->scrollbar_scrolled, LV_OPA_COVER); 250 251 style_init_reset(&styles->scr); 252 lv_style_set_bg_opa(&styles->scr, LV_OPA_COVER); 253 lv_style_set_bg_color(&styles->scr, color_scr); 254 lv_style_set_text_color(&styles->scr, color_text); 255 lv_style_set_pad_row(&styles->scr, PAD_SMALL); 256 lv_style_set_pad_column(&styles->scr, PAD_SMALL); 257 258 style_init_reset(&styles->card); 259 lv_style_set_radius(&styles->card, RADIUS_DEFAULT); 260 lv_style_set_bg_opa(&styles->card, LV_OPA_COVER); 261 lv_style_set_bg_color(&styles->card, color_card); 262 lv_style_set_border_color(&styles->card, color_grey); 263 lv_style_set_border_width(&styles->card, BORDER_WIDTH); 264 lv_style_set_border_post(&styles->card, true); 265 lv_style_set_text_color(&styles->card, color_text); 266 lv_style_set_pad_all(&styles->card, PAD_DEF); 267 lv_style_set_pad_row(&styles->card, PAD_SMALL); 268 lv_style_set_pad_column(&styles->card, PAD_SMALL); 269 lv_style_set_line_color(&styles->card, lv_palette_main(LV_PALETTE_GREY)); 270 lv_style_set_line_width(&styles->card, lv_disp_dpx(theme.disp, 1)); 271 272 style_init_reset(&styles->outline_primary); 273 lv_style_set_outline_color(&styles->outline_primary, theme.color_primary); 274 lv_style_set_outline_width(&styles->outline_primary, OUTLINE_WIDTH); 275 lv_style_set_outline_pad(&styles->outline_primary, OUTLINE_WIDTH); 276 lv_style_set_outline_opa(&styles->outline_primary, LV_OPA_50); 277 278 style_init_reset(&styles->outline_secondary); 279 lv_style_set_outline_color(&styles->outline_secondary, theme.color_secondary); 280 lv_style_set_outline_width(&styles->outline_secondary, OUTLINE_WIDTH); 281 lv_style_set_outline_opa(&styles->outline_secondary, LV_OPA_50); 282 283 style_init_reset(&styles->btn); 284 lv_style_set_radius(&styles->btn, (disp_size == DISP_LARGE ? lv_disp_dpx(theme.disp, 285 16) : disp_size == DISP_MEDIUM ? lv_disp_dpx(theme.disp, 12) : lv_disp_dpx(theme.disp, 8))); 286 lv_style_set_bg_opa(&styles->btn, LV_OPA_COVER); 287 lv_style_set_bg_color(&styles->btn, color_grey); 288 if(!(theme.flags & MODE_DARK)) { 289 lv_style_set_shadow_color(&styles->btn, lv_palette_main(LV_PALETTE_GREY)); 290 lv_style_set_shadow_width(&styles->btn, LV_DPX(3)); 291 lv_style_set_shadow_opa(&styles->btn, LV_OPA_50); 292 lv_style_set_shadow_ofs_y(&styles->btn, lv_disp_dpx(theme.disp, LV_DPX(4))); 293 } 294 lv_style_set_text_color(&styles->btn, color_text); 295 lv_style_set_pad_hor(&styles->btn, PAD_DEF); 296 lv_style_set_pad_ver(&styles->btn, PAD_SMALL); 297 lv_style_set_pad_column(&styles->btn, lv_disp_dpx(theme.disp, 5)); 298 lv_style_set_pad_row(&styles->btn, lv_disp_dpx(theme.disp, 5)); 299 300 static lv_color_filter_dsc_t dark_filter; 301 lv_color_filter_dsc_init(&dark_filter, dark_color_filter_cb); 302 303 static lv_color_filter_dsc_t grey_filter; 304 lv_color_filter_dsc_init(&grey_filter, grey_filter_cb); 305 306 style_init_reset(&styles->pressed); 307 lv_style_set_color_filter_dsc(&styles->pressed, &dark_filter); 308 lv_style_set_color_filter_opa(&styles->pressed, 35); 309 310 style_init_reset(&styles->disabled); 311 lv_style_set_color_filter_dsc(&styles->disabled, &grey_filter); 312 lv_style_set_color_filter_opa(&styles->disabled, LV_OPA_50); 313 314 style_init_reset(&styles->clip_corner); 315 lv_style_set_clip_corner(&styles->clip_corner, true); 316 lv_style_set_border_post(&styles->clip_corner, true); 317 318 style_init_reset(&styles->pad_normal); 319 lv_style_set_pad_all(&styles->pad_normal, PAD_DEF); 320 lv_style_set_pad_row(&styles->pad_normal, PAD_DEF); 321 lv_style_set_pad_column(&styles->pad_normal, PAD_DEF); 322 323 style_init_reset(&styles->pad_small); 324 lv_style_set_pad_all(&styles->pad_small, PAD_SMALL); 325 lv_style_set_pad_gap(&styles->pad_small, PAD_SMALL); 326 327 style_init_reset(&styles->pad_gap); 328 lv_style_set_pad_row(&styles->pad_gap, lv_disp_dpx(theme.disp, 10)); 329 lv_style_set_pad_column(&styles->pad_gap, lv_disp_dpx(theme.disp, 10)); 330 331 style_init_reset(&styles->line_space_large); 332 lv_style_set_text_line_space(&styles->line_space_large, lv_disp_dpx(theme.disp, 20)); 333 334 style_init_reset(&styles->text_align_center); 335 lv_style_set_text_align(&styles->text_align_center, LV_TEXT_ALIGN_CENTER); 336 337 style_init_reset(&styles->pad_zero); 338 lv_style_set_pad_all(&styles->pad_zero, 0); 339 lv_style_set_pad_row(&styles->pad_zero, 0); 340 lv_style_set_pad_column(&styles->pad_zero, 0); 341 342 style_init_reset(&styles->pad_tiny); 343 lv_style_set_pad_all(&styles->pad_tiny, PAD_TINY); 344 lv_style_set_pad_row(&styles->pad_tiny, PAD_TINY); 345 lv_style_set_pad_column(&styles->pad_tiny, PAD_TINY); 346 347 style_init_reset(&styles->bg_color_primary); 348 lv_style_set_bg_color(&styles->bg_color_primary, theme.color_primary); 349 lv_style_set_text_color(&styles->bg_color_primary, lv_color_white()); 350 lv_style_set_bg_opa(&styles->bg_color_primary, LV_OPA_COVER); 351 352 style_init_reset(&styles->bg_color_primary_muted); 353 lv_style_set_bg_color(&styles->bg_color_primary_muted, theme.color_primary); 354 lv_style_set_text_color(&styles->bg_color_primary_muted, theme.color_primary); 355 lv_style_set_bg_opa(&styles->bg_color_primary_muted, LV_OPA_20); 356 357 style_init_reset(&styles->bg_color_secondary); 358 lv_style_set_bg_color(&styles->bg_color_secondary, theme.color_secondary); 359 lv_style_set_text_color(&styles->bg_color_secondary, lv_color_white()); 360 lv_style_set_bg_opa(&styles->bg_color_secondary, LV_OPA_COVER); 361 362 style_init_reset(&styles->bg_color_secondary_muted); 363 lv_style_set_bg_color(&styles->bg_color_secondary_muted, theme.color_secondary); 364 lv_style_set_text_color(&styles->bg_color_secondary_muted, theme.color_secondary); 365 lv_style_set_bg_opa(&styles->bg_color_secondary_muted, LV_OPA_20); 366 367 style_init_reset(&styles->bg_color_grey); 368 lv_style_set_bg_color(&styles->bg_color_grey, color_grey); 369 lv_style_set_bg_opa(&styles->bg_color_grey, LV_OPA_COVER); 370 lv_style_set_text_color(&styles->bg_color_grey, color_text); 371 372 style_init_reset(&styles->bg_color_white); 373 lv_style_set_bg_color(&styles->bg_color_white, color_card); 374 lv_style_set_bg_opa(&styles->bg_color_white, LV_OPA_COVER); 375 lv_style_set_text_color(&styles->bg_color_white, color_text); 376 377 style_init_reset(&styles->circle); 378 lv_style_set_radius(&styles->circle, LV_RADIUS_CIRCLE); 379 380 style_init_reset(&styles->no_radius); 381 lv_style_set_radius(&styles->no_radius, 0); 382 383 #if LV_THEME_DEFAULT_GROW 384 style_init_reset(&styles->grow); 385 lv_style_set_transform_width(&styles->grow, lv_disp_dpx(theme.disp, 3)); 386 lv_style_set_transform_height(&styles->grow, lv_disp_dpx(theme.disp, 3)); 387 #endif 388 389 style_init_reset(&styles->knob); 390 lv_style_set_bg_color(&styles->knob, theme.color_primary); 391 lv_style_set_bg_opa(&styles->knob, LV_OPA_COVER); 392 lv_style_set_pad_all(&styles->knob, lv_disp_dpx(theme.disp, 6)); 393 lv_style_set_radius(&styles->knob, LV_RADIUS_CIRCLE); 394 395 style_init_reset(&styles->anim); 396 lv_style_set_anim_time(&styles->anim, 200); 397 398 style_init_reset(&styles->anim_fast); 399 lv_style_set_anim_time(&styles->anim_fast, 120); 400 401 #if LV_USE_ARC 402 style_init_reset(&styles->arc_indic); 403 lv_style_set_arc_color(&styles->arc_indic, color_grey); 404 lv_style_set_arc_width(&styles->arc_indic, lv_disp_dpx(theme.disp, 15)); 405 lv_style_set_arc_rounded(&styles->arc_indic, true); 406 407 style_init_reset(&styles->arc_indic_primary); 408 lv_style_set_arc_color(&styles->arc_indic_primary, theme.color_primary); 409 #endif 410 411 #if LV_USE_DROPDOWN 412 style_init_reset(&styles->dropdown_list); 413 lv_style_set_max_height(&styles->dropdown_list, LV_DPI_DEF * 2); 414 #endif 415 #if LV_USE_CHECKBOX 416 style_init_reset(&styles->cb_marker); 417 lv_style_set_pad_all(&styles->cb_marker, lv_disp_dpx(theme.disp, 3)); 418 lv_style_set_border_width(&styles->cb_marker, BORDER_WIDTH); 419 lv_style_set_border_color(&styles->cb_marker, theme.color_primary); 420 lv_style_set_bg_color(&styles->cb_marker, color_card); 421 lv_style_set_bg_opa(&styles->cb_marker, LV_OPA_COVER); 422 lv_style_set_radius(&styles->cb_marker, RADIUS_DEFAULT / 2); 423 424 style_init_reset(&styles->cb_marker_checked); 425 lv_style_set_bg_img_src(&styles->cb_marker_checked, LV_SYMBOL_OK); 426 lv_style_set_text_color(&styles->cb_marker_checked, lv_color_white()); 427 lv_style_set_text_font(&styles->cb_marker_checked, theme.font_small); 428 #endif 429 430 #if LV_USE_SWITCH 431 style_init_reset(&styles->switch_knob); 432 lv_style_set_pad_all(&styles->switch_knob, - lv_disp_dpx(theme.disp, 4)); 433 lv_style_set_bg_color(&styles->switch_knob, lv_color_white()); 434 #endif 435 436 #if LV_USE_LINE 437 style_init_reset(&styles->line); 438 lv_style_set_line_width(&styles->line, 1); 439 lv_style_set_line_color(&styles->line, color_text); 440 #endif 441 442 #if LV_USE_CHART 443 style_init_reset(&styles->chart_bg); 444 lv_style_set_border_post(&styles->chart_bg, false); 445 lv_style_set_pad_column(&styles->chart_bg, lv_disp_dpx(theme.disp, 10)); 446 lv_style_set_line_color(&styles->chart_bg, color_grey); 447 448 style_init_reset(&styles->chart_series); 449 lv_style_set_line_width(&styles->chart_series, lv_disp_dpx(theme.disp, 3)); 450 lv_style_set_radius(&styles->chart_series, lv_disp_dpx(theme.disp, 3)); 451 lv_style_set_size(&styles->chart_series, lv_disp_dpx(theme.disp, 8)); 452 lv_style_set_pad_column(&styles->chart_series, lv_disp_dpx(theme.disp, 2)); 453 454 style_init_reset(&styles->chart_indic); 455 lv_style_set_radius(&styles->chart_indic, LV_RADIUS_CIRCLE); 456 lv_style_set_size(&styles->chart_indic, lv_disp_dpx(theme.disp, 8)); 457 lv_style_set_bg_color(&styles->chart_indic, theme.color_primary); 458 lv_style_set_bg_opa(&styles->chart_indic, LV_OPA_COVER); 459 460 style_init_reset(&styles->chart_ticks); 461 lv_style_set_line_width(&styles->chart_ticks, lv_disp_dpx(theme.disp, 1)); 462 lv_style_set_line_color(&styles->chart_ticks, color_text); 463 lv_style_set_pad_all(&styles->chart_ticks, lv_disp_dpx(theme.disp, 2)); 464 lv_style_set_text_color(&styles->chart_ticks, lv_palette_main(LV_PALETTE_GREY)); 465 #endif 466 467 #if LV_USE_MENU 468 style_init_reset(&styles->menu_bg); 469 lv_style_set_pad_all(&styles->menu_bg, 0); 470 lv_style_set_pad_gap(&styles->menu_bg, 0); 471 lv_style_set_radius(&styles->menu_bg, 0); 472 lv_style_set_clip_corner(&styles->menu_bg, true); 473 lv_style_set_border_side(&styles->menu_bg, LV_BORDER_SIDE_NONE); 474 475 style_init_reset(&styles->menu_section); 476 lv_style_set_radius(&styles->menu_section, RADIUS_DEFAULT); 477 lv_style_set_clip_corner(&styles->menu_section, true); 478 lv_style_set_bg_opa(&styles->menu_section, LV_OPA_COVER); 479 lv_style_set_bg_color(&styles->menu_section, color_card); 480 lv_style_set_text_color(&styles->menu_section, color_text); 481 482 style_init_reset(&styles->menu_cont); 483 lv_style_set_pad_hor(&styles->menu_cont, PAD_SMALL); 484 lv_style_set_pad_ver(&styles->menu_cont, PAD_SMALL); 485 lv_style_set_pad_gap(&styles->menu_cont, PAD_SMALL); 486 lv_style_set_border_width(&styles->menu_cont, lv_disp_dpx(theme.disp, 1)); 487 lv_style_set_border_opa(&styles->menu_cont, LV_OPA_10); 488 lv_style_set_border_color(&styles->menu_cont, color_text); 489 lv_style_set_border_side(&styles->menu_cont, LV_BORDER_SIDE_NONE); 490 491 style_init_reset(&styles->menu_sidebar_cont); 492 lv_style_set_pad_all(&styles->menu_sidebar_cont, 0); 493 lv_style_set_pad_gap(&styles->menu_sidebar_cont, 0); 494 lv_style_set_border_width(&styles->menu_sidebar_cont, lv_disp_dpx(theme.disp, 1)); 495 lv_style_set_border_opa(&styles->menu_sidebar_cont, LV_OPA_10); 496 lv_style_set_border_color(&styles->menu_sidebar_cont, color_text); 497 lv_style_set_border_side(&styles->menu_sidebar_cont, LV_BORDER_SIDE_RIGHT); 498 499 style_init_reset(&styles->menu_main_cont); 500 lv_style_set_pad_all(&styles->menu_main_cont, 0); 501 lv_style_set_pad_gap(&styles->menu_main_cont, 0); 502 503 style_init_reset(&styles->menu_header_cont); 504 lv_style_set_pad_hor(&styles->menu_header_cont, PAD_SMALL); 505 lv_style_set_pad_ver(&styles->menu_header_cont, PAD_TINY); 506 lv_style_set_pad_gap(&styles->menu_header_cont, PAD_SMALL); 507 508 style_init_reset(&styles->menu_header_btn); 509 lv_style_set_pad_hor(&styles->menu_header_btn, PAD_TINY); 510 lv_style_set_pad_ver(&styles->menu_header_btn, PAD_TINY); 511 lv_style_set_shadow_opa(&styles->menu_header_btn, LV_OPA_TRANSP); 512 lv_style_set_bg_opa(&styles->menu_header_btn, LV_OPA_TRANSP); 513 lv_style_set_text_color(&styles->menu_header_btn, color_text); 514 515 style_init_reset(&styles->menu_page); 516 lv_style_set_pad_hor(&styles->menu_page, 0); 517 lv_style_set_pad_gap(&styles->menu_page, 0); 518 519 style_init_reset(&styles->menu_pressed); 520 lv_style_set_bg_opa(&styles->menu_pressed, LV_OPA_20); 521 lv_style_set_bg_color(&styles->menu_pressed, lv_palette_main(LV_PALETTE_GREY)); 522 523 style_init_reset(&styles->menu_separator); 524 lv_style_set_bg_opa(&styles->menu_separator, LV_OPA_TRANSP); 525 lv_style_set_pad_ver(&styles->menu_separator, PAD_TINY); 526 #endif 527 528 #if LV_USE_METER 529 style_init_reset(&styles->meter_marker); 530 lv_style_set_line_width(&styles->meter_marker, lv_disp_dpx(theme.disp, 5)); 531 lv_style_set_line_color(&styles->meter_marker, color_text); 532 lv_style_set_size(&styles->meter_marker, lv_disp_dpx(theme.disp, 20)); 533 lv_style_set_pad_left(&styles->meter_marker, lv_disp_dpx(theme.disp, 15)); 534 535 style_init_reset(&styles->meter_indic); 536 lv_style_set_radius(&styles->meter_indic, LV_RADIUS_CIRCLE); 537 lv_style_set_bg_color(&styles->meter_indic, color_text); 538 lv_style_set_bg_opa(&styles->meter_indic, LV_OPA_COVER); 539 lv_style_set_size(&styles->meter_indic, lv_disp_dpx(theme.disp, 15)); 540 #endif 541 542 #if LV_USE_TABLE 543 style_init_reset(&styles->table_cell); 544 lv_style_set_border_width(&styles->table_cell, lv_disp_dpx(theme.disp, 1)); 545 lv_style_set_border_color(&styles->table_cell, color_grey); 546 lv_style_set_border_side(&styles->table_cell, LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_BOTTOM); 547 #endif 548 549 #if LV_USE_TEXTAREA 550 style_init_reset(&styles->ta_cursor); 551 lv_style_set_border_color(&styles->ta_cursor, color_text); 552 lv_style_set_border_width(&styles->ta_cursor, lv_disp_dpx(theme.disp, 2)); 553 lv_style_set_pad_left(&styles->ta_cursor, - lv_disp_dpx(theme.disp, 1)); 554 lv_style_set_border_side(&styles->ta_cursor, LV_BORDER_SIDE_LEFT); 555 lv_style_set_anim_time(&styles->ta_cursor, 400); 556 557 style_init_reset(&styles->ta_placeholder); 558 lv_style_set_text_color(&styles->ta_placeholder, (theme.flags & MODE_DARK) ? lv_palette_darken(LV_PALETTE_GREY, 559 2) : lv_palette_lighten(LV_PALETTE_GREY, 1)); 560 #endif 561 562 #if LV_USE_CALENDAR 563 style_init_reset(&styles->calendar_btnm_bg); 564 lv_style_set_pad_all(&styles->calendar_btnm_bg, PAD_SMALL); 565 lv_style_set_pad_gap(&styles->calendar_btnm_bg, PAD_SMALL / 2); 566 567 style_init_reset(&styles->calendar_btnm_day); 568 lv_style_set_border_width(&styles->calendar_btnm_day, lv_disp_dpx(theme.disp, 1)); 569 lv_style_set_border_color(&styles->calendar_btnm_day, color_grey); 570 lv_style_set_bg_color(&styles->calendar_btnm_day, color_card); 571 lv_style_set_bg_opa(&styles->calendar_btnm_day, LV_OPA_20); 572 573 style_init_reset(&styles->calendar_header); 574 lv_style_set_pad_hor(&styles->calendar_header, PAD_SMALL); 575 lv_style_set_pad_top(&styles->calendar_header, PAD_SMALL); 576 lv_style_set_pad_bottom(&styles->calendar_header, PAD_TINY); 577 lv_style_set_pad_gap(&styles->calendar_header, PAD_SMALL); 578 #endif 579 580 #if LV_USE_COLORWHEEL 581 style_init_reset(&styles->colorwheel_main); 582 lv_style_set_arc_width(&styles->colorwheel_main, lv_disp_dpx(theme.disp, 10)); 583 #endif 584 585 #if LV_USE_MSGBOX 586 /*To add space for for the button shadow*/ 587 style_init_reset(&styles->msgbox_btn_bg); 588 lv_style_set_pad_all(&styles->msgbox_btn_bg, lv_disp_dpx(theme.disp, 4)); 589 590 style_init_reset(&styles->msgbox_bg); 591 lv_style_set_max_width(&styles->msgbox_bg, lv_pct(100)); 592 593 style_init_reset(&styles->msgbox_backdrop_bg); 594 lv_style_set_bg_color(&styles->msgbox_backdrop_bg, lv_palette_main(LV_PALETTE_GREY)); 595 lv_style_set_bg_opa(&styles->msgbox_backdrop_bg, LV_OPA_50); 596 #endif 597 #if LV_USE_KEYBOARD 598 style_init_reset(&styles->keyboard_btn_bg); 599 lv_style_set_shadow_width(&styles->keyboard_btn_bg, 0); 600 lv_style_set_radius(&styles->keyboard_btn_bg, disp_size == DISP_SMALL ? RADIUS_DEFAULT / 2 : RADIUS_DEFAULT); 601 #endif 602 603 #if LV_USE_TABVIEW 604 style_init_reset(&styles->tab_btn); 605 lv_style_set_border_color(&styles->tab_btn, theme.color_primary); 606 lv_style_set_border_width(&styles->tab_btn, BORDER_WIDTH * 2); 607 lv_style_set_border_side(&styles->tab_btn, LV_BORDER_SIDE_BOTTOM); 608 609 style_init_reset(&styles->tab_bg_focus); 610 lv_style_set_outline_pad(&styles->tab_bg_focus, -BORDER_WIDTH); 611 #endif 612 613 #if LV_USE_LIST 614 style_init_reset(&styles->list_bg); 615 lv_style_set_pad_hor(&styles->list_bg, PAD_DEF); 616 lv_style_set_pad_ver(&styles->list_bg, 0); 617 lv_style_set_pad_gap(&styles->list_bg, 0); 618 lv_style_set_clip_corner(&styles->list_bg, true); 619 620 style_init_reset(&styles->list_btn); 621 lv_style_set_border_width(&styles->list_btn, lv_disp_dpx(theme.disp, 1)); 622 lv_style_set_border_color(&styles->list_btn, color_grey); 623 lv_style_set_border_side(&styles->list_btn, LV_BORDER_SIDE_BOTTOM); 624 lv_style_set_pad_all(&styles->list_btn, PAD_SMALL); 625 lv_style_set_pad_column(&styles->list_btn, PAD_SMALL); 626 627 style_init_reset(&styles->list_item_grow); 628 lv_style_set_transform_width(&styles->list_item_grow, PAD_DEF); 629 #endif 630 631 632 #if LV_USE_LED 633 style_init_reset(&styles->led); 634 lv_style_set_bg_opa(&styles->led, LV_OPA_COVER); 635 lv_style_set_bg_color(&styles->led, lv_color_white()); 636 lv_style_set_bg_grad_color(&styles->led, lv_palette_main(LV_PALETTE_GREY)); 637 lv_style_set_radius(&styles->led, LV_RADIUS_CIRCLE); 638 lv_style_set_shadow_width(&styles->led, lv_disp_dpx(theme.disp, 15)); 639 lv_style_set_shadow_color(&styles->led, lv_color_white()); 640 lv_style_set_shadow_spread(&styles->led, lv_disp_dpx(theme.disp, 5)); 641 #endif 642 } 643 644 /********************** 645 * GLOBAL FUNCTIONS 646 **********************/ 647 648 lv_theme_t * lv_theme_default_init(lv_disp_t * disp, lv_color_t color_primary, lv_color_t color_secondary, bool dark, 649 const lv_font_t * font) 650 { 651 652 /*This trick is required only to avoid the garbage collection of 653 *styles' data if LVGL is used in a binding (e.g. Micropython) 654 *In a general case styles could be in simple `static lv_style_t my_style...` variables*/ 655 if(!lv_theme_default_is_inited()) { 656 inited = false; 657 LV_GC_ROOT(_lv_theme_default_styles) = lv_mem_alloc(sizeof(my_theme_styles_t)); 658 styles = (my_theme_styles_t *)LV_GC_ROOT(_lv_theme_default_styles); 659 } 660 661 if(LV_HOR_RES <= 320) disp_size = DISP_SMALL; 662 else if(LV_HOR_RES < 720) disp_size = DISP_MEDIUM; 663 else disp_size = DISP_LARGE; 664 665 theme.disp = disp; 666 theme.color_primary = color_primary; 667 theme.color_secondary = color_secondary; 668 theme.font_small = font; 669 theme.font_normal = font; 670 theme.font_large = font; 671 theme.apply_cb = theme_apply; 672 theme.flags = dark ? MODE_DARK : 0; 673 674 style_init(); 675 676 if(disp == NULL || lv_disp_get_theme(disp) == &theme) lv_obj_report_style_change(NULL); 677 678 inited = true; 679 680 return (lv_theme_t *)&theme; 681 } 682 683 lv_theme_t * lv_theme_default_get(void) 684 { 685 if(!lv_theme_default_is_inited()) { 686 return NULL; 687 } 688 689 return (lv_theme_t *)&theme; 690 } 691 692 bool lv_theme_default_is_inited(void) 693 { 694 return LV_GC_ROOT(_lv_theme_default_styles) == NULL ? false : true; 695 } 696 697 698 static void theme_apply(lv_theme_t * th, lv_obj_t * obj) 699 { 700 LV_UNUSED(th); 701 702 if(lv_obj_get_parent(obj) == NULL) { 703 lv_obj_add_style(obj, &styles->scr, 0); 704 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 705 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 706 return; 707 } 708 709 if(lv_obj_check_type(obj, &lv_obj_class)) { 710 #if LV_USE_TABVIEW 711 lv_obj_t * parent = lv_obj_get_parent(obj); 712 /*Tabview content area*/ 713 if(lv_obj_check_type(parent, &lv_tabview_class)) { 714 return; 715 } 716 /*Tabview pages*/ 717 else if(lv_obj_check_type(lv_obj_get_parent(parent), &lv_tabview_class)) { 718 lv_obj_add_style(obj, &styles->pad_normal, 0); 719 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 720 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 721 return; 722 } 723 #endif 724 725 #if LV_USE_WIN 726 /*Header*/ 727 if(lv_obj_get_index(obj) == 0 && lv_obj_check_type(lv_obj_get_parent(obj), &lv_win_class)) { 728 lv_obj_add_style(obj, &styles->bg_color_grey, 0); 729 lv_obj_add_style(obj, &styles->pad_tiny, 0); 730 return; 731 } 732 /*Content*/ 733 else if(lv_obj_get_index(obj) == 1 && lv_obj_check_type(lv_obj_get_parent(obj), &lv_win_class)) { 734 lv_obj_add_style(obj, &styles->scr, 0); 735 lv_obj_add_style(obj, &styles->pad_normal, 0); 736 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 737 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 738 return; 739 } 740 #endif 741 742 743 #if LV_USE_CALENDAR 744 if(lv_obj_check_type(lv_obj_get_parent(obj), &lv_calendar_class)) { 745 /*No style*/ 746 return; 747 } 748 #endif 749 750 lv_obj_add_style(obj, &styles->card, 0); 751 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 752 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 753 } 754 #if LV_USE_BTN 755 else if(lv_obj_check_type(obj, &lv_btn_class)) { 756 lv_obj_add_style(obj, &styles->btn, 0); 757 lv_obj_add_style(obj, &styles->bg_color_primary, 0); 758 lv_obj_add_style(obj, &styles->transition_delayed, 0); 759 lv_obj_add_style(obj, &styles->pressed, LV_STATE_PRESSED); 760 lv_obj_add_style(obj, &styles->transition_normal, LV_STATE_PRESSED); 761 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 762 #if LV_THEME_DEFAULT_GROW 763 lv_obj_add_style(obj, &styles->grow, LV_STATE_PRESSED); 764 #endif 765 lv_obj_add_style(obj, &styles->bg_color_secondary, LV_STATE_CHECKED); 766 lv_obj_add_style(obj, &styles->disabled, LV_STATE_DISABLED); 767 768 #if LV_USE_MENU 769 if(lv_obj_check_type(lv_obj_get_parent(obj), &lv_menu_sidebar_header_cont_class) || 770 lv_obj_check_type(lv_obj_get_parent(obj), &lv_menu_main_header_cont_class)) { 771 lv_obj_add_style(obj, &styles->menu_header_btn, 0); 772 lv_obj_add_style(obj, &styles->menu_pressed, LV_STATE_PRESSED); 773 } 774 #endif 775 } 776 #endif 777 778 #if LV_USE_LINE 779 else if(lv_obj_check_type(obj, &lv_line_class)) { 780 lv_obj_add_style(obj, &styles->line, 0); 781 } 782 #endif 783 784 #if LV_USE_BTNMATRIX 785 else if(lv_obj_check_type(obj, &lv_btnmatrix_class)) { 786 #if LV_USE_MSGBOX 787 if(lv_obj_check_type(lv_obj_get_parent(obj), &lv_msgbox_class)) { 788 lv_obj_add_style(obj, &styles->msgbox_btn_bg, 0); 789 lv_obj_add_style(obj, &styles->pad_gap, 0); 790 lv_obj_add_style(obj, &styles->btn, LV_PART_ITEMS); 791 lv_obj_add_style(obj, &styles->pressed, LV_PART_ITEMS | LV_STATE_PRESSED); 792 lv_obj_add_style(obj, &styles->disabled, LV_PART_ITEMS | LV_STATE_DISABLED); 793 lv_obj_add_style(obj, &styles->bg_color_primary, LV_PART_ITEMS | LV_STATE_CHECKED); 794 lv_obj_add_style(obj, &styles->bg_color_primary_muted, LV_PART_ITEMS | LV_STATE_FOCUS_KEY); 795 lv_obj_add_style(obj, &styles->bg_color_secondary_muted, LV_PART_ITEMS | LV_STATE_EDITED); 796 return; 797 } 798 #endif 799 #if LV_USE_TABVIEW 800 if(lv_obj_check_type(lv_obj_get_parent(obj), &lv_tabview_class)) { 801 lv_obj_add_style(obj, &styles->bg_color_white, 0); 802 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 803 lv_obj_add_style(obj, &styles->tab_bg_focus, LV_STATE_FOCUS_KEY); 804 lv_obj_add_style(obj, &styles->pressed, LV_PART_ITEMS | LV_STATE_PRESSED); 805 lv_obj_add_style(obj, &styles->bg_color_primary_muted, LV_PART_ITEMS | LV_STATE_CHECKED); 806 lv_obj_add_style(obj, &styles->tab_btn, LV_PART_ITEMS | LV_STATE_CHECKED); 807 lv_obj_add_style(obj, &styles->outline_primary, LV_PART_ITEMS | LV_STATE_FOCUS_KEY); 808 lv_obj_add_style(obj, &styles->outline_secondary, LV_PART_ITEMS | LV_STATE_EDITED); 809 lv_obj_add_style(obj, &styles->tab_bg_focus, LV_PART_ITEMS | LV_STATE_FOCUS_KEY); 810 return; 811 } 812 #endif 813 814 #if LV_USE_CALENDAR 815 if(lv_obj_check_type(lv_obj_get_parent(obj), &lv_calendar_class)) { 816 lv_obj_add_style(obj, &styles->calendar_btnm_bg, 0); 817 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 818 lv_obj_add_style(obj, &styles->outline_secondary, LV_STATE_EDITED); 819 lv_obj_add_style(obj, &styles->calendar_btnm_day, LV_PART_ITEMS); 820 lv_obj_add_style(obj, &styles->pressed, LV_PART_ITEMS | LV_STATE_PRESSED); 821 lv_obj_add_style(obj, &styles->disabled, LV_PART_ITEMS | LV_STATE_DISABLED); 822 lv_obj_add_style(obj, &styles->outline_primary, LV_PART_ITEMS | LV_STATE_FOCUS_KEY); 823 lv_obj_add_style(obj, &styles->outline_secondary, LV_PART_ITEMS | LV_STATE_EDITED); 824 return; 825 } 826 #endif 827 lv_obj_add_style(obj, &styles->card, 0); 828 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 829 lv_obj_add_style(obj, &styles->outline_secondary, LV_STATE_EDITED); 830 lv_obj_add_style(obj, &styles->btn, LV_PART_ITEMS); 831 lv_obj_add_style(obj, &styles->disabled, LV_PART_ITEMS | LV_STATE_DISABLED); 832 lv_obj_add_style(obj, &styles->pressed, LV_PART_ITEMS | LV_STATE_PRESSED); 833 lv_obj_add_style(obj, &styles->bg_color_primary, LV_PART_ITEMS | LV_STATE_CHECKED); 834 lv_obj_add_style(obj, &styles->outline_primary, LV_PART_ITEMS | LV_STATE_FOCUS_KEY); 835 lv_obj_add_style(obj, &styles->outline_secondary, LV_PART_ITEMS | LV_STATE_EDITED); 836 } 837 #endif 838 839 #if LV_USE_BAR 840 else if(lv_obj_check_type(obj, &lv_bar_class)) { 841 lv_obj_add_style(obj, &styles->bg_color_primary_muted, 0); 842 lv_obj_add_style(obj, &styles->circle, 0); 843 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 844 lv_obj_add_style(obj, &styles->outline_secondary, LV_STATE_EDITED); 845 lv_obj_add_style(obj, &styles->bg_color_primary, LV_PART_INDICATOR); 846 lv_obj_add_style(obj, &styles->circle, LV_PART_INDICATOR); 847 } 848 #endif 849 850 #if LV_USE_SLIDER 851 else if(lv_obj_check_type(obj, &lv_slider_class)) { 852 lv_obj_add_style(obj, &styles->bg_color_primary_muted, 0); 853 lv_obj_add_style(obj, &styles->circle, 0); 854 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 855 lv_obj_add_style(obj, &styles->outline_secondary, LV_STATE_EDITED); 856 lv_obj_add_style(obj, &styles->bg_color_primary, LV_PART_INDICATOR); 857 lv_obj_add_style(obj, &styles->circle, LV_PART_INDICATOR); 858 lv_obj_add_style(obj, &styles->knob, LV_PART_KNOB); 859 #if LV_THEME_DEFAULT_GROW 860 lv_obj_add_style(obj, &styles->grow, LV_PART_KNOB | LV_STATE_PRESSED); 861 #endif 862 lv_obj_add_style(obj, &styles->transition_delayed, LV_PART_KNOB); 863 lv_obj_add_style(obj, &styles->transition_normal, LV_PART_KNOB | LV_STATE_PRESSED); 864 } 865 #endif 866 867 #if LV_USE_TABLE 868 else if(lv_obj_check_type(obj, &lv_table_class)) { 869 lv_obj_add_style(obj, &styles->card, 0); 870 lv_obj_add_style(obj, &styles->pad_zero, 0); 871 lv_obj_add_style(obj, &styles->no_radius, 0); 872 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 873 lv_obj_add_style(obj, &styles->outline_secondary, LV_STATE_EDITED); 874 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 875 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 876 lv_obj_add_style(obj, &styles->bg_color_white, LV_PART_ITEMS); 877 lv_obj_add_style(obj, &styles->table_cell, LV_PART_ITEMS); 878 lv_obj_add_style(obj, &styles->pad_normal, LV_PART_ITEMS); 879 lv_obj_add_style(obj, &styles->pressed, LV_PART_ITEMS | LV_STATE_PRESSED); 880 lv_obj_add_style(obj, &styles->bg_color_primary, LV_PART_ITEMS | LV_STATE_FOCUS_KEY); 881 lv_obj_add_style(obj, &styles->bg_color_secondary, LV_PART_ITEMS | LV_STATE_EDITED); 882 } 883 #endif 884 885 #if LV_USE_CHECKBOX 886 else if(lv_obj_check_type(obj, &lv_checkbox_class)) { 887 lv_obj_add_style(obj, &styles->pad_gap, 0); 888 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 889 lv_obj_add_style(obj, &styles->disabled, LV_PART_INDICATOR | LV_STATE_DISABLED); 890 lv_obj_add_style(obj, &styles->cb_marker, LV_PART_INDICATOR); 891 lv_obj_add_style(obj, &styles->bg_color_primary, LV_PART_INDICATOR | LV_STATE_CHECKED); 892 lv_obj_add_style(obj, &styles->cb_marker_checked, LV_PART_INDICATOR | LV_STATE_CHECKED); 893 lv_obj_add_style(obj, &styles->pressed, LV_PART_INDICATOR | LV_STATE_PRESSED); 894 #if LV_THEME_DEFAULT_GROW 895 lv_obj_add_style(obj, &styles->grow, LV_PART_INDICATOR | LV_STATE_PRESSED); 896 #endif 897 lv_obj_add_style(obj, &styles->transition_normal, LV_PART_INDICATOR | LV_STATE_PRESSED); 898 lv_obj_add_style(obj, &styles->transition_delayed, LV_PART_INDICATOR); 899 } 900 #endif 901 902 #if LV_USE_SWITCH 903 else if(lv_obj_check_type(obj, &lv_switch_class)) { 904 lv_obj_add_style(obj, &styles->bg_color_grey, 0); 905 lv_obj_add_style(obj, &styles->circle, 0); 906 lv_obj_add_style(obj, &styles->anim_fast, 0); 907 lv_obj_add_style(obj, &styles->disabled, LV_STATE_DISABLED); 908 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 909 lv_obj_add_style(obj, &styles->bg_color_primary, LV_PART_INDICATOR | LV_STATE_CHECKED); 910 lv_obj_add_style(obj, &styles->circle, LV_PART_INDICATOR); 911 lv_obj_add_style(obj, &styles->disabled, LV_PART_INDICATOR | LV_STATE_DISABLED); 912 lv_obj_add_style(obj, &styles->knob, LV_PART_KNOB); 913 lv_obj_add_style(obj, &styles->bg_color_white, LV_PART_KNOB); 914 lv_obj_add_style(obj, &styles->switch_knob, LV_PART_KNOB); 915 lv_obj_add_style(obj, &styles->disabled, LV_PART_KNOB | LV_STATE_DISABLED); 916 917 lv_obj_add_style(obj, &styles->transition_normal, LV_PART_INDICATOR | LV_STATE_CHECKED); 918 lv_obj_add_style(obj, &styles->transition_normal, LV_PART_INDICATOR); 919 } 920 #endif 921 922 #if LV_USE_CHART 923 else if(lv_obj_check_type(obj, &lv_chart_class)) { 924 lv_obj_add_style(obj, &styles->card, 0); 925 lv_obj_add_style(obj, &styles->pad_small, 0); 926 lv_obj_add_style(obj, &styles->chart_bg, 0); 927 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 928 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 929 lv_obj_add_style(obj, &styles->chart_series, LV_PART_ITEMS); 930 lv_obj_add_style(obj, &styles->chart_indic, LV_PART_INDICATOR); 931 lv_obj_add_style(obj, &styles->chart_ticks, LV_PART_TICKS); 932 lv_obj_add_style(obj, &styles->chart_series, LV_PART_CURSOR); 933 } 934 #endif 935 936 #if LV_USE_ROLLER 937 else if(lv_obj_check_type(obj, &lv_roller_class)) { 938 lv_obj_add_style(obj, &styles->card, 0); 939 lv_obj_add_style(obj, &styles->anim, 0); 940 lv_obj_add_style(obj, &styles->line_space_large, 0); 941 lv_obj_add_style(obj, &styles->text_align_center, 0); 942 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 943 lv_obj_add_style(obj, &styles->outline_secondary, LV_STATE_EDITED); 944 lv_obj_add_style(obj, &styles->bg_color_primary, LV_PART_SELECTED); 945 } 946 #endif 947 948 #if LV_USE_DROPDOWN 949 else if(lv_obj_check_type(obj, &lv_dropdown_class)) { 950 lv_obj_add_style(obj, &styles->card, 0); 951 lv_obj_add_style(obj, &styles->pad_small, 0); 952 lv_obj_add_style(obj, &styles->transition_delayed, 0); 953 lv_obj_add_style(obj, &styles->transition_normal, LV_STATE_PRESSED); 954 lv_obj_add_style(obj, &styles->pressed, LV_STATE_PRESSED); 955 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 956 lv_obj_add_style(obj, &styles->outline_secondary, LV_STATE_EDITED); 957 lv_obj_add_style(obj, &styles->transition_normal, LV_PART_INDICATOR); 958 } 959 else if(lv_obj_check_type(obj, &lv_dropdownlist_class)) { 960 lv_obj_add_style(obj, &styles->card, 0); 961 lv_obj_add_style(obj, &styles->clip_corner, 0); 962 lv_obj_add_style(obj, &styles->line_space_large, 0); 963 lv_obj_add_style(obj, &styles->dropdown_list, 0); 964 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 965 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 966 lv_obj_add_style(obj, &styles->bg_color_white, LV_PART_SELECTED); 967 lv_obj_add_style(obj, &styles->bg_color_primary, LV_PART_SELECTED | LV_STATE_CHECKED); 968 lv_obj_add_style(obj, &styles->pressed, LV_PART_SELECTED | LV_STATE_PRESSED); 969 } 970 #endif 971 972 #if LV_USE_ARC 973 else if(lv_obj_check_type(obj, &lv_arc_class)) { 974 lv_obj_add_style(obj, &styles->arc_indic, 0); 975 lv_obj_add_style(obj, &styles->arc_indic, LV_PART_INDICATOR); 976 lv_obj_add_style(obj, &styles->arc_indic_primary, LV_PART_INDICATOR); 977 lv_obj_add_style(obj, &styles->knob, LV_PART_KNOB); 978 } 979 #endif 980 981 982 #if LV_USE_SPINNER 983 else if(lv_obj_check_type(obj, &lv_spinner_class)) { 984 lv_obj_add_style(obj, &styles->arc_indic, 0); 985 lv_obj_add_style(obj, &styles->arc_indic, LV_PART_INDICATOR); 986 lv_obj_add_style(obj, &styles->arc_indic_primary, LV_PART_INDICATOR); 987 } 988 #endif 989 990 #if LV_USE_METER 991 else if(lv_obj_check_type(obj, &lv_meter_class)) { 992 lv_obj_add_style(obj, &styles->card, 0); 993 lv_obj_add_style(obj, &styles->circle, 0); 994 lv_obj_add_style(obj, &styles->meter_indic, LV_PART_INDICATOR); 995 } 996 #endif 997 998 #if LV_USE_TEXTAREA 999 else if(lv_obj_check_type(obj, &lv_textarea_class)) { 1000 lv_obj_add_style(obj, &styles->card, 0); 1001 lv_obj_add_style(obj, &styles->pad_small, 0); 1002 lv_obj_add_style(obj, &styles->disabled, LV_STATE_DISABLED); 1003 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 1004 lv_obj_add_style(obj, &styles->outline_secondary, LV_STATE_EDITED); 1005 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 1006 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 1007 lv_obj_add_style(obj, &styles->ta_cursor, LV_PART_CURSOR | LV_STATE_FOCUSED); 1008 lv_obj_add_style(obj, &styles->ta_placeholder, LV_PART_TEXTAREA_PLACEHOLDER); 1009 } 1010 #endif 1011 1012 #if LV_USE_CALENDAR 1013 else if(lv_obj_check_type(obj, &lv_calendar_class)) { 1014 lv_obj_add_style(obj, &styles->card, 0); 1015 lv_obj_add_style(obj, &styles->pad_zero, 0); 1016 } 1017 #endif 1018 1019 #if LV_USE_CALENDAR_HEADER_ARROW 1020 else if(lv_obj_check_type(obj, &lv_calendar_header_arrow_class)) { 1021 lv_obj_add_style(obj, &styles->calendar_header, 0); 1022 } 1023 #endif 1024 1025 #if LV_USE_CALENDAR_HEADER_DROPDOWN 1026 else if(lv_obj_check_type(obj, &lv_calendar_header_dropdown_class)) { 1027 lv_obj_add_style(obj, &styles->calendar_header, 0); 1028 } 1029 #endif 1030 1031 #if LV_USE_KEYBOARD 1032 else if(lv_obj_check_type(obj, &lv_keyboard_class)) { 1033 lv_obj_add_style(obj, &styles->scr, 0); 1034 lv_obj_add_style(obj, disp_size == DISP_LARGE ? &styles->pad_small : &styles->pad_tiny, 0); 1035 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 1036 lv_obj_add_style(obj, &styles->outline_secondary, LV_STATE_EDITED); 1037 lv_obj_add_style(obj, &styles->btn, LV_PART_ITEMS); 1038 lv_obj_add_style(obj, &styles->disabled, LV_PART_ITEMS | LV_STATE_DISABLED); 1039 lv_obj_add_style(obj, &styles->bg_color_white, LV_PART_ITEMS); 1040 lv_obj_add_style(obj, &styles->keyboard_btn_bg, LV_PART_ITEMS); 1041 lv_obj_add_style(obj, &styles->pressed, LV_PART_ITEMS | LV_STATE_PRESSED); 1042 lv_obj_add_style(obj, &styles->bg_color_grey, LV_PART_ITEMS | LV_STATE_CHECKED); 1043 lv_obj_add_style(obj, &styles->bg_color_primary_muted, LV_PART_ITEMS | LV_STATE_FOCUS_KEY); 1044 lv_obj_add_style(obj, &styles->bg_color_secondary_muted, LV_PART_ITEMS | LV_STATE_EDITED); 1045 } 1046 #endif 1047 #if LV_USE_LIST 1048 else if(lv_obj_check_type(obj, &lv_list_class)) { 1049 lv_obj_add_style(obj, &styles->card, 0); 1050 lv_obj_add_style(obj, &styles->list_bg, 0); 1051 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 1052 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 1053 return; 1054 } 1055 else if(lv_obj_check_type(obj, &lv_list_text_class)) { 1056 lv_obj_add_style(obj, &styles->bg_color_grey, 0); 1057 lv_obj_add_style(obj, &styles->list_item_grow, 0); 1058 } 1059 else if(lv_obj_check_type(obj, &lv_list_btn_class)) { 1060 lv_obj_add_style(obj, &styles->bg_color_white, 0); 1061 lv_obj_add_style(obj, &styles->list_btn, 0); 1062 lv_obj_add_style(obj, &styles->bg_color_primary, LV_STATE_FOCUS_KEY); 1063 lv_obj_add_style(obj, &styles->list_item_grow, LV_STATE_FOCUS_KEY); 1064 lv_obj_add_style(obj, &styles->list_item_grow, LV_STATE_PRESSED); 1065 lv_obj_add_style(obj, &styles->pressed, LV_STATE_PRESSED); 1066 1067 } 1068 #endif 1069 #if LV_USE_MENU 1070 else if(lv_obj_check_type(obj, &lv_menu_class)) { 1071 lv_obj_add_style(obj, &styles->card, 0); 1072 lv_obj_add_style(obj, &styles->menu_bg, 0); 1073 } 1074 else if(lv_obj_check_type(obj, &lv_menu_sidebar_cont_class)) { 1075 lv_obj_add_style(obj, &styles->menu_sidebar_cont, 0); 1076 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 1077 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 1078 } 1079 else if(lv_obj_check_type(obj, &lv_menu_main_cont_class)) { 1080 lv_obj_add_style(obj, &styles->menu_main_cont, 0); 1081 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 1082 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 1083 } 1084 else if(lv_obj_check_type(obj, &lv_menu_cont_class)) { 1085 lv_obj_add_style(obj, &styles->menu_cont, 0); 1086 lv_obj_add_style(obj, &styles->menu_pressed, LV_STATE_PRESSED); 1087 lv_obj_add_style(obj, &styles->bg_color_primary_muted, LV_STATE_PRESSED | LV_STATE_CHECKED); 1088 lv_obj_add_style(obj, &styles->bg_color_primary_muted, LV_STATE_CHECKED); 1089 lv_obj_add_style(obj, &styles->bg_color_primary, LV_STATE_FOCUS_KEY); 1090 } 1091 else if(lv_obj_check_type(obj, &lv_menu_sidebar_header_cont_class) || 1092 lv_obj_check_type(obj, &lv_menu_main_header_cont_class)) { 1093 lv_obj_add_style(obj, &styles->menu_header_cont, 0); 1094 } 1095 else if(lv_obj_check_type(obj, &lv_menu_page_class)) { 1096 lv_obj_add_style(obj, &styles->menu_page, 0); 1097 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 1098 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 1099 } 1100 else if(lv_obj_check_type(obj, &lv_menu_section_class)) { 1101 lv_obj_add_style(obj, &styles->menu_section, 0); 1102 } 1103 else if(lv_obj_check_type(obj, &lv_menu_separator_class)) { 1104 lv_obj_add_style(obj, &styles->menu_separator, 0); 1105 } 1106 #endif 1107 #if LV_USE_MSGBOX 1108 else if(lv_obj_check_type(obj, &lv_msgbox_class)) { 1109 lv_obj_add_style(obj, &styles->card, 0); 1110 lv_obj_add_style(obj, &styles->msgbox_bg, 0); 1111 return; 1112 } 1113 else if(lv_obj_check_type(obj, &lv_msgbox_backdrop_class)) { 1114 lv_obj_add_style(obj, &styles->msgbox_backdrop_bg, 0); 1115 } 1116 #endif 1117 #if LV_USE_SPINBOX 1118 else if(lv_obj_check_type(obj, &lv_spinbox_class)) { 1119 lv_obj_add_style(obj, &styles->card, 0); 1120 lv_obj_add_style(obj, &styles->pad_small, 0); 1121 lv_obj_add_style(obj, &styles->outline_primary, LV_STATE_FOCUS_KEY); 1122 lv_obj_add_style(obj, &styles->outline_secondary, LV_STATE_EDITED); 1123 lv_obj_add_style(obj, &styles->bg_color_primary, LV_PART_CURSOR); 1124 } 1125 #endif 1126 #if LV_USE_TILEVIEW 1127 else if(lv_obj_check_type(obj, &lv_tileview_class)) { 1128 lv_obj_add_style(obj, &styles->scr, 0); 1129 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 1130 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 1131 } 1132 else if(lv_obj_check_type(obj, &lv_tileview_tile_class)) { 1133 lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR); 1134 lv_obj_add_style(obj, &styles->scrollbar_scrolled, LV_PART_SCROLLBAR | LV_STATE_SCROLLED); 1135 } 1136 #endif 1137 1138 #if LV_USE_TABVIEW 1139 else if(lv_obj_check_type(obj, &lv_tabview_class)) { 1140 lv_obj_add_style(obj, &styles->scr, 0); 1141 lv_obj_add_style(obj, &styles->pad_zero, 0); 1142 } 1143 #endif 1144 1145 #if LV_USE_WIN 1146 else if(lv_obj_check_type(obj, &lv_win_class)) { 1147 lv_obj_add_style(obj, &styles->clip_corner, 0); 1148 } 1149 #endif 1150 1151 #if LV_USE_COLORWHEEL 1152 else if(lv_obj_check_type(obj, &lv_colorwheel_class)) { 1153 lv_obj_add_style(obj, &styles->colorwheel_main, 0); 1154 lv_obj_add_style(obj, &styles->pad_normal, 0); 1155 lv_obj_add_style(obj, &styles->bg_color_white, LV_PART_KNOB); 1156 lv_obj_add_style(obj, &styles->pad_normal, LV_PART_KNOB); 1157 } 1158 #endif 1159 1160 #if LV_USE_LED 1161 else if(lv_obj_check_type(obj, &lv_led_class)) { 1162 lv_obj_add_style(obj, &styles->led, 0); 1163 } 1164 #endif 1165 } 1166 1167 /********************** 1168 * STATIC FUNCTIONS 1169 **********************/ 1170 1171 static void style_init_reset(lv_style_t * style) 1172 { 1173 if(inited) { 1174 lv_style_reset(style); 1175 } 1176 else { 1177 lv_style_init(style); 1178 } 1179 } 1180 1181 #endif