1 #include "../../lv_examples.h"
2 #if LV_USE_SCALE && LV_BUILD_EXAMPLES
3
4 /**
5 * An vertical scale with section and custom styling
6 */
lv_example_scale_2(void)7 void lv_example_scale_2(void)
8 {
9 lv_obj_t * scale = lv_scale_create(lv_screen_active());
10 lv_obj_set_size(scale, 60, 200);
11 lv_scale_set_label_show(scale, true);
12 lv_scale_set_mode(scale, LV_SCALE_MODE_VERTICAL_RIGHT);
13 lv_obj_center(scale);
14
15 lv_scale_set_total_tick_count(scale, 21);
16 lv_scale_set_major_tick_every(scale, 5);
17
18 lv_obj_set_style_length(scale, 10, LV_PART_INDICATOR);
19 lv_obj_set_style_length(scale, 5, LV_PART_ITEMS);
20 lv_scale_set_range(scale, 0, 100);
21
22 static const char * custom_labels[] = {"0 °C", "25 °C", "50 °C", "75 °C", "100 °C", NULL};
23 lv_scale_set_text_src(scale, custom_labels);
24
25 static lv_style_t indicator_style;
26 lv_style_init(&indicator_style);
27
28 /* Label style properties */
29 lv_style_set_text_font(&indicator_style, LV_FONT_DEFAULT);
30 lv_style_set_text_color(&indicator_style, lv_palette_darken(LV_PALETTE_BLUE, 3));
31
32 /* Major tick properties */
33 lv_style_set_line_color(&indicator_style, lv_palette_darken(LV_PALETTE_BLUE, 3));
34 lv_style_set_width(&indicator_style, 10U); /*Tick length*/
35 lv_style_set_line_width(&indicator_style, 2U); /*Tick width*/
36 lv_obj_add_style(scale, &indicator_style, LV_PART_INDICATOR);
37
38 static lv_style_t minor_ticks_style;
39 lv_style_init(&minor_ticks_style);
40 lv_style_set_line_color(&minor_ticks_style, lv_palette_lighten(LV_PALETTE_BLUE, 2));
41 lv_style_set_width(&minor_ticks_style, 5U); /*Tick length*/
42 lv_style_set_line_width(&minor_ticks_style, 2U); /*Tick width*/
43 lv_obj_add_style(scale, &minor_ticks_style, LV_PART_ITEMS);
44
45 static lv_style_t main_line_style;
46 lv_style_init(&main_line_style);
47 /* Main line properties */
48 lv_style_set_line_color(&main_line_style, lv_palette_darken(LV_PALETTE_BLUE, 3));
49 lv_style_set_line_width(&main_line_style, 2U); // Tick width
50 lv_obj_add_style(scale, &main_line_style, LV_PART_MAIN);
51
52 /* Add a section */
53 static lv_style_t section_minor_tick_style;
54 static lv_style_t section_label_style;
55 static lv_style_t section_main_line_style;
56
57 lv_style_init(§ion_label_style);
58 lv_style_init(§ion_minor_tick_style);
59 lv_style_init(§ion_main_line_style);
60
61 /* Label style properties */
62 lv_style_set_text_font(§ion_label_style, LV_FONT_DEFAULT);
63 lv_style_set_text_color(§ion_label_style, lv_palette_darken(LV_PALETTE_RED, 3));
64
65 lv_style_set_line_color(§ion_label_style, lv_palette_darken(LV_PALETTE_RED, 3));
66 lv_style_set_line_width(§ion_label_style, 5U); /*Tick width*/
67
68 lv_style_set_line_color(§ion_minor_tick_style, lv_palette_lighten(LV_PALETTE_RED, 2));
69 lv_style_set_line_width(§ion_minor_tick_style, 4U); /*Tick width*/
70
71 /* Main line properties */
72 lv_style_set_line_color(§ion_main_line_style, lv_palette_darken(LV_PALETTE_RED, 3));
73 lv_style_set_line_width(§ion_main_line_style, 4U); /*Tick width*/
74
75 /* Configure section styles */
76 lv_scale_section_t * section = lv_scale_add_section(scale);
77 lv_scale_section_set_range(section, 75, 100);
78 lv_scale_section_set_style(section, LV_PART_INDICATOR, §ion_label_style);
79 lv_scale_section_set_style(section, LV_PART_ITEMS, §ion_minor_tick_style);
80 lv_scale_section_set_style(section, LV_PART_MAIN, §ion_main_line_style);
81
82 lv_obj_set_style_bg_color(scale, lv_palette_main(LV_PALETTE_BLUE_GREY), 0);
83 lv_obj_set_style_bg_opa(scale, LV_OPA_50, 0);
84 lv_obj_set_style_pad_left(scale, 8, 0);
85 lv_obj_set_style_radius(scale, 8, 0);
86 lv_obj_set_style_pad_ver(scale, 20, 0);
87 }
88
89 #endif
90