Created
March 28, 2024 14:12
-
-
Save liamHowatt/7bf7c0fd7e593ee01930531c3a8180b0 to your computer and use it in GitHub Desktop.
the new scale example ported to work with the current master from ---- feature(scale): mutiple line needles #5937
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static lv_obj_t * scale; | |
static lv_obj_t * minute_hand; | |
static lv_obj_t * hour_hand; | |
static lv_point_precise_t minute_hand_points[2]; | |
static lv_point_precise_t hour_hand_points[2]; | |
static int32_t hour; | |
static int32_t minute; | |
static void timer_cb(lv_timer_t * timer) | |
{ | |
LV_UNUSED(timer); | |
minute++; | |
if(minute > 59) { | |
minute = 0; | |
hour++; | |
if(hour > 11) { | |
hour = 0; | |
} | |
} | |
lv_scale_set_line_needle_value(scale, minute_hand, 60, minute); | |
lv_line_t * mh = (lv_line_t *) minute_hand; | |
lv_memcpy(minute_hand_points, mh->point_array, sizeof(minute_hand_points)); | |
lv_line_set_points(minute_hand, minute_hand_points, 2); | |
lv_scale_set_line_needle_value(scale, hour_hand, 40, hour * 5 + (minute / 12)); | |
lv_line_t * hh = (lv_line_t *) hour_hand; | |
lv_memcpy(hour_hand_points, hh->point_array, sizeof(hour_hand_points)); | |
lv_line_set_points(hour_hand, hour_hand_points, 2); | |
} | |
/** | |
* A round scale with multiple needles, resembing a clock | |
*/ | |
void lv_example_scale_6(void) | |
{ | |
scale = lv_scale_create(lv_screen_active()); | |
lv_obj_set_size(scale, 150, 150); | |
lv_scale_set_mode(scale, LV_SCALE_MODE_ROUND_INNER); | |
lv_obj_set_style_bg_opa(scale, LV_OPA_60, 0); | |
lv_obj_set_style_bg_color(scale, lv_color_black(), 0); | |
lv_obj_set_style_radius(scale, LV_RADIUS_CIRCLE, 0); | |
lv_obj_set_style_clip_corner(scale, true, 0); | |
lv_obj_center(scale); | |
lv_scale_set_label_show(scale, true); | |
lv_scale_set_total_tick_count(scale, 61); | |
lv_scale_set_major_tick_every(scale, 5); | |
static const char * hour_ticks[] = {"12", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", NULL}; | |
lv_scale_set_text_src(scale, hour_ticks); | |
static lv_style_t indicator_style; | |
lv_style_init(&indicator_style); | |
/* Label style properties */ | |
lv_style_set_text_font(&indicator_style, LV_FONT_DEFAULT); | |
lv_style_set_text_color(&indicator_style, lv_palette_main(LV_PALETTE_YELLOW)); | |
/* Major tick properties */ | |
lv_style_set_line_color(&indicator_style, lv_palette_main(LV_PALETTE_YELLOW)); | |
lv_style_set_length(&indicator_style, 8); /* tick length */ | |
lv_style_set_line_width(&indicator_style, 2); /* tick width */ | |
lv_obj_add_style(scale, &indicator_style, LV_PART_INDICATOR); | |
/* Minor tick properties */ | |
static lv_style_t minor_ticks_style; | |
lv_style_init(&minor_ticks_style); | |
lv_style_set_line_color(&minor_ticks_style, lv_palette_main(LV_PALETTE_YELLOW)); | |
lv_style_set_length(&minor_ticks_style, 6); /* tick length */ | |
lv_style_set_line_width(&minor_ticks_style, 2); /* tick width */ | |
lv_obj_add_style(scale, &minor_ticks_style, LV_PART_ITEMS); | |
/* Main line properties */ | |
static lv_style_t main_line_style; | |
lv_style_init(&main_line_style); | |
lv_style_set_arc_color(&main_line_style, lv_color_black()); | |
lv_style_set_arc_width(&main_line_style, 5); | |
lv_obj_add_style(scale, &main_line_style, LV_PART_MAIN); | |
lv_scale_set_range(scale, 0, 60); | |
lv_scale_set_angle_range(scale, 360); | |
lv_scale_set_rotation(scale, 270); | |
minute_hand = lv_line_create(scale); | |
lv_obj_set_style_line_width(minute_hand, 3, 0); | |
lv_obj_set_style_line_rounded(minute_hand, true, 0); | |
lv_obj_set_style_line_color(minute_hand, lv_color_white(), 0); | |
hour_hand = lv_line_create(scale); | |
lv_obj_set_style_line_width(hour_hand, 5, 0); | |
lv_obj_set_style_line_rounded(hour_hand, true, 0); | |
lv_obj_set_style_line_color(hour_hand, lv_palette_main(LV_PALETTE_RED), 0); | |
hour = 11; | |
minute = 5; | |
lv_timer_t * timer = lv_timer_create(timer_cb, 250, NULL); | |
lv_timer_ready(timer); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment