1 /**
2  * @file lv_theme_mono.c
3  *
4  */
5 
6 /*********************
7  *      INCLUDES
8  *********************/
9 #include "../../../lvgl.h"
10 
11 #if LV_USE_THEME_MONO
12 
13 #include "lv_theme_mono.h"
14 #include "../../../misc/lv_gc.h"
15 
16 /*********************
17  *      DEFINES
18  *********************/
19 
20 #define COLOR_FG      dark_bg ? lv_color_white() : lv_color_black()
21 #define COLOR_BG      dark_bg ? lv_color_black() : lv_color_white()
22 
23 #define BORDER_W_NORMAL  1
24 #define BORDER_W_PR      3
25 #define BORDER_W_DIS     0
26 #define BORDER_W_FOCUS   1
27 #define BORDER_W_EDIT    2
28 #define PAD_DEF          4
29 
30 /**********************
31  *      TYPEDEFS
32  **********************/
33 typedef struct {
34     lv_style_t scr;
35     lv_style_t card;
36     lv_style_t scrollbar;
37     lv_style_t btn;
38     lv_style_t pr;
39     lv_style_t inv;
40     lv_style_t disabled;
41     lv_style_t focus;
42     lv_style_t edit;
43     lv_style_t pad_gap;
44     lv_style_t pad_zero;
45     lv_style_t no_radius;
46     lv_style_t radius_circle;
47     lv_style_t large_border;
48     lv_style_t large_line_space;
49     lv_style_t underline;
50 #if LV_USE_TEXTAREA
51     lv_style_t ta_cursor;
52 #endif
53 } my_theme_styles_t;
54 
55 /**********************
56  *  STATIC PROTOTYPES
57  **********************/
58 static void style_init_reset(lv_style_t * style);
59 static void theme_apply(lv_theme_t * th, lv_obj_t * obj);
60 
61 /**********************
62  *  STATIC VARIABLES
63  **********************/
64 static my_theme_styles_t * styles;
65 static lv_theme_t theme;
66 static bool inited;
67 
68 /**********************
69  *      MACROS
70  **********************/
71 
72 /**********************
73  *   STATIC FUNCTIONS
74  **********************/
75 
style_init(bool dark_bg,const lv_font_t * font)76 static void style_init(bool dark_bg, const lv_font_t * font)
77 {
78     style_init_reset(&styles->scrollbar);
79     lv_style_set_bg_opa(&styles->scrollbar, LV_OPA_COVER);
80     lv_style_set_bg_color(&styles->scrollbar, COLOR_FG);
81     lv_style_set_width(&styles->scrollbar,  PAD_DEF);
82 
83     style_init_reset(&styles->scr);
84     lv_style_set_bg_opa(&styles->scr, LV_OPA_COVER);
85     lv_style_set_bg_color(&styles->scr, COLOR_BG);
86     lv_style_set_text_color(&styles->scr, COLOR_FG);
87     lv_style_set_pad_row(&styles->scr, PAD_DEF);
88     lv_style_set_pad_column(&styles->scr, PAD_DEF);
89     lv_style_set_text_font(&styles->scr, font);
90 
91     style_init_reset(&styles->card);
92     lv_style_set_bg_opa(&styles->card, LV_OPA_COVER);
93     lv_style_set_bg_color(&styles->card, COLOR_BG);
94     lv_style_set_border_color(&styles->card, COLOR_FG);
95     lv_style_set_radius(&styles->card, 2);
96     lv_style_set_border_width(&styles->card, BORDER_W_NORMAL);
97     lv_style_set_pad_all(&styles->card, PAD_DEF);
98     lv_style_set_pad_gap(&styles->card, PAD_DEF);
99     lv_style_set_text_color(&styles->card, COLOR_FG);
100     lv_style_set_line_width(&styles->card, 2);
101     lv_style_set_line_color(&styles->card, COLOR_FG);
102     lv_style_set_arc_width(&styles->card, 2);
103     lv_style_set_arc_color(&styles->card, COLOR_FG);
104     lv_style_set_outline_color(&styles->card, COLOR_FG);
105     lv_style_set_anim_time(&styles->card, 300);
106 
107     style_init_reset(&styles->pr);
108     lv_style_set_border_width(&styles->pr, BORDER_W_PR);
109 
110     style_init_reset(&styles->inv);
111     lv_style_set_bg_opa(&styles->inv, LV_OPA_COVER);
112     lv_style_set_bg_color(&styles->inv, COLOR_FG);
113     lv_style_set_border_color(&styles->inv, COLOR_BG);
114     lv_style_set_line_color(&styles->inv, COLOR_BG);
115     lv_style_set_arc_color(&styles->inv, COLOR_BG);
116     lv_style_set_text_color(&styles->inv, COLOR_BG);
117     lv_style_set_outline_color(&styles->inv, COLOR_BG);
118 
119     style_init_reset(&styles->disabled);
120     lv_style_set_border_width(&styles->disabled, BORDER_W_DIS);
121 
122     style_init_reset(&styles->focus);
123     lv_style_set_outline_width(&styles->focus, 1);
124     lv_style_set_outline_pad(&styles->focus, BORDER_W_FOCUS);
125 
126     style_init_reset(&styles->edit);
127     lv_style_set_outline_width(&styles->edit, BORDER_W_EDIT);
128 
129     style_init_reset(&styles->large_border);
130     lv_style_set_border_width(&styles->large_border, BORDER_W_EDIT);
131 
132     style_init_reset(&styles->pad_gap);
133     lv_style_set_pad_gap(&styles->pad_gap, PAD_DEF);
134 
135     style_init_reset(&styles->pad_zero);
136     lv_style_set_pad_all(&styles->pad_zero, 0);
137     lv_style_set_pad_gap(&styles->pad_zero, 0);
138 
139     style_init_reset(&styles->no_radius);
140     lv_style_set_radius(&styles->no_radius, 0);
141 
142     style_init_reset(&styles->radius_circle);
143     lv_style_set_radius(&styles->radius_circle, LV_RADIUS_CIRCLE);
144 
145     style_init_reset(&styles->large_line_space);
146     lv_style_set_text_line_space(&styles->large_line_space, 6);
147 
148     style_init_reset(&styles->underline);
149     lv_style_set_text_decor(&styles->underline, LV_TEXT_DECOR_UNDERLINE);
150 
151 #if LV_USE_TEXTAREA
152     style_init_reset(&styles->ta_cursor);
153     lv_style_set_border_side(&styles->ta_cursor, LV_BORDER_SIDE_LEFT);
154     lv_style_set_border_color(&styles->ta_cursor, COLOR_FG);
155     lv_style_set_border_width(&styles->ta_cursor, 2);
156     lv_style_set_bg_opa(&styles->ta_cursor, LV_OPA_TRANSP);
157     lv_style_set_anim_time(&styles->ta_cursor, 500);
158 #endif
159 }
160 
161 /**********************
162  *   GLOBAL FUNCTIONS
163  **********************/
164 
lv_theme_mono_is_inited(void)165 bool lv_theme_mono_is_inited(void)
166 {
167     return  LV_GC_ROOT(_lv_theme_default_styles) == NULL ? false : true;
168 }
169 
lv_theme_mono_init(lv_disp_t * disp,bool dark_bg,const lv_font_t * font)170 lv_theme_t * lv_theme_mono_init(lv_disp_t * disp, bool dark_bg, const lv_font_t * font)
171 {
172 
173     /*This trick is required only to avoid the garbage collection of
174      *styles' data if LVGL is used in a binding (e.g. Micropython)
175      *In a general case styles could be in simple `static lv_style_t my_style...` variables*/
176     if(!inited) {
177         inited = false;
178         LV_GC_ROOT(_lv_theme_default_styles) = lv_mem_alloc(sizeof(my_theme_styles_t));
179         styles = (my_theme_styles_t *)LV_GC_ROOT(_lv_theme_default_styles);
180     }
181 
182     theme.disp = disp;
183     theme.font_small = LV_FONT_DEFAULT;
184     theme.font_normal = LV_FONT_DEFAULT;
185     theme.font_large = LV_FONT_DEFAULT;
186     theme.apply_cb = theme_apply;
187 
188     style_init(dark_bg, font);
189 
190     if(disp == NULL || lv_disp_get_theme(disp) == &theme) lv_obj_report_style_change(NULL);
191 
192     inited = true;
193 
194     return (lv_theme_t *)&theme;
195 }
196 
theme_apply(lv_theme_t * th,lv_obj_t * obj)197 static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
198 {
199     LV_UNUSED(th);
200 
201     if(lv_obj_get_parent(obj) == NULL) {
202         lv_obj_add_style(obj, &styles->scr, 0);
203         lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
204         return;
205     }
206 
207     if(lv_obj_check_type(obj, &lv_obj_class)) {
208 #if LV_USE_TABVIEW
209         lv_obj_t * parent = lv_obj_get_parent(obj);
210         /*Tabview content area*/
211         if(lv_obj_check_type(parent, &lv_tabview_class)) {
212             return;
213         }
214         /*Tabview pages*/
215         else if(lv_obj_check_type(lv_obj_get_parent(parent), &lv_tabview_class)) {
216             lv_obj_add_style(obj, &styles->card, 0);
217             lv_obj_add_style(obj, &styles->no_radius, 0);
218             lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
219             return;
220         }
221 #endif
222 
223 #if LV_USE_WIN
224         /*Header*/
225         if(lv_obj_get_index(obj) == 0 && lv_obj_check_type(lv_obj_get_parent(obj), &lv_win_class)) {
226             lv_obj_add_style(obj, &styles->card, 0);
227             lv_obj_add_style(obj, &styles->no_radius, 0);
228             return;
229         }
230         /*Content*/
231         else if(lv_obj_get_index(obj) == 1 && lv_obj_check_type(lv_obj_get_parent(obj), &lv_win_class)) {
232             lv_obj_add_style(obj, &styles->card, 0);
233             lv_obj_add_style(obj, &styles->no_radius, 0);
234             lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
235             return;
236         }
237 #endif
238         lv_obj_add_style(obj, &styles->card, 0);
239         lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
240     }
241 #if LV_USE_BTN
242     else if(lv_obj_check_type(obj, &lv_btn_class)) {
243         lv_obj_add_style(obj, &styles->card, 0);
244         lv_obj_add_style(obj, &styles->pr, LV_STATE_PRESSED);
245         lv_obj_add_style(obj, &styles->inv, LV_STATE_CHECKED);
246         lv_obj_add_style(obj, &styles->disabled, LV_STATE_DISABLED);
247         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
248         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
249     }
250 #endif
251 
252 #if LV_USE_BTNMATRIX
253     else if(lv_obj_check_type(obj, &lv_btnmatrix_class)) {
254 #if LV_USE_MSGBOX
255         if(lv_obj_check_type(lv_obj_get_parent(obj), &lv_msgbox_class)) {
256             lv_obj_add_style(obj, &styles->pad_gap, 0);
257             lv_obj_add_style(obj, &styles->card, LV_PART_ITEMS);
258             lv_obj_add_style(obj, &styles->pr, LV_PART_ITEMS | LV_STATE_PRESSED);
259             lv_obj_add_style(obj, &styles->disabled, LV_PART_ITEMS | LV_STATE_DISABLED);
260             lv_obj_add_style(obj, &styles->underline, LV_PART_ITEMS | LV_STATE_FOCUS_KEY);
261             lv_obj_add_style(obj, &styles->large_border, LV_PART_ITEMS | LV_STATE_FOCUS_KEY);
262             return;
263         }
264 #endif
265 #if LV_USE_TABVIEW
266         if(lv_obj_check_type(lv_obj_get_parent(obj), &lv_tabview_class)) {
267             lv_obj_add_style(obj, &styles->pad_gap, 0);
268             lv_obj_add_style(obj, &styles->card, LV_PART_ITEMS);
269             lv_obj_add_style(obj, &styles->pr, LV_PART_ITEMS | LV_STATE_PRESSED);
270             lv_obj_add_style(obj, &styles->inv, LV_PART_ITEMS | LV_STATE_CHECKED);
271             lv_obj_add_style(obj, &styles->disabled, LV_PART_ITEMS | LV_STATE_DISABLED);
272             lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
273             lv_obj_add_style(obj, &styles->underline, LV_PART_ITEMS | LV_STATE_FOCUS_KEY);
274             lv_obj_add_style(obj, &styles->large_border, LV_PART_ITEMS | LV_STATE_FOCUS_KEY);
275             return;
276         }
277 #endif
278         lv_obj_add_style(obj, &styles->card, 0);
279         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
280         lv_obj_add_style(obj, &styles->card, LV_PART_ITEMS);
281         lv_obj_add_style(obj, &styles->pr, LV_PART_ITEMS | LV_STATE_PRESSED);
282         lv_obj_add_style(obj, &styles->inv, LV_PART_ITEMS | LV_STATE_CHECKED);
283         lv_obj_add_style(obj, &styles->disabled, LV_PART_ITEMS | LV_STATE_DISABLED);
284         lv_obj_add_style(obj, &styles->underline, LV_PART_ITEMS | LV_STATE_FOCUS_KEY);
285         lv_obj_add_style(obj, &styles->large_border, LV_PART_ITEMS | LV_STATE_FOCUS_KEY);
286     }
287 #endif
288 
289 #if LV_USE_BAR
290     else if(lv_obj_check_type(obj, &lv_bar_class)) {
291         lv_obj_add_style(obj, &styles->card, 0);
292         lv_obj_add_style(obj, &styles->pad_zero, 0);
293         lv_obj_add_style(obj, &styles->inv, LV_PART_INDICATOR);
294         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
295     }
296 #endif
297 
298 #if LV_USE_SLIDER
299     else if(lv_obj_check_type(obj, &lv_slider_class)) {
300         lv_obj_add_style(obj, &styles->card, 0);
301         lv_obj_add_style(obj, &styles->pad_zero, 0);
302         lv_obj_add_style(obj, &styles->inv, LV_PART_INDICATOR);
303         lv_obj_add_style(obj, &styles->card, LV_PART_KNOB);
304         lv_obj_add_style(obj, &styles->radius_circle, LV_PART_KNOB);
305         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
306         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
307     }
308 #endif
309 
310 #if LV_USE_TABLE
311     else if(lv_obj_check_type(obj, &lv_table_class)) {
312         lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
313         lv_obj_add_style(obj, &styles->card, LV_PART_ITEMS);
314         lv_obj_add_style(obj, &styles->no_radius, LV_PART_ITEMS);
315         lv_obj_add_style(obj, &styles->pr, LV_PART_ITEMS | LV_STATE_PRESSED);
316         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
317         lv_obj_add_style(obj, &styles->inv, LV_PART_ITEMS | LV_STATE_FOCUS_KEY);
318         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
319     }
320 #endif
321 
322 #if LV_USE_CHECKBOX
323     else if(lv_obj_check_type(obj, &lv_checkbox_class)) {
324         lv_obj_add_style(obj, &styles->pad_gap, LV_PART_MAIN);
325         lv_obj_add_style(obj, &styles->card, LV_PART_INDICATOR);
326         lv_obj_add_style(obj, &styles->disabled, LV_PART_INDICATOR | LV_STATE_DISABLED);
327         lv_obj_add_style(obj, &styles->inv, LV_PART_INDICATOR | LV_STATE_CHECKED);
328         lv_obj_add_style(obj, &styles->pr, LV_PART_INDICATOR | LV_STATE_PRESSED);
329         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
330         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
331     }
332 #endif
333 
334 #if LV_USE_SWITCH
335     else if(lv_obj_check_type(obj, &lv_switch_class)) {
336         lv_obj_add_style(obj, &styles->card, 0);
337         lv_obj_add_style(obj, &styles->radius_circle, 0);
338         lv_obj_add_style(obj, &styles->pad_zero, 0);
339         lv_obj_add_style(obj, &styles->inv, LV_PART_INDICATOR);
340         lv_obj_add_style(obj, &styles->radius_circle, LV_PART_INDICATOR);
341         lv_obj_add_style(obj, &styles->card, LV_PART_KNOB);
342         lv_obj_add_style(obj, &styles->radius_circle, LV_PART_KNOB);
343         lv_obj_add_style(obj, &styles->pad_zero, LV_PART_KNOB);
344         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
345         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
346     }
347 #endif
348 
349 #if LV_USE_CHART
350     else if(lv_obj_check_type(obj, &lv_chart_class)) {
351         lv_obj_add_style(obj, &styles->card, 0);
352         lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
353         lv_obj_add_style(obj, &styles->card, LV_PART_ITEMS);
354         lv_obj_add_style(obj, &styles->card, LV_PART_TICKS);
355         lv_obj_add_style(obj, &styles->card, LV_PART_CURSOR);
356         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
357     }
358 #endif
359 
360 #if LV_USE_ROLLER
361     else if(lv_obj_check_type(obj, &lv_roller_class)) {
362         lv_obj_add_style(obj, &styles->card, 0);
363         lv_obj_add_style(obj, &styles->large_line_space, 0);
364         lv_obj_add_style(obj, &styles->inv, LV_PART_SELECTED);
365         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
366         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
367     }
368 #endif
369 
370 #if LV_USE_DROPDOWN
371     else if(lv_obj_check_type(obj, &lv_dropdown_class)) {
372         lv_obj_add_style(obj, &styles->card, 0);
373         lv_obj_add_style(obj, &styles->pr, LV_STATE_PRESSED);
374         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
375         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
376     }
377     else if(lv_obj_check_type(obj, &lv_dropdownlist_class)) {
378         lv_obj_add_style(obj, &styles->card, 0);
379         lv_obj_add_style(obj, &styles->large_line_space, 0);
380         lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
381         lv_obj_add_style(obj, &styles->inv, LV_PART_SELECTED | LV_STATE_CHECKED);
382         lv_obj_add_style(obj, &styles->pr, LV_PART_SELECTED | LV_STATE_PRESSED);
383         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
384         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
385     }
386 #endif
387 
388 #if LV_USE_ARC
389     else if(lv_obj_check_type(obj, &lv_arc_class)) {
390         lv_obj_add_style(obj, &styles->card, 0);
391         lv_obj_add_style(obj, &styles->inv, LV_PART_INDICATOR);
392         lv_obj_add_style(obj, &styles->pad_zero, LV_PART_INDICATOR);
393         lv_obj_add_style(obj, &styles->card, LV_PART_KNOB);
394         lv_obj_add_style(obj, &styles->radius_circle, LV_PART_KNOB);
395         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
396         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
397     }
398 #endif
399 
400 #if LV_USE_METER
401     else if(lv_obj_check_type(obj, &lv_meter_class)) {
402         lv_obj_add_style(obj, &styles->card, 0);
403     }
404 #endif
405 
406 #if LV_USE_TEXTAREA
407     else if(lv_obj_check_type(obj, &lv_textarea_class)) {
408         lv_obj_add_style(obj, &styles->card, 0);
409         lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
410         lv_obj_add_style(obj, &styles->ta_cursor, LV_PART_CURSOR | LV_STATE_FOCUSED);
411         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUSED);
412         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
413     }
414 #endif
415 
416 #if LV_USE_CALENDAR
417     else if(lv_obj_check_type(obj, &lv_calendar_class)) {
418         lv_obj_add_style(obj, &styles->card, 0);
419         lv_obj_add_style(obj, &styles->no_radius, 0);
420         lv_obj_add_style(obj, &styles->pr, LV_PART_ITEMS | LV_STATE_PRESSED);
421         lv_obj_add_style(obj, &styles->disabled, LV_PART_ITEMS | LV_STATE_DISABLED);
422         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
423         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
424         lv_obj_add_style(obj, &styles->large_border, LV_PART_ITEMS | LV_STATE_FOCUS_KEY);
425     }
426 #endif
427 
428 #if LV_USE_KEYBOARD
429     else if(lv_obj_check_type(obj, &lv_keyboard_class)) {
430         lv_obj_add_style(obj, &styles->card, 0);
431         lv_obj_add_style(obj, &styles->card, LV_PART_ITEMS);
432         lv_obj_add_style(obj, &styles->pr, LV_PART_ITEMS | LV_STATE_PRESSED);
433         lv_obj_add_style(obj, &styles->inv, LV_PART_ITEMS | LV_STATE_CHECKED);
434         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
435         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
436         lv_obj_add_style(obj, &styles->large_border, LV_PART_ITEMS | LV_STATE_EDITED);
437     }
438 #endif
439 #if LV_USE_LIST
440     else if(lv_obj_check_type(obj, &lv_list_class)) {
441         lv_obj_add_style(obj, &styles->card, 0);
442         lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
443         return;
444     }
445     else if(lv_obj_check_type(obj, &lv_list_text_class)) {
446 
447     }
448     else if(lv_obj_check_type(obj, &lv_list_btn_class)) {
449         lv_obj_add_style(obj, &styles->card, 0);
450         lv_obj_add_style(obj, &styles->pr, LV_STATE_PRESSED);
451         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
452         lv_obj_add_style(obj, &styles->large_border, LV_STATE_EDITED);
453 
454     }
455 #endif
456 #if LV_USE_MSGBOX
457     else if(lv_obj_check_type(obj, &lv_msgbox_class)) {
458         lv_obj_add_style(obj, &styles->card, 0);
459         return;
460     }
461 #endif
462 #if LV_USE_SPINBOX
463     else if(lv_obj_check_type(obj, &lv_spinbox_class)) {
464         lv_obj_add_style(obj, &styles->card, 0);
465         lv_obj_add_style(obj, &styles->inv, LV_PART_CURSOR);
466         lv_obj_add_style(obj, &styles->focus, LV_STATE_FOCUS_KEY);
467         lv_obj_add_style(obj, &styles->edit, LV_STATE_EDITED);
468     }
469 #endif
470 #if LV_USE_TILEVIEW
471     else if(lv_obj_check_type(obj, &lv_tileview_class)) {
472         lv_obj_add_style(obj, &styles->scr, 0);
473         lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
474     }
475     else if(lv_obj_check_type(obj, &lv_tileview_tile_class)) {
476         lv_obj_add_style(obj, &styles->scrollbar, LV_PART_SCROLLBAR);
477     }
478 #endif
479 
480 #if LV_USE_LED
481     else if(lv_obj_check_type(obj, &lv_led_class)) {
482         lv_obj_add_style(obj, &styles->card, 0);
483     }
484 #endif
485 }
486 
487 /**********************
488  *   STATIC FUNCTIONS
489  **********************/
490 
style_init_reset(lv_style_t * style)491 static void style_init_reset(lv_style_t * style)
492 {
493     if(inited) {
494         lv_style_reset(style);
495     }
496     else {
497         lv_style_init(style);
498     }
499 }
500 
501 #endif
502