1 #include "../../lv_examples.h"
2 #if LV_USE_SCALE && LV_BUILD_EXAMPLES
3 
4 /**
5  * An scale with section and custom styling
6  */
lv_example_scale_5(void)7 void lv_example_scale_5(void)
8 {
9     lv_obj_t * scale = lv_scale_create(lv_screen_active());
10     lv_obj_set_size(scale, lv_display_get_horizontal_resolution(NULL) / 2, lv_display_get_vertical_resolution(NULL) / 2);
11     lv_scale_set_label_show(scale, true);
12 
13     lv_scale_set_total_tick_count(scale, 10);
14     lv_scale_set_major_tick_every(scale, 5);
15 
16     lv_obj_set_style_length(scale, 5, LV_PART_ITEMS);
17     lv_obj_set_style_length(scale, 10, LV_PART_INDICATOR);
18     lv_scale_set_range(scale, 25, 35);
19 
20     static const char * custom_labels[3] = {"One", "Two", NULL};
21     lv_scale_set_text_src(scale, custom_labels);
22 
23     static lv_style_t indicator_style;
24     lv_style_init(&indicator_style);
25     /* Label style properties */
26     lv_style_set_text_font(&indicator_style, LV_FONT_DEFAULT);
27     lv_style_set_text_color(&indicator_style, lv_color_hex(0xff00ff));
28     /* Major tick properties */
29     lv_style_set_line_color(&indicator_style, lv_color_hex(0x00ff00));
30     lv_style_set_width(&indicator_style, 10U); // Tick length
31     lv_style_set_line_width(&indicator_style, 2U); // Tick width
32     lv_obj_add_style(scale, &indicator_style, LV_PART_INDICATOR);
33 
34     static lv_style_t minor_ticks_style;
35     lv_style_init(&minor_ticks_style);
36     lv_style_set_line_color(&minor_ticks_style, lv_color_hex(0xff0000));
37     lv_style_set_width(&minor_ticks_style, 5U); // Tick length
38     lv_style_set_line_width(&minor_ticks_style, 2U); // Tick width
39     lv_obj_add_style(scale, &minor_ticks_style, LV_PART_ITEMS);
40 
41     static lv_style_t main_line_style;
42     lv_style_init(&main_line_style);
43     /* Main line properties */
44     lv_style_set_line_color(&main_line_style, lv_color_hex(0x0000ff));
45     lv_style_set_line_width(&main_line_style, 2U); // Tick width
46     lv_obj_add_style(scale, &main_line_style, LV_PART_MAIN);
47 
48     lv_obj_center(scale);
49 
50     /* Add a section */
51     static lv_style_t section_minor_tick_style;
52     static lv_style_t section_label_style;
53 
54     lv_style_init(&section_label_style);
55     lv_style_init(&section_minor_tick_style);
56 
57     /* Label style properties */
58     lv_style_set_text_font(&section_label_style, LV_FONT_DEFAULT);
59     lv_style_set_text_color(&section_label_style, lv_color_hex(0xff0000));
60     lv_style_set_text_letter_space(&section_label_style, 10);
61     lv_style_set_text_opa(&section_label_style, LV_OPA_50);
62 
63     lv_style_set_line_color(&section_label_style, lv_color_hex(0xff0000));
64     // lv_style_set_width(&section_label_style, 20U); // Tick length
65     lv_style_set_line_width(&section_label_style, 5U); // Tick width
66 
67     lv_style_set_line_color(&section_minor_tick_style, lv_color_hex(0x0000ff));
68     // lv_style_set_width(&section_label_style, 20U); // Tick length
69     lv_style_set_line_width(&section_minor_tick_style, 4U); // Tick width
70 
71     /* Configure section styles */
72     lv_scale_section_t * section = lv_scale_add_section(scale);
73     lv_scale_section_set_range(section, 25, 30);
74     lv_scale_section_set_style(section, LV_PART_INDICATOR, &section_label_style);
75     lv_scale_section_set_style(section, LV_PART_ITEMS, &section_minor_tick_style);
76 }
77 
78 #endif
79