1 #include "../../lv_examples.h"
2 #if LV_USE_SCALE && LV_BUILD_EXAMPLES
3 
4 /**
5  * A round scale with section and custom styling
6  */
lv_example_scale_4(void)7 void lv_example_scale_4(void)
8 {
9     lv_obj_t * scale = lv_scale_create(lv_screen_active());
10     lv_obj_set_size(scale, 150, 150);
11     lv_scale_set_label_show(scale, true);
12     lv_scale_set_mode(scale, LV_SCALE_MODE_ROUND_OUTER);
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, 5, LV_PART_ITEMS);
19     lv_obj_set_style_length(scale, 10, LV_PART_INDICATOR);
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_arc_color(&main_line_style, lv_palette_darken(LV_PALETTE_BLUE, 3));
49     lv_style_set_arc_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(&section_label_style);
58     lv_style_init(&section_minor_tick_style);
59     lv_style_init(&section_main_line_style);
60 
61     /* Label style properties */
62     lv_style_set_text_font(&section_label_style, LV_FONT_DEFAULT);
63     lv_style_set_text_color(&section_label_style, lv_palette_darken(LV_PALETTE_RED, 3));
64 
65     lv_style_set_line_color(&section_label_style, lv_palette_darken(LV_PALETTE_RED, 3));
66     lv_style_set_line_width(&section_label_style, 5U); /*Tick width*/
67 
68     lv_style_set_line_color(&section_minor_tick_style, lv_palette_lighten(LV_PALETTE_RED, 2));
69     lv_style_set_line_width(&section_minor_tick_style, 4U); /*Tick width*/
70 
71     /* Main line properties */
72     lv_style_set_arc_color(&section_main_line_style, lv_palette_darken(LV_PALETTE_RED, 3));
73     lv_style_set_arc_width(&section_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, &section_label_style);
79     lv_scale_section_set_style(section, LV_PART_ITEMS, &section_minor_tick_style);
80     lv_scale_section_set_style(section, LV_PART_MAIN, &section_main_line_style);
81 }
82 
83 #endif
84