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_example_slider_3.c (1954B)
1 #include "../../lv_examples.h" 2 #if LV_USE_SLIDER && LV_BUILD_EXAMPLES 3 4 static void slider_event_cb(lv_event_t * e); 5 6 /** 7 * Show the current value when the slider is pressed by extending the drawer 8 * 9 */ 10 void lv_example_slider_3(void) 11 { 12 /*Create a slider in the center of the display*/ 13 lv_obj_t * slider; 14 slider = lv_slider_create(lv_scr_act()); 15 lv_obj_center(slider); 16 17 lv_slider_set_mode(slider, LV_SLIDER_MODE_RANGE); 18 lv_slider_set_value(slider, 70, LV_ANIM_OFF); 19 lv_slider_set_left_value(slider, 20, LV_ANIM_OFF); 20 21 lv_obj_add_event_cb(slider, slider_event_cb, LV_EVENT_ALL, NULL); 22 lv_obj_refresh_ext_draw_size(slider); 23 } 24 25 static void slider_event_cb(lv_event_t * e) 26 { 27 lv_event_code_t code = lv_event_get_code(e); 28 lv_obj_t * obj = lv_event_get_target(e); 29 30 /*Provide some extra space for the value*/ 31 if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { 32 lv_event_set_ext_draw_size(e, 50); 33 } 34 else if(code == LV_EVENT_DRAW_PART_END) { 35 lv_obj_draw_part_dsc_t * dsc = lv_event_get_draw_part_dsc(e); 36 if(dsc->part == LV_PART_INDICATOR) { 37 char buf[16]; 38 lv_snprintf(buf, sizeof(buf), "%d - %d", (int)lv_slider_get_left_value(obj), (int)lv_slider_get_value(obj)); 39 40 lv_point_t label_size; 41 lv_txt_get_size(&label_size, buf, LV_FONT_DEFAULT, 0, 0, LV_COORD_MAX, 0); 42 lv_area_t label_area; 43 label_area.x1 = dsc->draw_area->x1 + lv_area_get_width(dsc->draw_area) / 2 - label_size.x / 2; 44 label_area.x2 = label_area.x1 + label_size.x; 45 label_area.y2 = dsc->draw_area->y1 - 10; 46 label_area.y1 = label_area.y2 - label_size.y; 47 48 lv_draw_label_dsc_t label_draw_dsc; 49 lv_draw_label_dsc_init(&label_draw_dsc); 50 label_draw_dsc.color = lv_color_hex3(0x888); 51 lv_draw_label(dsc->draw_ctx, &label_draw_dsc, &label_area, buf, NULL); 52 } 53 } 54 } 55 56 #endif