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.c (2948B)
1 /** 2 * @file lv_theme.c 3 * 4 */ 5 6 /********************* 7 * INCLUDES 8 *********************/ 9 #include "../../lvgl.h" 10 11 /********************* 12 * DEFINES 13 *********************/ 14 15 /********************** 16 * TYPEDEFS 17 **********************/ 18 19 /********************** 20 * STATIC PROTOTYPES 21 **********************/ 22 static void apply_theme(lv_theme_t * th, lv_obj_t * obj); 23 24 /********************** 25 * STATIC VARIABLES 26 **********************/ 27 28 /********************** 29 * MACROS 30 **********************/ 31 32 /********************** 33 * GLOBAL FUNCTIONS 34 **********************/ 35 36 lv_theme_t * lv_theme_get_from_obj(lv_obj_t * obj) 37 { 38 lv_disp_t * disp = obj ? lv_obj_get_disp(obj) : lv_disp_get_default(); 39 return lv_disp_get_theme(disp); 40 } 41 42 /** 43 * Apply the active theme on an object 44 * @param obj pointer to an object 45 * @param name the name of the theme element to apply. E.g. `LV_THEME_BTN` 46 */ 47 void lv_theme_apply(lv_obj_t * obj) 48 { 49 lv_theme_t * th = lv_theme_get_from_obj(obj); 50 if(th == NULL) return; 51 52 lv_obj_remove_style_all(obj); 53 54 apply_theme(th, obj); /*Apply the theme including the base theme(s)*/ 55 } 56 57 /** 58 * Set a base theme for a theme. 59 * The styles from the base them will be added before the styles of the current theme. 60 * Arbitrary long chain of themes can be created by setting base themes. 61 * @param new_theme pointer to theme which base should be set 62 * @param base pointer to the base theme 63 */ 64 void lv_theme_set_parent(lv_theme_t * new_theme, lv_theme_t * base) 65 { 66 new_theme->parent = base; 67 } 68 69 /** 70 * Set a callback for a theme. 71 * The callback is used to add styles to different objects 72 * @param theme pointer to theme which callback should be set 73 * @param cb pointer to the callback 74 */ 75 void lv_theme_set_apply_cb(lv_theme_t * theme, lv_theme_apply_cb_t apply_cb) 76 { 77 theme->apply_cb = apply_cb; 78 } 79 80 const lv_font_t * lv_theme_get_font_small(lv_obj_t * obj) 81 { 82 lv_theme_t * th = lv_theme_get_from_obj(obj); 83 return th ? th->font_small : LV_FONT_DEFAULT; 84 } 85 86 const lv_font_t * lv_theme_get_font_normal(lv_obj_t * obj) 87 { 88 lv_theme_t * th = lv_theme_get_from_obj(obj); 89 return th ? th->font_normal : LV_FONT_DEFAULT; 90 } 91 92 const lv_font_t * lv_theme_get_font_large(lv_obj_t * obj) 93 { 94 lv_theme_t * th = lv_theme_get_from_obj(obj); 95 return th ? th->font_large : LV_FONT_DEFAULT; 96 } 97 98 lv_color_t lv_theme_get_color_primary(lv_obj_t * obj) 99 { 100 lv_theme_t * th = lv_theme_get_from_obj(obj); 101 return th ? th->color_primary : lv_palette_main(LV_PALETTE_BLUE_GREY); 102 } 103 104 lv_color_t lv_theme_get_color_secondary(lv_obj_t * obj) 105 { 106 lv_theme_t * th = lv_theme_get_from_obj(obj); 107 return th ? th->color_secondary : lv_palette_main(LV_PALETTE_BLUE); 108 } 109 110 /********************** 111 * STATIC FUNCTIONS 112 **********************/ 113 114 static void apply_theme(lv_theme_t * th, lv_obj_t * obj) 115 { 116 if(th->parent) apply_theme(th->parent, obj); 117 if(th->apply_cb) th->apply_cb(th, obj); 118 }