#include "../../lv_examples.h" #if LV_USE_TINY_TTF && LV_BUILD_EXAMPLES && LV_USE_OBSERVER static void font_size_observer_cb(lv_subject_t * subject, lv_observer_t * observer); static lv_subject_t subject_font; /** * Change font size with Tiny_TTF */ void lv_example_tiny_ttf_3(void) { extern const uint8_t ubuntu_font[]; extern const int ubuntu_font_size; lv_subject_init_int(&subject_font, 25); /*Create style with the new font*/ static lv_style_t style; lv_style_init(&style); lv_font_t * font = lv_tiny_ttf_create_data(ubuntu_font, ubuntu_font_size, 25); lv_style_set_text_font(&style, font); lv_style_set_text_align(&style, LV_TEXT_ALIGN_CENTER); lv_obj_t * slider = lv_slider_create(lv_screen_active()); lv_obj_center(slider); lv_slider_set_range(slider, 5, 50); lv_obj_align(slider, LV_ALIGN_BOTTOM_MID, 0, -50); lv_slider_bind_value(slider, &subject_font); lv_obj_t * slider_label = lv_label_create(lv_screen_active()); lv_obj_align_to(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); lv_label_bind_text(slider_label, &subject_font, "%d"); /*Create a label with the new style*/ lv_obj_t * label = lv_label_create(lv_screen_active()); lv_obj_add_style(label, &style, 0); lv_obj_set_size(label, LV_SIZE_CONTENT, LV_SIZE_CONTENT); lv_label_set_text(label, "Hello world!"); lv_obj_center(label); lv_subject_add_observer(&subject_font, font_size_observer_cb, &style); } static void font_size_observer_cb(lv_subject_t * subject, lv_observer_t * observer) { lv_style_t * style = observer->user_data; lv_style_value_t v; lv_style_get_prop(style, LV_STYLE_TEXT_FONT, &v); lv_font_t * font = (lv_font_t *) v.ptr; int32_t size = lv_subject_get_int(subject); lv_tiny_ttf_set_size(font, size); lv_obj_report_style_change(style); } #endif