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