1 #include "../../lv_examples.h"
2 #if LV_USE_SCALE && LV_BUILD_EXAMPLES
3 
4 LV_IMAGE_DECLARE(img_hand);
5 
6 lv_obj_t * needle_line;
7 lv_obj_t * needle_img;
8 
set_needle_line_value(void * obj,int32_t v)9 static void set_needle_line_value(void * obj, int32_t v)
10 {
11     lv_scale_set_line_needle_value(obj, needle_line, 60, v);
12 }
13 
set_needle_img_value(void * obj,int32_t v)14 static void set_needle_img_value(void * obj, int32_t v)
15 {
16     lv_scale_set_image_needle_value(obj, needle_img, v);
17 }
18 
19 /**
20  * A simple round scale
21  */
lv_example_scale_3(void)22 void lv_example_scale_3(void)
23 {
24     lv_obj_t * scale_line = lv_scale_create(lv_screen_active());
25 
26     lv_obj_set_size(scale_line, 150, 150);
27     lv_scale_set_mode(scale_line, LV_SCALE_MODE_ROUND_INNER);
28     lv_obj_set_style_bg_opa(scale_line, LV_OPA_COVER, 0);
29     lv_obj_set_style_bg_color(scale_line, lv_palette_lighten(LV_PALETTE_RED, 5), 0);
30     lv_obj_set_style_radius(scale_line, LV_RADIUS_CIRCLE, 0);
31     lv_obj_set_style_clip_corner(scale_line, true, 0);
32     lv_obj_align(scale_line, LV_ALIGN_LEFT_MID, LV_PCT(2), 0);
33 
34     lv_scale_set_label_show(scale_line, true);
35 
36     lv_scale_set_total_tick_count(scale_line, 31);
37     lv_scale_set_major_tick_every(scale_line, 5);
38 
39     lv_obj_set_style_length(scale_line, 5, LV_PART_ITEMS);
40     lv_obj_set_style_length(scale_line, 10, LV_PART_INDICATOR);
41     lv_scale_set_range(scale_line, 10, 40);
42 
43     lv_scale_set_angle_range(scale_line, 270);
44     lv_scale_set_rotation(scale_line, 135);
45 
46     needle_line = lv_line_create(scale_line);
47 
48     lv_obj_set_style_line_width(needle_line, 6, LV_PART_MAIN);
49     lv_obj_set_style_line_rounded(needle_line, true, LV_PART_MAIN);
50 
51     lv_anim_t anim_scale_line;
52     lv_anim_init(&anim_scale_line);
53     lv_anim_set_var(&anim_scale_line, scale_line);
54     lv_anim_set_exec_cb(&anim_scale_line, set_needle_line_value);
55     lv_anim_set_duration(&anim_scale_line, 1000);
56     lv_anim_set_repeat_count(&anim_scale_line, LV_ANIM_REPEAT_INFINITE);
57     lv_anim_set_reverse_duration(&anim_scale_line, 1000);
58     lv_anim_set_values(&anim_scale_line, 10, 40);
59     lv_anim_start(&anim_scale_line);
60 
61     lv_obj_t * scale_img = lv_scale_create(lv_screen_active());
62 
63     lv_obj_set_size(scale_img, 150, 150);
64     lv_scale_set_mode(scale_img, LV_SCALE_MODE_ROUND_INNER);
65     lv_obj_set_style_bg_opa(scale_img, LV_OPA_COVER, 0);
66     lv_obj_set_style_bg_color(scale_img, lv_palette_lighten(LV_PALETTE_RED, 5), 0);
67     lv_obj_set_style_radius(scale_img, LV_RADIUS_CIRCLE, 0);
68     lv_obj_set_style_clip_corner(scale_img, true, 0);
69     lv_obj_align(scale_img, LV_ALIGN_RIGHT_MID, LV_PCT(-2), 0);
70 
71     lv_scale_set_label_show(scale_img, true);
72 
73     lv_scale_set_total_tick_count(scale_img, 31);
74     lv_scale_set_major_tick_every(scale_img, 5);
75 
76     lv_obj_set_style_length(scale_img, 5, LV_PART_ITEMS);
77     lv_obj_set_style_length(scale_img, 10, LV_PART_INDICATOR);
78     lv_scale_set_range(scale_img, 10, 40);
79 
80     lv_scale_set_angle_range(scale_img, 270);
81     lv_scale_set_rotation(scale_img, 135);
82 
83     /* image must point to the right. E.g. -O------>*/
84     needle_img = lv_image_create(scale_img);
85     lv_image_set_src(needle_img, &img_hand);
86     lv_obj_align(needle_img, LV_ALIGN_CENTER, 47, -2);
87     lv_image_set_pivot(needle_img, 3, 4);
88 
89     lv_anim_t anim_scale_img;
90     lv_anim_init(&anim_scale_img);
91     lv_anim_set_var(&anim_scale_img, scale_img);
92     lv_anim_set_exec_cb(&anim_scale_img, set_needle_img_value);
93     lv_anim_set_duration(&anim_scale_img, 1000);
94     lv_anim_set_repeat_count(&anim_scale_img, LV_ANIM_REPEAT_INFINITE);
95     lv_anim_set_reverse_duration(&anim_scale_img, 1000);
96     lv_anim_set_values(&anim_scale_img, 10, 40);
97     lv_anim_start(&anim_scale_img);
98 }
99 
100 #endif
101