From dd27c3530432ea0b09f01e604bf577f31d8ef841 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 1 Jun 2023 15:41:47 +1000 Subject: convert lvgl from submodule to a plain old directory --- lib/lvgl | 1 - lib/lvgl/examples/widgets/slider/index.rst | 20 ++++++++ .../examples/widgets/slider/lv_example_slider_1.c | 33 +++++++++++++ .../examples/widgets/slider/lv_example_slider_1.py | 20 ++++++++ .../examples/widgets/slider/lv_example_slider_2.c | 57 ++++++++++++++++++++++ .../examples/widgets/slider/lv_example_slider_2.py | 48 ++++++++++++++++++ .../examples/widgets/slider/lv_example_slider_3.c | 56 +++++++++++++++++++++ .../examples/widgets/slider/lv_example_slider_3.py | 43 ++++++++++++++++ 8 files changed, 277 insertions(+), 1 deletion(-) delete mode 160000 lib/lvgl create mode 100644 lib/lvgl/examples/widgets/slider/index.rst create mode 100644 lib/lvgl/examples/widgets/slider/lv_example_slider_1.c create mode 100644 lib/lvgl/examples/widgets/slider/lv_example_slider_1.py create mode 100644 lib/lvgl/examples/widgets/slider/lv_example_slider_2.c create mode 100644 lib/lvgl/examples/widgets/slider/lv_example_slider_2.py create mode 100644 lib/lvgl/examples/widgets/slider/lv_example_slider_3.c create mode 100644 lib/lvgl/examples/widgets/slider/lv_example_slider_3.py (limited to 'lib/lvgl/examples/widgets/slider') diff --git a/lib/lvgl b/lib/lvgl deleted file mode 160000 index 0732400e..00000000 --- a/lib/lvgl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0732400e7b564dd0e7dc4a924619d8e19c5b23a0 diff --git a/lib/lvgl/examples/widgets/slider/index.rst b/lib/lvgl/examples/widgets/slider/index.rst new file mode 100644 index 00000000..b808de38 --- /dev/null +++ b/lib/lvgl/examples/widgets/slider/index.rst @@ -0,0 +1,20 @@ + +Simple Slider +""""""""""""""""""""""""" + +.. lv_example:: widgets/slider/lv_example_slider_1 + :language: c + +Slider with custom style +""""""""""""""""""""""""" + +.. lv_example:: widgets/slider/lv_example_slider_2 + :language: c + +Slider with extended drawer +"""""""""""""""""""""""""""" + +.. lv_example:: widgets/slider/lv_example_slider_3 + :language: c + + diff --git a/lib/lvgl/examples/widgets/slider/lv_example_slider_1.c b/lib/lvgl/examples/widgets/slider/lv_example_slider_1.c new file mode 100644 index 00000000..920e1fa9 --- /dev/null +++ b/lib/lvgl/examples/widgets/slider/lv_example_slider_1.c @@ -0,0 +1,33 @@ +#include "../../lv_examples.h" +#if LV_USE_SLIDER && LV_BUILD_EXAMPLES + +static void slider_event_cb(lv_event_t * e); +static lv_obj_t * slider_label; + +/** + * A default slider with a label displaying the current value + */ +void lv_example_slider_1(void) +{ + /*Create a slider in the center of the display*/ + lv_obj_t * slider = lv_slider_create(lv_scr_act()); + lv_obj_center(slider); + lv_obj_add_event_cb(slider, slider_event_cb, LV_EVENT_VALUE_CHANGED, NULL); + + /*Create a label below the slider*/ + slider_label = lv_label_create(lv_scr_act()); + lv_label_set_text(slider_label, "0%"); + + lv_obj_align_to(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); +} + +static void slider_event_cb(lv_event_t * e) +{ + lv_obj_t * slider = lv_event_get_target(e); + char buf[8]; + lv_snprintf(buf, sizeof(buf), "%d%%", (int)lv_slider_get_value(slider)); + lv_label_set_text(slider_label, buf); + lv_obj_align_to(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); +} + +#endif diff --git a/lib/lvgl/examples/widgets/slider/lv_example_slider_1.py b/lib/lvgl/examples/widgets/slider/lv_example_slider_1.py new file mode 100644 index 00000000..c3817250 --- /dev/null +++ b/lib/lvgl/examples/widgets/slider/lv_example_slider_1.py @@ -0,0 +1,20 @@ +# +# A default slider with a label displaying the current value +# +def slider_event_cb(e): + + slider = e.get_target() + slider_label.set_text("{:d}%".format(slider.get_value())) + slider_label.align_to(slider, lv.ALIGN.OUT_BOTTOM_MID, 0, 10) + +# Create a slider in the center of the display +slider = lv.slider(lv.scr_act()) +slider.center() +slider.add_event_cb(slider_event_cb, lv.EVENT.VALUE_CHANGED, None) + +# Create a label below the slider +slider_label = lv.label(lv.scr_act()) +slider_label.set_text("0%") + +slider_label.align_to(slider, lv.ALIGN.OUT_BOTTOM_MID, 0, 10) + diff --git a/lib/lvgl/examples/widgets/slider/lv_example_slider_2.c b/lib/lvgl/examples/widgets/slider/lv_example_slider_2.c new file mode 100644 index 00000000..883d61f3 --- /dev/null +++ b/lib/lvgl/examples/widgets/slider/lv_example_slider_2.c @@ -0,0 +1,57 @@ +#include "../../lv_examples.h" +#if LV_USE_SLIDER && LV_BUILD_EXAMPLES + + + +/** + * Show how to style a slider. + */ +void lv_example_slider_2(void) +{ + /*Create a transition*/ + static const lv_style_prop_t props[] = {LV_STYLE_BG_COLOR, 0}; + static lv_style_transition_dsc_t transition_dsc; + lv_style_transition_dsc_init(&transition_dsc, props, lv_anim_path_linear, 300, 0, NULL); + + static lv_style_t style_main; + static lv_style_t style_indicator; + static lv_style_t style_knob; + static lv_style_t style_pressed_color; + lv_style_init(&style_main); + lv_style_set_bg_opa(&style_main, LV_OPA_COVER); + lv_style_set_bg_color(&style_main, lv_color_hex3(0xbbb)); + lv_style_set_radius(&style_main, LV_RADIUS_CIRCLE); + lv_style_set_pad_ver(&style_main, -2); /*Makes the indicator larger*/ + + lv_style_init(&style_indicator); + lv_style_set_bg_opa(&style_indicator, LV_OPA_COVER); + lv_style_set_bg_color(&style_indicator, lv_palette_main(LV_PALETTE_CYAN)); + lv_style_set_radius(&style_indicator, LV_RADIUS_CIRCLE); + lv_style_set_transition(&style_indicator, &transition_dsc); + + lv_style_init(&style_knob); + lv_style_set_bg_opa(&style_knob, LV_OPA_COVER); + lv_style_set_bg_color(&style_knob, lv_palette_main(LV_PALETTE_CYAN)); + lv_style_set_border_color(&style_knob, lv_palette_darken(LV_PALETTE_CYAN, 3)); + lv_style_set_border_width(&style_knob, 2); + lv_style_set_radius(&style_knob, LV_RADIUS_CIRCLE); + lv_style_set_pad_all(&style_knob, 6); /*Makes the knob larger*/ + lv_style_set_transition(&style_knob, &transition_dsc); + + lv_style_init(&style_pressed_color); + lv_style_set_bg_color(&style_pressed_color, lv_palette_darken(LV_PALETTE_CYAN, 2)); + + /*Create a slider and add the style*/ + lv_obj_t * slider = lv_slider_create(lv_scr_act()); + lv_obj_remove_style_all(slider); /*Remove the styles coming from the theme*/ + + lv_obj_add_style(slider, &style_main, LV_PART_MAIN); + lv_obj_add_style(slider, &style_indicator, LV_PART_INDICATOR); + lv_obj_add_style(slider, &style_pressed_color, LV_PART_INDICATOR | LV_STATE_PRESSED); + lv_obj_add_style(slider, &style_knob, LV_PART_KNOB); + lv_obj_add_style(slider, &style_pressed_color, LV_PART_KNOB | LV_STATE_PRESSED); + + lv_obj_center(slider); +} + +#endif diff --git a/lib/lvgl/examples/widgets/slider/lv_example_slider_2.py b/lib/lvgl/examples/widgets/slider/lv_example_slider_2.py new file mode 100644 index 00000000..1dd916a0 --- /dev/null +++ b/lib/lvgl/examples/widgets/slider/lv_example_slider_2.py @@ -0,0 +1,48 @@ +# +# Show how to style a slider. +# +# Create a transition +props = [lv.STYLE.BG_COLOR, 0] +transition_dsc = lv.style_transition_dsc_t() +transition_dsc.init(props, lv.anim_t.path_linear, 300, 0, None) + +style_main = lv.style_t() +style_indicator = lv.style_t() +style_knob = lv.style_t() +style_pressed_color = lv.style_t() +style_main.init() +style_main.set_bg_opa(lv.OPA.COVER) +style_main.set_bg_color(lv.color_hex3(0xbbb)) +style_main.set_radius(lv.RADIUS.CIRCLE) +style_main.set_pad_ver(-2) # Makes the indicator larger + +style_indicator.init() +style_indicator.set_bg_opa(lv.OPA.COVER) +style_indicator.set_bg_color(lv.palette_main(lv.PALETTE.CYAN)) +style_indicator.set_radius(lv.RADIUS.CIRCLE) +style_indicator.set_transition(transition_dsc) + +style_knob.init() +style_knob.set_bg_opa(lv.OPA.COVER) +style_knob.set_bg_color(lv.palette_main(lv.PALETTE.CYAN)) +style_knob.set_border_color(lv.palette_darken(lv.PALETTE.CYAN, 3)) +style_knob.set_border_width(2) +style_knob.set_radius(lv.RADIUS.CIRCLE) +style_knob.set_pad_all(6) # Makes the knob larger +style_knob.set_transition(transition_dsc) + +style_pressed_color.init() +style_pressed_color.set_bg_color(lv.palette_darken(lv.PALETTE.CYAN, 2)) + +# Create a slider and add the style +slider = lv.slider(lv.scr_act()) +slider.remove_style_all() # Remove the styles coming from the theme + +slider.add_style(style_main, lv.PART.MAIN) +slider.add_style(style_indicator, lv.PART.INDICATOR) +slider.add_style(style_pressed_color, lv.PART.INDICATOR | lv.STATE.PRESSED) +slider.add_style(style_knob, lv.PART.KNOB) +slider.add_style(style_pressed_color, lv.PART.KNOB | lv.STATE.PRESSED) + +slider.center() + diff --git a/lib/lvgl/examples/widgets/slider/lv_example_slider_3.c b/lib/lvgl/examples/widgets/slider/lv_example_slider_3.c new file mode 100644 index 00000000..3194a1f8 --- /dev/null +++ b/lib/lvgl/examples/widgets/slider/lv_example_slider_3.c @@ -0,0 +1,56 @@ +#include "../../lv_examples.h" +#if LV_USE_SLIDER && LV_BUILD_EXAMPLES + +static void slider_event_cb(lv_event_t * e); + +/** + * Show the current value when the slider is pressed by extending the drawer + * + */ +void lv_example_slider_3(void) +{ + /*Create a slider in the center of the display*/ + lv_obj_t * slider; + slider = lv_slider_create(lv_scr_act()); + lv_obj_center(slider); + + lv_slider_set_mode(slider, LV_SLIDER_MODE_RANGE); + lv_slider_set_value(slider, 70, LV_ANIM_OFF); + lv_slider_set_left_value(slider, 20, LV_ANIM_OFF); + + lv_obj_add_event_cb(slider, slider_event_cb, LV_EVENT_ALL, NULL); + lv_obj_refresh_ext_draw_size(slider); +} + +static void slider_event_cb(lv_event_t * e) +{ + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + + /*Provide some extra space for the value*/ + if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { + lv_event_set_ext_draw_size(e, 50); + } + else if(code == LV_EVENT_DRAW_PART_END) { + lv_obj_draw_part_dsc_t * dsc = lv_event_get_draw_part_dsc(e); + if(dsc->part == LV_PART_INDICATOR) { + char buf[16]; + lv_snprintf(buf, sizeof(buf), "%d - %d", (int)lv_slider_get_left_value(obj), (int)lv_slider_get_value(obj)); + + lv_point_t label_size; + lv_txt_get_size(&label_size, buf, LV_FONT_DEFAULT, 0, 0, LV_COORD_MAX, 0); + lv_area_t label_area; + label_area.x1 = dsc->draw_area->x1 + lv_area_get_width(dsc->draw_area) / 2 - label_size.x / 2; + label_area.x2 = label_area.x1 + label_size.x; + label_area.y2 = dsc->draw_area->y1 - 10; + label_area.y1 = label_area.y2 - label_size.y; + + lv_draw_label_dsc_t label_draw_dsc; + lv_draw_label_dsc_init(&label_draw_dsc); + label_draw_dsc.color = lv_color_hex3(0x888); + lv_draw_label(dsc->draw_ctx, &label_draw_dsc, &label_area, buf, NULL); + } + } +} + +#endif diff --git a/lib/lvgl/examples/widgets/slider/lv_example_slider_3.py b/lib/lvgl/examples/widgets/slider/lv_example_slider_3.py new file mode 100644 index 00000000..b96135ea --- /dev/null +++ b/lib/lvgl/examples/widgets/slider/lv_example_slider_3.py @@ -0,0 +1,43 @@ +def slider_event_cb(e): + code = e.get_code() + obj = e.get_target() + + # Provide some extra space for the value + if code == lv.EVENT.REFR_EXT_DRAW_SIZE: + e.set_ext_draw_size(50) + + elif code == lv.EVENT.DRAW_PART_END: + # print("DRAW_PART_END") + dsc = lv.obj_draw_part_dsc_t.__cast__(e.get_param()) + # print(dsc) + if dsc.part == lv.PART.INDICATOR: + label_text = "{:d} - {:d}".format(obj.get_left_value(),slider.get_value()) + label_size = lv.point_t() + lv.txt_get_size(label_size, label_text, lv.font_default(), 0, 0, lv.COORD.MAX, 0) + # print(label_size.x,label_size.y) + label_area = lv.area_t() + label_area.x1 = dsc.draw_area.x1 + dsc.draw_area.get_width() // 2 - label_size.x // 2 + label_area.x2 = label_area.x1 + label_size.x + label_area.y2 = dsc.draw_area.y1 - 10 + label_area.y1 = label_area.y2 - label_size.y + + label_draw_dsc = lv.draw_label_dsc_t() + label_draw_dsc.init() + + dsc.draw_ctx.label(label_draw_dsc, label_area, label_text, None) +# +# Show the current value when the slider if pressed by extending the drawer +# +# +#Create a slider in the center of the display + +slider = lv.slider(lv.scr_act()) +slider.center() + +slider.set_mode(lv.slider.MODE.RANGE) +slider.set_value(70, lv.ANIM.OFF) +slider.set_left_value(20, lv.ANIM.OFF) + +slider.add_event_cb(slider_event_cb, lv.EVENT.ALL, None) +slider.refresh_ext_draw_size() + -- cgit v1.2.3