1 #include "../../lv_examples.h"
2 #if LV_USE_TINY_TTF && LV_BUILD_EXAMPLES && LV_USE_OBSERVER
3 
4 static void font_size_observer_cb(lv_observer_t * observer, lv_subject_t * subject);
5 
6 static lv_subject_t subject_font;
7 
8 /**
9  * Change font size with Tiny_TTF
10  */
lv_example_tiny_ttf_3(void)11 void lv_example_tiny_ttf_3(void)
12 {
13     extern const uint8_t ubuntu_font[];
14     extern const int ubuntu_font_size;
15 
16     lv_subject_init_int(&subject_font, 25);
17 
18     /*Create style with the new font*/
19     static lv_style_t style;
20     lv_style_init(&style);
21     lv_font_t * font = lv_tiny_ttf_create_data(ubuntu_font, ubuntu_font_size, 25);
22     lv_style_set_text_font(&style, font);
23     lv_style_set_text_align(&style, LV_TEXT_ALIGN_CENTER);
24 
25     lv_obj_t * slider = lv_slider_create(lv_screen_active());
26     lv_obj_center(slider);
27     lv_slider_set_range(slider, 5, 50);
28     lv_obj_align(slider, LV_ALIGN_BOTTOM_MID, 0, -50);
29     lv_slider_bind_value(slider, &subject_font);
30 
31     lv_obj_t * slider_label = lv_label_create(lv_screen_active());
32     lv_obj_align_to(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
33     lv_label_bind_text(slider_label, &subject_font, "%d");
34 
35     /*Create a label with the new style*/
36     lv_obj_t * label = lv_label_create(lv_screen_active());
37     lv_obj_add_style(label, &style, 0);
38     lv_obj_set_size(label, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
39     lv_label_set_text(label, "Hello world!");
40     lv_obj_center(label);
41 
42     lv_subject_add_observer(&subject_font, font_size_observer_cb, &style);
43 }
44 
font_size_observer_cb(lv_observer_t * observer,lv_subject_t * subject)45 static void font_size_observer_cb(lv_observer_t * observer, lv_subject_t * subject)
46 {
47     lv_style_t * style = lv_observer_get_user_data(observer);
48     lv_style_value_t v;
49     lv_style_get_prop(style, LV_STYLE_TEXT_FONT, &v);
50     lv_font_t * font = (lv_font_t *) v.ptr;
51     int32_t size = lv_subject_get_int(subject);
52 
53     lv_tiny_ttf_set_size(font, size);
54 
55     lv_obj_report_style_change(style);
56 }
57 #endif
58