diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-06-12 17:54:40 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-06-12 17:54:40 +1000 |
| commit | 64bd9053a25297f7a442ca831c7da5b44bd33f84 (patch) | |
| tree | a90c6cad25a12028302ab1a5334510fba0229bae /lib/lvgl/examples/scroll | |
| parent | 611176ed667c4ed7ee9f609e958f9404f4aee91d (diff) | |
| download | tangara-fw-64bd9053a25297f7a442ca831c7da5b44bd33f84.tar.gz | |
Update LVGL to v9.1.0
Diffstat (limited to 'lib/lvgl/examples/scroll')
| -rw-r--r-- | lib/lvgl/examples/scroll/index.rst | 12 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll.h | 1 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll_1.c | 4 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll_1.py | 38 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll_2.c | 12 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll_2.py | 47 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll_3.c | 14 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll_3.py | 38 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll_4.c | 4 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll_4.py | 62 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll_5.c | 3 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll_5.py | 13 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll_6.c | 18 | ||||
| -rw-r--r-- | lib/lvgl/examples/scroll/lv_example_scroll_6.py | 68 |
14 files changed, 32 insertions, 302 deletions
diff --git a/lib/lvgl/examples/scroll/index.rst b/lib/lvgl/examples/scroll/index.rst index 0b392051..0691ce77 100644 --- a/lib/lvgl/examples/scroll/index.rst +++ b/lib/lvgl/examples/scroll/index.rst @@ -1,32 +1,32 @@ Nested scrolling -"""""""""""""""" +---------------- .. lv_example:: scroll/lv_example_scroll_1 :language: c Snapping -"""""""""""""""" +-------- .. lv_example:: scroll/lv_example_scroll_2 :language: c Floating button -"""""""""""""""" +---------------- .. lv_example:: scroll/lv_example_scroll_3 :language: c Styling the scrollbars -"""""""""""""""""""""""" +---------------------- .. lv_example:: scroll/lv_example_scroll_4 :language: c Right to left scrolling -"""""""""""""""""""""""" +----------------------- .. lv_example:: scroll/lv_example_scroll_5 :language: c Translate on scroll -"""""""""""""""""""""""" +------------------- .. lv_example:: scroll/lv_example_scroll_6 :language: c diff --git a/lib/lvgl/examples/scroll/lv_example_scroll.h b/lib/lvgl/examples/scroll/lv_example_scroll.h index dc38bef0..f6443b45 100644 --- a/lib/lvgl/examples/scroll/lv_example_scroll.h +++ b/lib/lvgl/examples/scroll/lv_example_scroll.h @@ -32,7 +32,6 @@ void lv_example_scroll_4(void); void lv_example_scroll_5(void); void lv_example_scroll_6(void); - /********************** * MACROS **********************/ diff --git a/lib/lvgl/examples/scroll/lv_example_scroll_1.c b/lib/lvgl/examples/scroll/lv_example_scroll_1.c index 4f7e1214..18941305 100644 --- a/lib/lvgl/examples/scroll/lv_example_scroll_1.c +++ b/lib/lvgl/examples/scroll/lv_example_scroll_1.c @@ -7,7 +7,7 @@ void lv_example_scroll_1(void) { /*Create an object with the new style*/ - lv_obj_t * panel = lv_obj_create(lv_scr_act()); + lv_obj_t * panel = lv_obj_create(lv_screen_active()); lv_obj_set_size(panel, 200, 200); lv_obj_center(panel); @@ -25,7 +25,7 @@ void lv_example_scroll_1(void) lv_obj_set_pos(child, 160, 80); lv_obj_set_size(child, 80, 80); - lv_obj_t * child2 = lv_btn_create(child); + lv_obj_t * child2 = lv_button_create(child); lv_obj_set_size(child2, 100, 50); label = lv_label_create(child2); diff --git a/lib/lvgl/examples/scroll/lv_example_scroll_1.py b/lib/lvgl/examples/scroll/lv_example_scroll_1.py deleted file mode 100644 index f0458971..00000000 --- a/lib/lvgl/examples/scroll/lv_example_scroll_1.py +++ /dev/null @@ -1,38 +0,0 @@ -# -# Demonstrate how scrolling appears automatically -# -# Create an object with the new style -panel = lv.obj(lv.scr_act()) -panel.set_size(200, 200) -panel.center() - -child = lv.obj(panel) -child.set_pos(0, 0) -label = lv.label(child) -label.set_text("Zero") -label.center() - -child = lv.obj(panel) -child.set_pos(-40, 100) -label = lv.label(child) -label.set_text("Left") -label.center() - -child = lv.obj(panel) -child.set_pos(90, -30) -label = lv.label(child) -label.set_text("Top") -label.center() - -child = lv.obj(panel) -child.set_pos(150, 80) -label = lv.label(child) -label.set_text("Right") -label.center() - -child = lv.obj(panel) -child.set_pos(60, 170) -label = lv.label(child) -label.set_text("Bottom") -label.center() - diff --git a/lib/lvgl/examples/scroll/lv_example_scroll_2.c b/lib/lvgl/examples/scroll/lv_example_scroll_2.c index 37d19f0b..13385c23 100644 --- a/lib/lvgl/examples/scroll/lv_example_scroll_2.c +++ b/lib/lvgl/examples/scroll/lv_example_scroll_2.c @@ -10,7 +10,7 @@ static void sw_event_cb(lv_event_t * e) lv_obj_t * list = lv_event_get_user_data(e); if(lv_obj_has_state(sw, LV_STATE_CHECKED)) lv_obj_add_flag(list, LV_OBJ_FLAG_SCROLL_ONE); - else lv_obj_clear_flag(list, LV_OBJ_FLAG_SCROLL_ONE); + else lv_obj_remove_flag(list, LV_OBJ_FLAG_SCROLL_ONE); } } @@ -19,7 +19,7 @@ static void sw_event_cb(lv_event_t * e) */ void lv_example_scroll_2(void) { - lv_obj_t * panel = lv_obj_create(lv_scr_act()); + lv_obj_t * panel = lv_obj_create(lv_screen_active()); lv_obj_set_size(panel, 280, 120); lv_obj_set_scroll_snap_x(panel, LV_SCROLL_SNAP_CENTER); lv_obj_set_flex_flow(panel, LV_FLEX_FLOW_ROW); @@ -27,13 +27,13 @@ void lv_example_scroll_2(void) uint32_t i; for(i = 0; i < 10; i++) { - lv_obj_t * btn = lv_btn_create(panel); + lv_obj_t * btn = lv_button_create(panel); lv_obj_set_size(btn, 150, lv_pct(100)); lv_obj_t * label = lv_label_create(btn); if(i == 3) { lv_label_set_text_fmt(label, "Panel %"LV_PRIu32"\nno snap", i); - lv_obj_clear_flag(btn, LV_OBJ_FLAG_SNAPPABLE); + lv_obj_remove_flag(btn, LV_OBJ_FLAG_SNAPPABLE); } else { lv_label_set_text_fmt(label, "Panel %"LV_PRIu32, i); @@ -45,10 +45,10 @@ void lv_example_scroll_2(void) #if LV_USE_SWITCH /*Switch between "One scroll" and "Normal scroll" mode*/ - lv_obj_t * sw = lv_switch_create(lv_scr_act()); + lv_obj_t * sw = lv_switch_create(lv_screen_active()); lv_obj_align(sw, LV_ALIGN_TOP_RIGHT, -20, 10); lv_obj_add_event_cb(sw, sw_event_cb, LV_EVENT_ALL, panel); - lv_obj_t * label = lv_label_create(lv_scr_act()); + lv_obj_t * label = lv_label_create(lv_screen_active()); lv_label_set_text(label, "One scroll"); lv_obj_align_to(label, sw, LV_ALIGN_OUT_BOTTOM_MID, 0, 5); #endif diff --git a/lib/lvgl/examples/scroll/lv_example_scroll_2.py b/lib/lvgl/examples/scroll/lv_example_scroll_2.py deleted file mode 100644 index 52e40e30..00000000 --- a/lib/lvgl/examples/scroll/lv_example_scroll_2.py +++ /dev/null @@ -1,47 +0,0 @@ -def sw_event_cb(e,panel): - - code = e.get_code() - sw = e.get_target() - - if code == lv.EVENT.VALUE_CHANGED: - - if sw.has_state(lv.STATE.CHECKED): - panel.add_flag(lv.obj.FLAG.SCROLL_ONE) - else: - panel.clear_flag(lv.obj.FLAG.SCROLL_ONE) - - -# -# Show an example to scroll snap -# - -panel = lv.obj(lv.scr_act()) -panel.set_size(280, 150) -panel.set_scroll_snap_x(lv.SCROLL_SNAP.CENTER) -panel.set_flex_flow(lv.FLEX_FLOW.ROW) -panel.center() - -for i in range(10): - btn = lv.btn(panel) - btn.set_size(150, 100) - - label = lv.label(btn) - if i == 3: - label.set_text("Panel {:d}\nno snap".format(i)) - btn.clear_flag(lv.obj.FLAG.SNAPPABLE) - else: - label.set_text("Panel {:d}".format(i)) - label.center() - -panel.update_snap(lv.ANIM.ON) - - -# Switch between "One scroll" and "Normal scroll" mode -sw = lv.switch(lv.scr_act()) -sw.align(lv.ALIGN.TOP_RIGHT, -20, 10) -sw.add_event_cb(lambda evt: sw_event_cb(evt,panel), lv.EVENT.ALL, None) -label = lv.label(lv.scr_act()) -label.set_text("One scroll") -label.align_to(sw, lv.ALIGN.OUT_BOTTOM_MID, 0, 5) - - diff --git a/lib/lvgl/examples/scroll/lv_example_scroll_3.c b/lib/lvgl/examples/scroll/lv_example_scroll_3.c index 1d05e690..8181c434 100644 --- a/lib/lvgl/examples/scroll/lv_example_scroll_3.c +++ b/lib/lvgl/examples/scroll/lv_example_scroll_3.c @@ -3,7 +3,7 @@ static uint32_t btn_cnt = 1; -static void float_btn_event_cb(lv_event_t * e) +static void float_button_event_cb(lv_event_t * e) { lv_event_code_t code = lv_event_get_code(e); lv_obj_t * float_btn = lv_event_get_target(e); @@ -12,7 +12,7 @@ static void float_btn_event_cb(lv_event_t * e) lv_obj_t * list = lv_event_get_user_data(e); char buf[32]; lv_snprintf(buf, sizeof(buf), "Track %d", (int)btn_cnt); - lv_obj_t * list_btn = lv_list_add_btn(list, LV_SYMBOL_AUDIO, buf); + lv_obj_t * list_btn = lv_list_add_button(list, LV_SYMBOL_AUDIO, buf); btn_cnt++; lv_obj_move_foreground(float_btn); @@ -26,23 +26,23 @@ static void float_btn_event_cb(lv_event_t * e) */ void lv_example_scroll_3(void) { - lv_obj_t * list = lv_list_create(lv_scr_act()); + lv_obj_t * list = lv_list_create(lv_screen_active()); lv_obj_set_size(list, 280, 220); lv_obj_center(list); for(btn_cnt = 1; btn_cnt <= 2; btn_cnt++) { char buf[32]; lv_snprintf(buf, sizeof(buf), "Track %d", (int)btn_cnt); - lv_list_add_btn(list, LV_SYMBOL_AUDIO, buf); + lv_list_add_button(list, LV_SYMBOL_AUDIO, buf); } - lv_obj_t * float_btn = lv_btn_create(list); + lv_obj_t * float_btn = lv_button_create(list); lv_obj_set_size(float_btn, 50, 50); lv_obj_add_flag(float_btn, LV_OBJ_FLAG_FLOATING); lv_obj_align(float_btn, LV_ALIGN_BOTTOM_RIGHT, 0, -lv_obj_get_style_pad_right(list, LV_PART_MAIN)); - lv_obj_add_event_cb(float_btn, float_btn_event_cb, LV_EVENT_ALL, list); + lv_obj_add_event_cb(float_btn, float_button_event_cb, LV_EVENT_ALL, list); lv_obj_set_style_radius(float_btn, LV_RADIUS_CIRCLE, 0); - lv_obj_set_style_bg_img_src(float_btn, LV_SYMBOL_PLUS, 0); + lv_obj_set_style_bg_image_src(float_btn, LV_SYMBOL_PLUS, 0); lv_obj_set_style_text_font(float_btn, lv_theme_get_font_large(float_btn), 0); } diff --git a/lib/lvgl/examples/scroll/lv_example_scroll_3.py b/lib/lvgl/examples/scroll/lv_example_scroll_3.py deleted file mode 100644 index aae306e0..00000000 --- a/lib/lvgl/examples/scroll/lv_example_scroll_3.py +++ /dev/null @@ -1,38 +0,0 @@ -class ScrollExample_3(): - def __init__(self): - self.btn_cnt = 1 - # - # Create a list with a floating button - # - - list = lv.list(lv.scr_act()) - list.set_size(280, 220) - list.center() - - for btn_cnt in range(2): - list.add_btn(lv.SYMBOL.AUDIO,"Track {:d}".format(btn_cnt)) - - float_btn = lv.btn(list) - float_btn.set_size(50, 50) - float_btn.add_flag(lv.obj.FLAG.FLOATING) - float_btn.align(lv.ALIGN.BOTTOM_RIGHT, 0, -list.get_style_pad_right(lv.PART.MAIN)) - float_btn.add_event_cb(lambda evt: self.float_btn_event_cb(evt,list), lv.EVENT.ALL, None) - float_btn.set_style_radius(lv.RADIUS.CIRCLE, 0) - float_btn.set_style_bg_img_src(lv.SYMBOL.PLUS, 0) - float_btn.set_style_text_font(lv.theme_get_font_large(float_btn), 0) - - def float_btn_event_cb(self,e,list): - code = e.get_code() - float_btn = e.get_target() - - if code == lv.EVENT.CLICKED: - list_btn = list.add_btn(lv.SYMBOL.AUDIO, "Track {:d}".format(self.btn_cnt)) - self.btn_cnt += 1 - - float_btn.move_foreground() - - list_btn.scroll_to_view(lv.ANIM.ON) - -scroll_example_3 = ScrollExample_3() - - diff --git a/lib/lvgl/examples/scroll/lv_example_scroll_4.c b/lib/lvgl/examples/scroll/lv_example_scroll_4.c index 5bbff5c2..f0c741ba 100644 --- a/lib/lvgl/examples/scroll/lv_example_scroll_4.c +++ b/lib/lvgl/examples/scroll/lv_example_scroll_4.c @@ -1,13 +1,12 @@ #include "../lv_examples.h" #if LV_BUILD_EXAMPLES && LV_USE_LIST - /** * Styling the scrollbars */ void lv_example_scroll_4(void) { - lv_obj_t * obj = lv_obj_create(lv_scr_act()); + lv_obj_t * obj = lv_obj_create(lv_screen_active()); lv_obj_set_size(obj, 200, 100); lv_obj_center(obj); @@ -28,7 +27,6 @@ void lv_example_scroll_4(void) "Fusce molestie rhoncus nisi sit amet tincidunt. \n" "Suspendisse a nunc ut magna ornare volutpat."); - /*Remove the style of scrollbar to have clean start*/ lv_obj_remove_style(obj, NULL, LV_PART_SCROLLBAR | LV_STATE_ANY); diff --git a/lib/lvgl/examples/scroll/lv_example_scroll_4.py b/lib/lvgl/examples/scroll/lv_example_scroll_4.py deleted file mode 100644 index 9556f60f..00000000 --- a/lib/lvgl/examples/scroll/lv_example_scroll_4.py +++ /dev/null @@ -1,62 +0,0 @@ -# -# Styling the scrollbars -# -obj = lv.obj(lv.scr_act()) -obj.set_size(200, 100) -obj.center() - -label = lv.label(obj) -label.set_text( -""" -Lorem ipsum dolor sit amet, consectetur adipiscing elit. -Etiam dictum, tortor vestibulum lacinia laoreet, mi neque consectetur neque, vel mattis odio dolor egestas ligula. -Sed vestibulum sapien nulla, id convallis ex porttitor nec. -Duis et massa eu libero accumsan faucibus a in arcu. -Ut pulvinar odio lorem, vel tempus turpis condimentum quis. Nam consectetur condimentum sem in auctor. -Sed nisl augue, venenatis in blandit et, gravida ac tortor. -Etiam dapibus elementum suscipit. -Proin mollis sollicitudin convallis. -Integer dapibus tempus arcu nec viverra. -Donec molestie nulla enim, eu interdum velit placerat quis. -Donec id efficitur risus, at molestie turpis. -Suspendisse vestibulum consectetur nunc ut commodo. -Fusce molestie rhoncus nisi sit amet tincidunt. -Suspendisse a nunc ut magna ornare volutpat. -""") - - -# Remove the style of scrollbar to have clean start -obj.remove_style(None, lv.PART.SCROLLBAR | lv.STATE.ANY) - -# Create a transition the animate the some properties on state change -props = [lv.STYLE.BG_OPA, lv.STYLE.WIDTH, 0] -trans = lv.style_transition_dsc_t() -trans.init(props, lv.anim_t.path_linear, 200, 0, None) - -# Create a style for the scrollbars -style = lv.style_t() -style.init() -style.set_width(4) # Width of the scrollbar -style.set_pad_right(5) # Space from the parallel side -style.set_pad_top(5) # Space from the perpendicular side - -style.set_radius(2) -style.set_bg_opa(lv.OPA._70) -style.set_bg_color(lv.palette_main(lv.PALETTE.BLUE)) -style.set_border_color(lv.palette_darken(lv.PALETTE.BLUE, 3)) -style.set_border_width(2) -style.set_shadow_width(8) -style.set_shadow_spread(2) -style.set_shadow_color(lv.palette_darken(lv.PALETTE.BLUE, 1)) - -style.set_transition(trans) - -# Make the scrollbars wider and use 100% opacity when scrolled -style_scrolled = lv.style_t() -style_scrolled.init() -style_scrolled.set_width(8) -style_scrolled.set_bg_opa(lv.OPA.COVER) - -obj.add_style(style, lv.PART.SCROLLBAR) -obj.add_style(style_scrolled, lv.PART.SCROLLBAR | lv.STATE.SCROLLED) - diff --git a/lib/lvgl/examples/scroll/lv_example_scroll_5.c b/lib/lvgl/examples/scroll/lv_example_scroll_5.c index 60e65ffa..5f0b0af7 100644 --- a/lib/lvgl/examples/scroll/lv_example_scroll_5.c +++ b/lib/lvgl/examples/scroll/lv_example_scroll_5.c @@ -1,13 +1,12 @@ #include "../lv_examples.h" #if LV_BUILD_EXAMPLES && LV_FONT_DEJAVU_16_PERSIAN_HEBREW - /** * Scrolling with Right To Left base direction */ void lv_example_scroll_5(void) { - lv_obj_t * obj = lv_obj_create(lv_scr_act()); + lv_obj_t * obj = lv_obj_create(lv_screen_active()); lv_obj_set_style_base_dir(obj, LV_BASE_DIR_RTL, 0); lv_obj_set_size(obj, 200, 100); lv_obj_center(obj); diff --git a/lib/lvgl/examples/scroll/lv_example_scroll_5.py b/lib/lvgl/examples/scroll/lv_example_scroll_5.py deleted file mode 100644 index 064d4816..00000000 --- a/lib/lvgl/examples/scroll/lv_example_scroll_5.py +++ /dev/null @@ -1,13 +0,0 @@ -# -# Scrolling with Right To Left base direction -# -obj = lv.obj(lv.scr_act()) -obj.set_style_base_dir(lv.BASE_DIR.RTL, 0) -obj.set_size(200, 100) -obj.center() - -label = lv.label(obj) -label.set_text("میکروکُنترولر (به انگلیسی: Microcontroller) گونهای ریزپردازنده است که دارای حافظهٔ دسترسی تصادفی (RAM) و حافظهٔ فقطخواندنی (ROM)، تایمر، پورتهای ورودی و خروجی (I/O) و درگاه ترتیبی (Serial Port پورت سریال)، درون خود تراشه است، و میتواند به تنهایی ابزارهای دیگر را کنترل کند. به عبارت دیگر یک میکروکنترلر، مدار مجتمع کوچکی است که از یک CPU کوچک و اجزای دیگری مانند تایمر، درگاههای ورودی و خروجی آنالوگ و دیجیتال و حافظه تشکیل شدهاست.") -label.set_width(400) -label.set_style_text_font(lv.font_dejavu_16_persian_hebrew, 0) - diff --git a/lib/lvgl/examples/scroll/lv_example_scroll_6.c b/lib/lvgl/examples/scroll/lv_example_scroll_6.c index 5ce864ac..66dc60da 100644 --- a/lib/lvgl/examples/scroll/lv_example_scroll_6.c +++ b/lib/lvgl/examples/scroll/lv_example_scroll_6.c @@ -7,23 +7,23 @@ static void scroll_event_cb(lv_event_t * e) lv_area_t cont_a; lv_obj_get_coords(cont, &cont_a); - lv_coord_t cont_y_center = cont_a.y1 + lv_area_get_height(&cont_a) / 2; + int32_t cont_y_center = cont_a.y1 + lv_area_get_height(&cont_a) / 2; - lv_coord_t r = lv_obj_get_height(cont) * 7 / 10; + int32_t r = lv_obj_get_height(cont) * 7 / 10; uint32_t i; - uint32_t child_cnt = lv_obj_get_child_cnt(cont); + uint32_t child_cnt = lv_obj_get_child_count(cont); for(i = 0; i < child_cnt; i++) { lv_obj_t * child = lv_obj_get_child(cont, i); lv_area_t child_a; lv_obj_get_coords(child, &child_a); - lv_coord_t child_y_center = child_a.y1 + lv_area_get_height(&child_a) / 2; + int32_t child_y_center = child_a.y1 + lv_area_get_height(&child_a) / 2; - lv_coord_t diff_y = child_y_center - cont_y_center; + int32_t diff_y = child_y_center - cont_y_center; diff_y = LV_ABS(diff_y); /*Get the x of diff_y on a circle.*/ - lv_coord_t x; + int32_t x; /*If diff_y is out of the circle use the last point of the circle (the radius)*/ if(diff_y >= r) { x = r; @@ -50,7 +50,7 @@ static void scroll_event_cb(lv_event_t * e) */ void lv_example_scroll_6(void) { - lv_obj_t * cont = lv_obj_create(lv_scr_act()); + lv_obj_t * cont = lv_obj_create(lv_screen_active()); lv_obj_set_size(cont, 200, 200); lv_obj_center(cont); lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_COLUMN); @@ -63,7 +63,7 @@ void lv_example_scroll_6(void) uint32_t i; for(i = 0; i < 20; i++) { - lv_obj_t * btn = lv_btn_create(cont); + lv_obj_t * btn = lv_button_create(cont); lv_obj_set_width(btn, lv_pct(100)); lv_obj_t * label = lv_label_create(btn); @@ -71,7 +71,7 @@ void lv_example_scroll_6(void) } /*Update the buttons position manually for first*/ - lv_event_send(cont, LV_EVENT_SCROLL, NULL); + lv_obj_send_event(cont, LV_EVENT_SCROLL, NULL); /*Be sure the fist button is in the middle*/ lv_obj_scroll_to_view(lv_obj_get_child(cont, 0), LV_ANIM_OFF); diff --git a/lib/lvgl/examples/scroll/lv_example_scroll_6.py b/lib/lvgl/examples/scroll/lv_example_scroll_6.py deleted file mode 100644 index 9b1e9b86..00000000 --- a/lib/lvgl/examples/scroll/lv_example_scroll_6.py +++ /dev/null @@ -1,68 +0,0 @@ -def scroll_event_cb(e): - - cont = e.get_target() - - cont_a = lv.area_t() - cont.get_coords(cont_a) - cont_y_center = cont_a.y1 + cont_a.get_height() // 2 - - r = cont.get_height() * 7 // 10 - - child_cnt = cont.get_child_cnt() - for i in range(child_cnt): - child = cont.get_child(i) - child_a = lv.area_t() - child.get_coords(child_a) - - child_y_center = child_a.y1 + child_a.get_height() // 2 - - diff_y = child_y_center - cont_y_center - diff_y = abs(diff_y) - - # Get the x of diff_y on a circle. - - # If diff_y is out of the circle use the last point of the circle (the radius) - if diff_y >= r: - x = r - else: - # Use Pythagoras theorem to get x from radius and y - x_sqr = r * r - diff_y * diff_y - res = lv.sqrt_res_t() - lv.sqrt(x_sqr, res, 0x8000) # Use lvgl's built in sqrt root function - x = r - res.i - - # Translate the item by the calculated X coordinate - child.set_style_translate_x(x, 0) - - # Use some opacity with larger translations - opa = lv.map(x, 0, r, lv.OPA.TRANSP, lv.OPA.COVER) - child.set_style_opa(lv.OPA.COVER - opa, 0) - -# -# Translate the object as they scroll -# - -cont = lv.obj(lv.scr_act()) -cont.set_size(200, 200) -cont.center() -cont.set_flex_flow(lv.FLEX_FLOW.COLUMN) -cont.add_event_cb(scroll_event_cb, lv.EVENT.SCROLL, None) -cont.set_style_radius(lv.RADIUS.CIRCLE, 0) -cont.set_style_clip_corner(True, 0) -cont.set_scroll_dir(lv.DIR.VER) -cont.set_scroll_snap_y(lv.SCROLL_SNAP.CENTER) -cont.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - -for i in range(20): - btn = lv.btn(cont) - btn.set_width(lv.pct(100)) - - label = lv.label(btn) - label.set_text("Button " + str(i)) - - # Update the buttons position manually for first* - lv.event_send(cont, lv.EVENT.SCROLL, None) - - # Be sure the fist button is in the middle - #lv.obj.scroll_to_view(cont.get_child(0), lv.ANIM.OFF) - cont.get_child(0).scroll_to_view(lv.ANIM.OFF) |
