summaryrefslogtreecommitdiff
path: root/lib/lvgl/examples/widgets/slider
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-06-01 15:41:47 +1000
committerjacqueline <me@jacqueline.id.au>2023-06-01 15:41:47 +1000
commitdd27c3530432ea0b09f01e604bf577f31d8ef841 (patch)
treebbf86cf81a78f0ff0b07f31f1c390db473f26fd3 /lib/lvgl/examples/widgets/slider
parent6fd588e970470b15936187980829916d0dbe77bb (diff)
downloadtangara-fw-dd27c3530432ea0b09f01e604bf577f31d8ef841.tar.gz
convert lvgl from submodule to a plain old directory
Diffstat (limited to 'lib/lvgl/examples/widgets/slider')
m---------lib/lvgl0
-rw-r--r--lib/lvgl/examples/widgets/slider/index.rst20
-rw-r--r--lib/lvgl/examples/widgets/slider/lv_example_slider_1.c33
-rw-r--r--lib/lvgl/examples/widgets/slider/lv_example_slider_1.py20
-rw-r--r--lib/lvgl/examples/widgets/slider/lv_example_slider_2.c57
-rw-r--r--lib/lvgl/examples/widgets/slider/lv_example_slider_2.py48
-rw-r--r--lib/lvgl/examples/widgets/slider/lv_example_slider_3.c56
-rw-r--r--lib/lvgl/examples/widgets/slider/lv_example_slider_3.py43
8 files changed, 277 insertions, 0 deletions
diff --git a/lib/lvgl b/lib/lvgl
deleted file mode 160000
-Subproject 0732400e7b564dd0e7dc4a924619d8e19c5b23a
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()
+