refactor: scr -> screen, act->active, del->delete, remove in obj_clear_flag/state
This commit is contained in:
@@ -749,7 +749,7 @@ static void benchmark_init(void)
|
||||
lv_timer_set_period(anim_timer, 2);
|
||||
}
|
||||
|
||||
lv_obj_t * scr = lv_scr_act();
|
||||
lv_obj_t * scr = lv_screen_active();
|
||||
lv_obj_remove_style_all(scr);
|
||||
lv_obj_set_style_bg_opa(scr, LV_OPA_COVER, 0);
|
||||
lv_obj_set_style_bg_color(scr, lv_palette_lighten(LV_PALETTE_GREY, 4), 0);
|
||||
@@ -859,7 +859,7 @@ static void next_scene_timer_cb(lv_timer_t * timer)
|
||||
lv_result_t res = load_next_scene();
|
||||
|
||||
if(res == LV_RESULT_INVALID) {
|
||||
lv_timer_del(timer);
|
||||
lv_timer_delete(timer);
|
||||
generate_report();
|
||||
}
|
||||
}
|
||||
@@ -882,7 +882,7 @@ static void single_scene_finsih_timer_cb(lv_timer_t * timer)
|
||||
benchmark_event_remove();
|
||||
show_scene_report();
|
||||
lv_obj_clean(scene_bg);
|
||||
lv_obj_invalidate(lv_scr_act());
|
||||
lv_obj_invalidate(lv_screen_active());
|
||||
}
|
||||
|
||||
static void dummy_flush_cb(lv_display_t * drv, const lv_area_t * area, uint8_t * pxmap)
|
||||
@@ -987,19 +987,19 @@ static void generate_report(void)
|
||||
|
||||
uint32_t opa_speed_pct = (fps_opa_unweighted * 100) / fps_normal_unweighted;
|
||||
|
||||
lv_obj_clean(lv_scr_act());
|
||||
lv_obj_clean(lv_screen_active());
|
||||
scene_bg = NULL;
|
||||
|
||||
lv_obj_set_flex_flow(lv_scr_act(), LV_FLEX_FLOW_COLUMN);
|
||||
lv_obj_set_flex_flow(lv_screen_active(), LV_FLEX_FLOW_COLUMN);
|
||||
|
||||
title = lv_label_create(lv_scr_act());
|
||||
title = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text_fmt(title, "Weighted FPS: %"LV_PRIu32, fps_weighted);
|
||||
|
||||
subtitle = lv_label_create(lv_scr_act());
|
||||
subtitle = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text_fmt(subtitle, "Opa. speed: %"LV_PRIu32"%%", opa_speed_pct);
|
||||
|
||||
lv_coord_t w = lv_obj_get_content_width(lv_scr_act());
|
||||
lv_obj_t * table = lv_table_create(lv_scr_act());
|
||||
lv_coord_t w = lv_obj_get_content_width(lv_screen_active());
|
||||
lv_obj_t * table = lv_table_create(lv_screen_active());
|
||||
// lv_obj_clean_style_list(table, LV_PART_MAIN);
|
||||
lv_table_set_col_cnt(table, 2);
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ static void ctrl_pad_btn_remove_event_handler(lv_event_t * e)
|
||||
lv_obj_clean(ui->root);
|
||||
}
|
||||
else {
|
||||
lv_obj_del(ui->obj_cur);
|
||||
lv_obj_delete(ui->obj_cur);
|
||||
ui->obj_cur = NULL;
|
||||
}
|
||||
}
|
||||
@@ -114,7 +114,7 @@ void ctrl_pad_obj_update(lv_obj_t * obj, view_t * ui)
|
||||
lv_obj_add_state(checkbox, LV_STATE_CHECKED);
|
||||
}
|
||||
else {
|
||||
lv_obj_clear_state(checkbox, LV_STATE_CHECKED);
|
||||
lv_obj_remove_state(checkbox, LV_STATE_CHECKED);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,7 +144,8 @@ static void ctrl_pad_checkbox_event_handler(lv_event_t * e)
|
||||
view_t * ui = lv_event_get_user_data(e);
|
||||
if(ui->obj_cur) {
|
||||
bool checked = lv_obj_has_state(lv_event_get_target(e), LV_STATE_CHECKED);
|
||||
checked ? lv_obj_add_flag(ui->obj_cur, LV_OBJ_FLAG_SCROLLABLE) : lv_obj_clear_flag(ui->obj_cur, LV_OBJ_FLAG_SCROLLABLE);
|
||||
checked ? lv_obj_add_flag(ui->obj_cur, LV_OBJ_FLAG_SCROLLABLE) : lv_obj_remove_flag(ui->obj_cur,
|
||||
LV_OBJ_FLAG_SCROLLABLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ static view_t view;
|
||||
|
||||
void lv_demo_flex_layout(void)
|
||||
{
|
||||
view_create(lv_scr_act(), &view);
|
||||
view_create(lv_screen_active(), &view);
|
||||
ctrl_pad_attach(&view);
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ void view_create(lv_obj_t * par, view_t * ui)
|
||||
lv_obj_set_style_shadow_color(obj, lv_color_hex3(0xaaa), 0);
|
||||
lv_obj_set_style_shadow_width(obj, 20, 0);
|
||||
lv_obj_set_style_shadow_ofs_y(obj, 2, 0);
|
||||
lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE);
|
||||
lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE);
|
||||
lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_COLUMN);
|
||||
lv_obj_set_flex_align(
|
||||
obj,
|
||||
|
||||
@@ -69,7 +69,7 @@ static void obj_child_node_event_handler(lv_event_t * e)
|
||||
lv_obj_t * obj = lv_event_get_target(e);
|
||||
|
||||
if(ui->obj_cur) {
|
||||
lv_obj_clear_state(ui->obj_cur, LV_STATE_CHECKED);
|
||||
lv_obj_remove_state(ui->obj_cur, LV_STATE_CHECKED);
|
||||
}
|
||||
|
||||
lv_obj_add_state(obj, LV_STATE_CHECKED);
|
||||
|
||||
@@ -66,7 +66,7 @@ void lv_demo_keypad_encoder(void)
|
||||
}
|
||||
}
|
||||
|
||||
tv = lv_tabview_create(lv_scr_act(), LV_DIR_TOP, LV_DPI_DEF / 3);
|
||||
tv = lv_tabview_create(lv_screen_active(), LV_DIR_TOP, LV_DPI_DEF / 3);
|
||||
|
||||
t1 = lv_tabview_add_tab(tv, "Selectors");
|
||||
t2 = lv_tabview_add_tab(tv, "Text input");
|
||||
@@ -153,7 +153,7 @@ static void text_input_create(lv_obj_t * parent)
|
||||
lv_textarea_set_one_line(ta2, true);
|
||||
lv_textarea_set_placeholder_text(ta2, "Type something");
|
||||
|
||||
lv_obj_t * kb = lv_keyboard_create(lv_scr_act());
|
||||
lv_obj_t * kb = lv_keyboard_create(lv_screen_active());
|
||||
lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
|
||||
|
||||
lv_obj_add_event(ta1, ta_event_cb, LV_EVENT_ALL, kb);
|
||||
@@ -205,7 +205,7 @@ static void ta_event_cb(lv_event_t * e)
|
||||
|
||||
if(code == LV_EVENT_CLICKED && indev_type == LV_INDEV_TYPE_ENCODER) {
|
||||
lv_keyboard_set_textarea(kb, ta);
|
||||
lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_remove_flag(kb, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_group_focus_obj(kb);
|
||||
lv_group_set_editing(lv_obj_get_group(kb), kb);
|
||||
lv_obj_set_height(tv, LV_VER_RES / 2);
|
||||
|
||||
@@ -17,7 +17,7 @@ class KeyboardEncoder:
|
||||
|
||||
cur_drv = cur_drv.get_next()
|
||||
|
||||
self.tv = lv.tabview(lv.scr_act(), lv.DIR.TOP, lv.DPI_DEF // 3)
|
||||
self.tv = lv.tabview(lv.screen_active(), lv.DIR.TOP, lv.DPI_DEF // 3)
|
||||
|
||||
self.t1 = self.tv.add_tab("Selectors")
|
||||
self.t2 = self.tv.add_tab("Text input")
|
||||
@@ -93,7 +93,7 @@ class KeyboardEncoder:
|
||||
ta2.set_one_line(True)
|
||||
ta2.set_placeholder_text("Type something")
|
||||
|
||||
self.kb = lv.keyboard(lv.scr_act())
|
||||
self.kb = lv.keyboard(lv.screen_active())
|
||||
self.kb.add_flag(lv.obj.FLAG.HIDDEN)
|
||||
|
||||
ta1.add_event(self.ta_event_cb, lv.EVENT.ALL, None)
|
||||
@@ -141,7 +141,7 @@ class KeyboardEncoder:
|
||||
|
||||
if code == lv.EVENT.CLICKED and indev_type == lv.INDEV_TYPE.ENCODER:
|
||||
self.kb.set_textarea(ta)
|
||||
self.kb.clear_flag(lv.obj.FLAG.HIDDEN)
|
||||
self.kb.remove_flag(lv.obj.FLAG.HIDDEN)
|
||||
self.kb.group_focus_obj()
|
||||
self.kb.get_group().set_editing()
|
||||
self.tv.set_height(lv.pct(50))
|
||||
|
||||
@@ -158,11 +158,11 @@ void lv_demo_multilang(void)
|
||||
emoji_font = lv_imgfont_create(20, get_imgfont_path, NULL);
|
||||
font_multilang_small.fallback = emoji_font;
|
||||
|
||||
lv_obj_set_flex_flow(lv_scr_act(), LV_FLEX_FLOW_COLUMN);
|
||||
lv_obj_set_style_pad_row(lv_scr_act(), 0, 0);
|
||||
lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0xececec), 0);
|
||||
lv_obj_set_style_bg_grad_color(lv_scr_act(), lv_color_hex(0xf9f9f9), 0);
|
||||
lv_obj_set_style_bg_grad_dir(lv_scr_act(), LV_GRAD_DIR_HOR, 0);
|
||||
lv_obj_set_flex_flow(lv_screen_active(), LV_FLEX_FLOW_COLUMN);
|
||||
lv_obj_set_style_pad_row(lv_screen_active(), 0, 0);
|
||||
lv_obj_set_style_bg_color(lv_screen_active(), lv_color_hex(0xececec), 0);
|
||||
lv_obj_set_style_bg_grad_color(lv_screen_active(), lv_color_hex(0xf9f9f9), 0);
|
||||
lv_obj_set_style_bg_grad_dir(lv_screen_active(), LV_GRAD_DIR_HOR, 0);
|
||||
|
||||
static const lv_coord_t grid_cols[] = {LV_GRID_CONTENT, 4, LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST};
|
||||
static const lv_coord_t grid_rows[] = {LV_GRID_CONTENT, -10, LV_GRID_FR(1), LV_GRID_CONTENT, LV_GRID_TEMPLATE_LAST};
|
||||
@@ -224,7 +224,7 @@ void lv_demo_multilang(void)
|
||||
|
||||
uint32_t i;
|
||||
for(i = 0; card_info[i].image; i++) {
|
||||
card_create(lv_scr_act(), &card_info[i]);
|
||||
card_create(lv_screen_active(), &card_info[i]);
|
||||
}
|
||||
|
||||
lv_timer_create(inactive_timer_cb, 1000, NULL);
|
||||
@@ -239,12 +239,12 @@ static void inactive_timer_cb(lv_timer_t * t)
|
||||
LV_UNUSED(t);
|
||||
|
||||
static bool scrolled = false;
|
||||
lv_obj_t * cont = lv_obj_get_child(lv_scr_act(), 0);
|
||||
lv_obj_t * cont = lv_obj_get_child(lv_screen_active(), 0);
|
||||
if(cont == NULL) return;
|
||||
|
||||
if(scrolled) {
|
||||
lv_obj_scroll_by(cont, -100, 0, LV_ANIM_ON);
|
||||
lv_obj_clear_flag(lv_layer_top(), LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(lv_layer_top(), LV_OBJ_FLAG_CLICKABLE);
|
||||
scrolled = false;
|
||||
return;
|
||||
}
|
||||
@@ -275,14 +275,14 @@ static void scroll_event_cb(lv_event_t * e)
|
||||
|
||||
if(scroll_x < w / 2) {
|
||||
lv_obj_set_scroll_snap_x(cont, LV_SCROLL_SNAP_NONE);
|
||||
lv_obj_clear_flag(cont, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(cont, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_indev_wait_release(indev);
|
||||
lv_obj_scroll_to_view(lv_obj_get_child(cont, 0), LV_ANIM_ON);
|
||||
|
||||
lv_anim_t a;
|
||||
lv_anim_init(&a);
|
||||
lv_anim_set_exec_cb(&a, shrink_anim_cb);
|
||||
lv_anim_set_ready_cb(&a, lv_obj_del_anim_ready_cb);
|
||||
lv_anim_set_ready_cb(&a, lv_obj_delete_anim_ready_cb);
|
||||
lv_anim_set_values(&a, 255, 0);
|
||||
lv_anim_set_time(&a, 400);
|
||||
lv_anim_set_var(&a, cont);
|
||||
@@ -296,14 +296,14 @@ static void card_create(lv_obj_t * parent, card_info_t * info)
|
||||
lv_obj_add_style(cont, &style_card_cont, 0);
|
||||
lv_obj_set_scroll_snap_x(cont, LV_SCROLL_SNAP_CENTER);
|
||||
lv_obj_add_event(cont, scroll_event_cb, LV_EVENT_RELEASED, NULL);
|
||||
lv_obj_clear_flag(cont, LV_OBJ_FLAG_SCROLL_ELASTIC);
|
||||
lv_obj_remove_flag(cont, LV_OBJ_FLAG_SCROLL_ELASTIC);
|
||||
lv_obj_set_scrollbar_mode(cont, LV_SCROLLBAR_MODE_OFF);
|
||||
|
||||
lv_obj_t * remove = lv_obj_create(cont);
|
||||
lv_obj_add_style(remove, &style_hide, 0);
|
||||
lv_obj_clear_flag(remove, LV_OBJ_FLAG_SNAPPABLE);
|
||||
lv_obj_remove_flag(remove, LV_OBJ_FLAG_SNAPPABLE);
|
||||
lv_obj_add_flag(remove, LV_OBJ_FLAG_FLOATING);
|
||||
lv_obj_clear_flag(remove, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(remove, LV_OBJ_FLAG_CLICKABLE);
|
||||
|
||||
lv_obj_t * hide_label = lv_label_create(remove);
|
||||
lv_label_set_text(hide_label, "Hide");
|
||||
@@ -314,7 +314,7 @@ static void card_create(lv_obj_t * parent, card_info_t * info)
|
||||
|
||||
lv_obj_t * card = lv_obj_create(cont);
|
||||
lv_obj_add_style(card, &style_card, 0);
|
||||
lv_obj_clear_flag(card, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE | LV_OBJ_FLAG_SCROLL_CHAIN_HOR);
|
||||
lv_obj_remove_flag(card, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE | LV_OBJ_FLAG_SCROLL_CHAIN_HOR);
|
||||
|
||||
lv_obj_t * avatar = lv_image_create(card);
|
||||
lv_image_set_src(avatar, info->image);
|
||||
@@ -333,7 +333,7 @@ static void card_create(lv_obj_t * parent, card_info_t * info)
|
||||
lv_obj_set_style_text_line_space(description, -3, 0);
|
||||
|
||||
lv_obj_t * btn = lv_button_create(card);
|
||||
lv_obj_clear_flag(card, LV_OBJ_FLAG_SCROLL_CHAIN_HOR);
|
||||
lv_obj_remove_flag(card, LV_OBJ_FLAG_SCROLL_CHAIN_HOR);
|
||||
lv_obj_set_grid_cell(btn, LV_GRID_ALIGN_START, 2, 1, LV_GRID_ALIGN_CENTER, 3, 1);
|
||||
lv_obj_add_style(btn, &style_btn, 0);
|
||||
|
||||
|
||||
@@ -113,10 +113,10 @@ static const uint32_t time_list[] = {
|
||||
|
||||
void lv_demo_music(void)
|
||||
{
|
||||
lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0x343247), 0);
|
||||
lv_obj_set_style_bg_color(lv_screen_active(), lv_color_hex(0x343247), 0);
|
||||
|
||||
list = _lv_demo_music_list_create(lv_scr_act());
|
||||
ctrl = _lv_demo_music_main_create(lv_scr_act());
|
||||
list = _lv_demo_music_list_create(lv_screen_active());
|
||||
ctrl = _lv_demo_music_main_create(lv_screen_active());
|
||||
|
||||
#if LV_DEMO_MUSIC_AUTO_PLAY
|
||||
lv_timer_create(auto_step_cb, 1000, NULL);
|
||||
@@ -241,7 +241,7 @@ static void auto_step_cb(lv_timer_t * t)
|
||||
break;
|
||||
}
|
||||
case 41:
|
||||
lv_scr_load(lv_obj_create(NULL));
|
||||
lv_screen_load(lv_obj_create(NULL));
|
||||
_lv_demo_music_pause();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ void _lv_demo_music_list_button_check(uint32_t track_id, bool state)
|
||||
lv_obj_scroll_to_view(btn, LV_ANIM_ON);
|
||||
}
|
||||
else {
|
||||
lv_obj_clear_state(btn, LV_STATE_CHECKED);
|
||||
lv_obj_remove_state(btn, LV_STATE_CHECKED);
|
||||
lv_image_set_src(icon, &img_lv_demo_music_btn_list_play);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -288,11 +288,11 @@ lv_obj_t * _lv_demo_music_main_create(lv_obj_t * parent)
|
||||
|
||||
/* Create an intro from a logo + label */
|
||||
LV_IMAGE_DECLARE(img_lv_demo_music_logo);
|
||||
lv_obj_t * logo = lv_image_create(lv_scr_act());
|
||||
lv_obj_t * logo = lv_image_create(lv_screen_active());
|
||||
lv_image_set_src(logo, &img_lv_demo_music_logo);
|
||||
lv_obj_move_foreground(logo);
|
||||
|
||||
lv_obj_t * title = lv_label_create(lv_scr_act());
|
||||
lv_obj_t * title = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(title, "LVGL Demo\nMusic player");
|
||||
lv_obj_set_style_text_align(title, LV_TEXT_ALIGN_CENTER, 0);
|
||||
lv_obj_set_style_text_font(title, font_large, 0);
|
||||
@@ -306,7 +306,7 @@ lv_obj_t * _lv_demo_music_main_create(lv_obj_t * parent)
|
||||
lv_anim_set_time(&a, 400);
|
||||
lv_anim_set_delay(&a, INTRO_TIME + 800);
|
||||
lv_anim_set_values(&a, LV_SCALE_NONE, 10);
|
||||
lv_anim_set_ready_cb(&a, lv_obj_del_anim_ready_cb);
|
||||
lv_anim_set_ready_cb(&a, lv_obj_delete_anim_ready_cb);
|
||||
lv_anim_start(&a);
|
||||
|
||||
lv_obj_update_layout(main_cont);
|
||||
@@ -371,11 +371,11 @@ void _lv_demo_music_pause(void)
|
||||
playing = false;
|
||||
spectrum_i_pause = spectrum_i;
|
||||
spectrum_i = 0;
|
||||
lv_anim_del(spectrum_obj, spectrum_anim_cb);
|
||||
lv_anim_delete(spectrum_obj, spectrum_anim_cb);
|
||||
lv_obj_invalidate(spectrum_obj);
|
||||
lv_image_set_zoom(album_image_obj, LV_SCALE_NONE);
|
||||
if(sec_counter_timer) lv_timer_pause(sec_counter_timer);
|
||||
lv_obj_clear_state(play_obj, LV_STATE_CHECKED);
|
||||
lv_obj_remove_state(play_obj, LV_STATE_CHECKED);
|
||||
}
|
||||
|
||||
/**********************
|
||||
@@ -386,8 +386,8 @@ static lv_obj_t * create_cont(lv_obj_t * parent)
|
||||
{
|
||||
/*A transparent container in which the player section will be scrolled*/
|
||||
main_cont = lv_obj_create(parent);
|
||||
lv_obj_clear_flag(main_cont, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_clear_flag(main_cont, LV_OBJ_FLAG_SCROLL_ELASTIC);
|
||||
lv_obj_remove_flag(main_cont, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(main_cont, LV_OBJ_FLAG_SCROLL_ELASTIC);
|
||||
lv_obj_remove_style_all(main_cont); /*Make it transparent*/
|
||||
lv_obj_set_size(main_cont, lv_pct(100), lv_pct(100));
|
||||
lv_obj_set_scroll_snap_y(main_cont, LV_SCROLL_SNAP_CENTER); /*Snap the children to the center*/
|
||||
@@ -400,7 +400,7 @@ static lv_obj_t * create_cont(lv_obj_t * parent)
|
||||
#else
|
||||
lv_obj_set_size(player, LV_HOR_RES, LV_VER_RES + LV_DEMO_MUSIC_HANDLE_SIZE * 2);
|
||||
#endif
|
||||
lv_obj_clear_flag(player, LV_OBJ_FLAG_SNAPPABLE);
|
||||
lv_obj_remove_flag(player, LV_OBJ_FLAG_SNAPPABLE);
|
||||
|
||||
lv_obj_set_style_bg_color(player, lv_color_hex(0xffffff), 0);
|
||||
lv_obj_set_style_border_width(player, 0, 0);
|
||||
@@ -411,16 +411,16 @@ static lv_obj_t * create_cont(lv_obj_t * parent)
|
||||
* It is used only to snap it to center.*/
|
||||
lv_obj_t * placeholder1 = lv_obj_create(main_cont);
|
||||
lv_obj_remove_style_all(placeholder1);
|
||||
lv_obj_clear_flag(placeholder1, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(placeholder1, LV_OBJ_FLAG_CLICKABLE);
|
||||
|
||||
lv_obj_t * placeholder2 = lv_obj_create(main_cont);
|
||||
lv_obj_remove_style_all(placeholder2);
|
||||
lv_obj_clear_flag(placeholder2, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(placeholder2, LV_OBJ_FLAG_CLICKABLE);
|
||||
|
||||
#if LV_DEMO_MUSIC_SQUARE || LV_DEMO_MUSIC_ROUND
|
||||
lv_obj_t * placeholder3 = lv_obj_create(main_cont);
|
||||
lv_obj_remove_style_all(placeholder3);
|
||||
lv_obj_clear_flag(placeholder3, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(placeholder3, LV_OBJ_FLAG_CLICKABLE);
|
||||
|
||||
lv_obj_set_size(placeholder1, lv_pct(100), LV_VER_RES);
|
||||
lv_obj_set_y(placeholder1, 0);
|
||||
@@ -545,7 +545,7 @@ static lv_obj_t * create_spectrum_obj(lv_obj_t * parent)
|
||||
#else
|
||||
lv_obj_set_height(obj, 250);
|
||||
#endif
|
||||
lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE);
|
||||
lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE);
|
||||
lv_obj_add_event(obj, spectrum_draw_event_cb, LV_EVENT_ALL, NULL);
|
||||
lv_obj_refresh_ext_draw_size(obj);
|
||||
album_image_obj = album_image_create(obj);
|
||||
@@ -714,7 +714,7 @@ static void track_load(uint32_t id)
|
||||
}
|
||||
#endif
|
||||
lv_anim_set_exec_cb(&a, _obj_set_x_anim_cb);
|
||||
lv_anim_set_ready_cb(&a, lv_obj_del_anim_ready_cb);
|
||||
lv_anim_set_ready_cb(&a, lv_obj_delete_anim_ready_cb);
|
||||
lv_anim_start(&a);
|
||||
|
||||
lv_anim_set_path_cb(&a, lv_anim_path_linear);
|
||||
@@ -766,7 +766,7 @@ static void del_counter_timer_cb(lv_event_t * e)
|
||||
{
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
if(code == LV_EVENT_DELETE && sec_counter_timer) {
|
||||
lv_timer_del(sec_counter_timer);
|
||||
lv_timer_delete(sec_counter_timer);
|
||||
sec_counter_timer = NULL;
|
||||
}
|
||||
}
|
||||
@@ -891,9 +891,9 @@ static void spectrum_draw_event_cb(lv_event_t * e)
|
||||
}
|
||||
}
|
||||
else if(code == LV_EVENT_DELETE) {
|
||||
lv_anim_del(NULL, start_anim_cb);
|
||||
lv_anim_del(NULL, spectrum_anim_cb);
|
||||
if(start_anim && stop_start_anim_timer) lv_timer_del(stop_start_anim_timer);
|
||||
lv_anim_delete(NULL, start_anim_cb);
|
||||
lv_anim_delete(NULL, spectrum_anim_cb);
|
||||
if(start_anim && stop_start_anim_timer) lv_timer_delete(stop_start_anim_timer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -963,7 +963,7 @@ static lv_obj_t * album_image_create(lv_obj_t * parent)
|
||||
lv_image_set_antialias(img, false);
|
||||
lv_obj_align(img, LV_ALIGN_CENTER, 0, 0);
|
||||
lv_obj_add_event(img, album_gesture_event_cb, LV_EVENT_GESTURE, NULL);
|
||||
lv_obj_clear_flag(img, LV_OBJ_FLAG_GESTURE_BUBBLE);
|
||||
lv_obj_remove_flag(img, LV_OBJ_FLAG_GESTURE_BUBBLE);
|
||||
lv_obj_add_flag(img, LV_OBJ_FLAG_CLICKABLE);
|
||||
|
||||
return img;
|
||||
|
||||
@@ -37,7 +37,7 @@ static lv_obj_t * list;
|
||||
**********************/
|
||||
void lv_demo_scroll(void)
|
||||
{
|
||||
lv_obj_t * panel = lv_obj_create(lv_scr_act());
|
||||
lv_obj_t * panel = lv_obj_create(lv_screen_active());
|
||||
lv_obj_set_style_shadow_width(panel, 16, 0);
|
||||
lv_obj_set_style_shadow_ofs_y(panel, 8, 0);
|
||||
lv_obj_set_style_shadow_ofs_x(panel, 4, 0);
|
||||
@@ -94,8 +94,8 @@ static lv_obj_t * switch_create(lv_obj_t * parent, const char * title, lv_obj_fl
|
||||
lv_obj_add_flag(list, flag);
|
||||
}
|
||||
else {
|
||||
lv_obj_clear_state(sw, LV_STATE_CHECKED);
|
||||
lv_obj_clear_flag(list, flag);
|
||||
lv_obj_remove_state(sw, LV_STATE_CHECKED);
|
||||
lv_obj_remove_flag(list, flag);
|
||||
}
|
||||
|
||||
return cont;
|
||||
@@ -107,7 +107,7 @@ static void generic_swicth_event_cb(lv_event_t * e)
|
||||
lv_obj_flag_t flag = (lv_obj_flag_t)((lv_uintptr_t)lv_event_get_user_data(e));
|
||||
|
||||
if(lv_obj_has_state(sw, LV_STATE_CHECKED)) lv_obj_add_flag(list, flag);
|
||||
else lv_obj_clear_flag(list, flag);
|
||||
else lv_obj_remove_flag(list, flag);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
static void auto_del(lv_obj_t * obj, uint32_t delay);
|
||||
static void msgbox_del(lv_timer_t * tmr);
|
||||
static void auto_delete(lv_obj_t * obj, uint32_t delay);
|
||||
static void msgbox_delete(lv_timer_t * tmr);
|
||||
static void set_y_anim(void * obj, int32_t v);
|
||||
static void set_width_anim(void * obj, int32_t v);
|
||||
static void arc_set_end_angle_anim(void * obj, int32_t v);
|
||||
@@ -84,7 +84,7 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
break;
|
||||
case 0:
|
||||
/* Holder for all object types */
|
||||
main_page = lv_obj_create(lv_scr_act());
|
||||
main_page = lv_obj_create(lv_screen_active());
|
||||
lv_obj_set_size(main_page, LV_HOR_RES / 2, LV_VER_RES);
|
||||
lv_obj_set_flex_flow(main_page, LV_FLEX_FLOW_COLUMN);
|
||||
|
||||
@@ -96,7 +96,7 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
break;
|
||||
|
||||
case 1: {
|
||||
obj = lv_tabview_create(lv_scr_act(), LV_DIR_TOP, 50);
|
||||
obj = lv_tabview_create(lv_screen_active(), LV_DIR_TOP, 50);
|
||||
lv_obj_set_size(obj, LV_HOR_RES / 2, LV_VER_RES / 2);
|
||||
lv_obj_align(obj, LV_ALIGN_BOTTOM_RIGHT, 0, 0);
|
||||
lv_obj_t * t = lv_tabview_add_tab(obj, "First");
|
||||
@@ -108,7 +108,7 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
t = lv_tabview_add_tab(obj, LV_SYMBOL_CLOSE);
|
||||
|
||||
lv_tabview_set_act(obj, 1, LV_ANIM_ON);
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 5 + 30);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 5 + 30);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -130,14 +130,14 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
lv_anim_start(&a);
|
||||
|
||||
/*Delete the object a few sec later*/
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 10);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 10);
|
||||
|
||||
obj = lv_label_create(obj);
|
||||
lv_label_set_text_fmt(obj, "Formatted:\n%d %s", 12, "Volt");
|
||||
break;
|
||||
|
||||
case 3:
|
||||
ta = lv_textarea_create(lv_scr_act());
|
||||
ta = lv_textarea_create(lv_screen_active());
|
||||
lv_obj_align_to(ta, main_page, LV_ALIGN_OUT_RIGHT_TOP, 10, 10);
|
||||
lv_obj_set_size(ta, LV_HOR_RES / 3, LV_VER_RES / 4);
|
||||
lv_textarea_set_placeholder_text(ta, "The placeholder");
|
||||
@@ -147,7 +147,7 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
obj = lv_button_create(main_page);
|
||||
lv_obj_set_size(obj, 100, 70);
|
||||
lv_obj_set_style_bg_image_src(obj, LV_SYMBOL_DUMMY"Text from\nstyle", 0);
|
||||
lv_obj_del_async(obj); /*Delete on next call of `lv_task_handler` (so not now)*/
|
||||
lv_obj_delete_async(obj); /*Delete on next call of `lv_task_handler` (so not now)*/
|
||||
break;
|
||||
|
||||
case 5:
|
||||
@@ -163,29 +163,29 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
lv_bar_set_value(obj, 1800, LV_ANIM_ON);
|
||||
lv_bar_set_start_value(obj, -500, LV_ANIM_ON);
|
||||
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 2 + 70);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 2 + 70);
|
||||
|
||||
obj = lv_slider_create(main_page);
|
||||
lv_obj_set_style_anim_time(obj, LV_DEMO_STRESS_TIME_STEP * 8, 0);
|
||||
lv_slider_set_value(obj, 5000, LV_ANIM_ON); /*Animate to out of range value*/
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 5 + 22);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 5 + 22);
|
||||
|
||||
obj = lv_switch_create(main_page);
|
||||
|
||||
obj = lv_switch_create(main_page);
|
||||
lv_obj_add_state(obj, LV_STATE_CHECKED);
|
||||
auto_del(obj, 730);
|
||||
auto_delete(obj, 730);
|
||||
|
||||
break;
|
||||
|
||||
case 8:
|
||||
obj = lv_win_create(lv_scr_act());
|
||||
obj = lv_win_create(lv_screen_active());
|
||||
lv_obj_set_size(obj, LV_HOR_RES / 2, LV_VER_RES / 2);
|
||||
lv_obj_align(obj, LV_ALIGN_BOTTOM_RIGHT, 0, 0);
|
||||
lv_win_add_title(obj, "Window title");
|
||||
lv_win_add_button(obj, LV_SYMBOL_CLOSE, 40);
|
||||
lv_win_add_button(obj, LV_SYMBOL_DOWN, 40);
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 3 + 5);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 3 + 5);
|
||||
|
||||
obj = lv_calendar_create(lv_win_get_content(obj));
|
||||
break;
|
||||
@@ -194,7 +194,7 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
"Here area some dummy sentences to be sure the text area will be really scrollable.");
|
||||
break;
|
||||
case 10:
|
||||
obj = lv_keyboard_create(lv_scr_act());
|
||||
obj = lv_keyboard_create(lv_screen_active());
|
||||
lv_keyboard_set_mode(obj, LV_KEYBOARD_MODE_TEXT_UPPER);
|
||||
lv_anim_init(&a);
|
||||
lv_anim_set_var(&a, obj);
|
||||
@@ -203,7 +203,7 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
lv_anim_set_exec_cb(&a, set_y_anim);
|
||||
lv_anim_start(&a);
|
||||
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 2 + 18);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 2 + 18);
|
||||
break;
|
||||
|
||||
case 11:
|
||||
@@ -211,14 +211,14 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
lv_dropdown_set_options(obj, "Zero\nOne\nTwo\nThree\nFour\nFive\nSix\nSeven\nEight");
|
||||
lv_dropdown_open(obj);
|
||||
lv_dropdown_set_selected(obj, 2);
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 3 + 11);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 3 + 11);
|
||||
break;
|
||||
|
||||
case 12:
|
||||
obj = lv_roller_create(main_page);
|
||||
lv_roller_set_options(obj, "Zero\nOne\nTwo\nThree\nFour\nFive\nSix\nSeven\nEight", LV_ROLLER_MODE_INFINITE);
|
||||
lv_roller_set_selected(obj, 2, LV_ANIM_ON);
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 20 + 22);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 20 + 22);
|
||||
break;
|
||||
|
||||
case 13:
|
||||
@@ -237,13 +237,13 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
lv_scale_set_mode(obj, LV_SCALE_MODE_ROUND_INNER);
|
||||
lv_obj_scroll_to_view(obj, LV_ANIM_ON);
|
||||
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 6 + 30);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 6 + 30);
|
||||
break;
|
||||
|
||||
case 14:
|
||||
obj = lv_msgbox_create(NULL, "Title", "Some text on the message box with average length", mbox_buttons, true);
|
||||
|
||||
lv_timer_t * msgbox_tmr = lv_timer_create(msgbox_del, LV_DEMO_STRESS_TIME_STEP * 5 + 30, obj);
|
||||
lv_timer_t * msgbox_tmr = lv_timer_create(msgbox_delete, LV_DEMO_STRESS_TIME_STEP * 5 + 30, obj);
|
||||
lv_timer_set_repeat_count(msgbox_tmr, 1);
|
||||
lv_obj_align(obj, LV_ALIGN_RIGHT_MID, -10, 0);
|
||||
break;
|
||||
@@ -253,9 +253,9 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
break;
|
||||
|
||||
case 16: {
|
||||
lv_obj_t * tv = lv_tileview_create(lv_scr_act());
|
||||
lv_obj_t * tv = lv_tileview_create(lv_screen_active());
|
||||
lv_obj_set_size(tv, 200, 200);
|
||||
auto_del(tv, LV_DEMO_STRESS_TIME_STEP * 4 + 5);
|
||||
auto_delete(tv, LV_DEMO_STRESS_TIME_STEP * 4 + 5);
|
||||
|
||||
obj = lv_tileview_add_tile(tv, 0, 0, LV_DIR_ALL);
|
||||
obj = lv_label_create(obj);
|
||||
@@ -278,18 +278,18 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
{
|
||||
lv_obj_t * b;
|
||||
b = lv_list_add_button(obj, LV_SYMBOL_OK, "1. Some very long text to scroll");
|
||||
auto_del(b, 10);
|
||||
auto_delete(b, 10);
|
||||
lv_list_add_button(obj, LV_SYMBOL_OK, "2. Some very long text to scroll");
|
||||
lv_list_add_button(obj, LV_SYMBOL_OK, "3. Some very long text to scroll");
|
||||
b = lv_list_add_button(obj, LV_SYMBOL_OK, "4. Some very long text to scroll");
|
||||
auto_del(b, LV_DEMO_STRESS_TIME_STEP);
|
||||
auto_delete(b, LV_DEMO_STRESS_TIME_STEP);
|
||||
b = lv_list_add_button(obj, LV_SYMBOL_OK, "5. Some very long text to scroll");
|
||||
auto_del(b, LV_DEMO_STRESS_TIME_STEP + 90);
|
||||
auto_delete(b, LV_DEMO_STRESS_TIME_STEP + 90);
|
||||
b = lv_list_add_button(obj, LV_SYMBOL_OK, "6. Some very long text to scroll");
|
||||
auto_del(b, LV_DEMO_STRESS_TIME_STEP + 10);
|
||||
auto_delete(b, LV_DEMO_STRESS_TIME_STEP + 10);
|
||||
lv_obj_scroll_to_view(lv_obj_get_child(obj, -1), LV_ANIM_ON);
|
||||
}
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 5 + 15);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 5 + 15);
|
||||
|
||||
obj = lv_table_create(main_page);
|
||||
lv_table_set_cell_value(obj, 0, 0, "0,0");
|
||||
@@ -347,7 +347,7 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
lv_spinbox_set_step(obj, 1);
|
||||
lv_spinbox_increment(obj);
|
||||
lv_spinbox_increment(obj);
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 2 + 15);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 2 + 15);
|
||||
|
||||
lv_obj_scroll_by(main_page, 0, 20, LV_ANIM_ON);
|
||||
|
||||
@@ -368,7 +368,7 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
lv_chart_set_next_value(obj, s1, 48);
|
||||
lv_chart_set_next_value(obj, s1, 72);
|
||||
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 3);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 3);
|
||||
}
|
||||
|
||||
lv_obj_scroll_by(main_page, 0, 20, LV_ANIM_ON);
|
||||
@@ -377,14 +377,14 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
case 24:
|
||||
obj = lv_checkbox_create(main_page);
|
||||
lv_checkbox_set_text(obj, "An option to select");
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 2 + 20);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 2 + 20);
|
||||
|
||||
obj = lv_checkbox_create(main_page);
|
||||
lv_obj_add_state(obj, LV_STATE_CHECKED);
|
||||
|
||||
obj = lv_checkbox_create(main_page);
|
||||
lv_obj_add_state(obj, LV_STATE_CHECKED | LV_STATE_DISABLED);
|
||||
auto_del(obj, LV_DEMO_STRESS_TIME_STEP * 1 + 60);
|
||||
auto_delete(obj, LV_DEMO_STRESS_TIME_STEP * 1 + 60);
|
||||
|
||||
lv_obj_scroll_by(main_page, 0, 20, LV_ANIM_ON);
|
||||
|
||||
@@ -395,7 +395,7 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
{
|
||||
uint16_t i;
|
||||
for(i = 0; i < 64; i++) {
|
||||
lv_textarea_del_char_forward(ta);
|
||||
lv_textarea_delete_char_forward(ta);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -405,11 +405,11 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
break;
|
||||
case 29:
|
||||
lv_obj_clean(main_page);
|
||||
lv_obj_del(ta);
|
||||
lv_obj_delete(ta);
|
||||
ta = NULL;
|
||||
break;
|
||||
case 31:
|
||||
lv_obj_clean(lv_scr_act());
|
||||
lv_obj_clean(lv_screen_active());
|
||||
main_page = NULL;
|
||||
g_state = -2;
|
||||
break;
|
||||
@@ -420,19 +420,19 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
g_state++;
|
||||
}
|
||||
|
||||
static void auto_del(lv_obj_t * obj, uint32_t delay)
|
||||
static void auto_delete(lv_obj_t * obj, uint32_t delay)
|
||||
{
|
||||
lv_anim_t a;
|
||||
lv_anim_init(&a);
|
||||
lv_anim_set_var(&a, obj);
|
||||
lv_anim_set_time(&a, 0);
|
||||
lv_anim_set_delay(&a, delay);
|
||||
lv_anim_set_ready_cb(&a, lv_obj_del_anim_ready_cb);
|
||||
lv_anim_set_ready_cb(&a, lv_obj_delete_anim_ready_cb);
|
||||
lv_anim_start(&a);
|
||||
|
||||
}
|
||||
|
||||
static void msgbox_del(lv_timer_t * tmr)
|
||||
static void msgbox_delete(lv_timer_t * tmr)
|
||||
{
|
||||
lv_msgbox_close(tmr->user_data);
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ void lv_demo_transform(void)
|
||||
lv_obj_center(card_to_transform);
|
||||
|
||||
lv_coord_t disp_w = lv_display_get_horizontal_resolution(NULL);
|
||||
lv_obj_t * arc = lv_arc_create(lv_scr_act());
|
||||
lv_obj_t * arc = lv_arc_create(lv_screen_active());
|
||||
lv_obj_set_size(arc, disp_w - 20, disp_w - 20);
|
||||
lv_arc_set_range(arc, 0, 270);
|
||||
lv_arc_set_value(arc, 225);
|
||||
@@ -96,7 +96,7 @@ void lv_demo_transform(void)
|
||||
lv_obj_add_flag(arc, LV_OBJ_FLAG_ADV_HITTEST);
|
||||
lv_obj_center(arc);
|
||||
|
||||
lv_obj_t * slider = lv_slider_create(lv_scr_act());
|
||||
lv_obj_t * slider = lv_slider_create(lv_screen_active());
|
||||
lv_obj_set_width(slider, lv_pct(70));
|
||||
lv_obj_align(slider, LV_ALIGN_BOTTOM_MID, 0, -20);
|
||||
lv_obj_add_event(slider, slider_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
|
||||
@@ -110,9 +110,9 @@ void lv_demo_transform(void)
|
||||
|
||||
static lv_obj_t * card_create(void)
|
||||
{
|
||||
lv_obj_t * card = lv_obj_create(lv_scr_act());
|
||||
lv_obj_t * card = lv_obj_create(lv_screen_active());
|
||||
lv_obj_add_style(card, &style_card, 0);
|
||||
lv_obj_clear_flag(card, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE | LV_OBJ_FLAG_SCROLL_CHAIN_HOR);
|
||||
lv_obj_remove_flag(card, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE | LV_OBJ_FLAG_SCROLL_CHAIN_HOR);
|
||||
|
||||
lv_obj_t * avatar = lv_image_create(card);
|
||||
lv_image_set_src(avatar, &img_transform_avatar_15);
|
||||
@@ -125,7 +125,7 @@ static lv_obj_t * card_create(void)
|
||||
lv_obj_set_style_text_font(name, &lv_font_montserrat_18, 0);
|
||||
|
||||
lv_obj_t * btn = lv_button_create(card);
|
||||
lv_obj_clear_flag(card, LV_OBJ_FLAG_SCROLL_CHAIN_HOR);
|
||||
lv_obj_remove_flag(card, LV_OBJ_FLAG_SCROLL_CHAIN_HOR);
|
||||
lv_obj_set_grid_cell(btn, LV_GRID_ALIGN_START, 2, 1, LV_GRID_ALIGN_CENTER, 3, 1);
|
||||
lv_obj_add_style(btn, &style_btn, 0);
|
||||
|
||||
|
||||
@@ -162,9 +162,9 @@ void lv_demo_widgets(void)
|
||||
lv_style_set_border_width(&style_bullet, 0);
|
||||
lv_style_set_radius(&style_bullet, LV_RADIUS_CIRCLE);
|
||||
|
||||
tv = lv_tabview_create(lv_scr_act(), LV_DIR_TOP, tab_h);
|
||||
tv = lv_tabview_create(lv_screen_active(), LV_DIR_TOP, tab_h);
|
||||
|
||||
lv_obj_set_style_text_font(lv_scr_act(), font_normal, 0);
|
||||
lv_obj_set_style_text_font(lv_screen_active(), font_normal, 0);
|
||||
|
||||
if(disp_size == DISP_LARGE) {
|
||||
lv_obj_t * tab_buttons = lv_tabview_get_tab_buttons(tv);
|
||||
@@ -247,7 +247,7 @@ static void profile_create(lv_obj_t * parent)
|
||||
lv_obj_center(label);
|
||||
|
||||
/*Create a keyboard*/
|
||||
lv_obj_t * kb = lv_keyboard_create(lv_scr_act());
|
||||
lv_obj_t * kb = lv_keyboard_create(lv_screen_active());
|
||||
lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
|
||||
|
||||
/*Create the second panel*/
|
||||
@@ -657,7 +657,7 @@ static void analytics_create(lv_obj_t * parent)
|
||||
lv_obj_set_style_arc_opa(arc, 0, 0);
|
||||
lv_obj_set_style_arc_width(arc, 15, LV_PART_INDICATOR);
|
||||
lv_obj_set_style_arc_color(arc, lv_palette_main(LV_PALETTE_BLUE), LV_PART_INDICATOR);
|
||||
lv_obj_clear_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
|
||||
lv_anim_set_exec_cb(&a, scale1_indic1_anim_cb);
|
||||
lv_anim_set_var(&a, arc);
|
||||
@@ -672,7 +672,7 @@ static void analytics_create(lv_obj_t * parent)
|
||||
lv_obj_set_style_arc_opa(arc, 0, 0);
|
||||
lv_obj_set_style_arc_width(arc, 15, LV_PART_INDICATOR);
|
||||
lv_obj_set_style_arc_color(arc, lv_palette_main(LV_PALETTE_RED), LV_PART_INDICATOR);
|
||||
lv_obj_clear_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_center(arc);
|
||||
|
||||
lv_anim_set_exec_cb(&a, scale1_indic1_anim_cb);
|
||||
@@ -688,7 +688,7 @@ static void analytics_create(lv_obj_t * parent)
|
||||
lv_obj_set_style_arc_opa(arc, 0, 0);
|
||||
lv_obj_set_style_arc_width(arc, 15, LV_PART_INDICATOR);
|
||||
lv_obj_set_style_arc_color(arc, lv_palette_main(LV_PALETTE_GREEN), LV_PART_INDICATOR);
|
||||
lv_obj_clear_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_center(arc);
|
||||
|
||||
lv_anim_set_exec_cb(&a, scale1_indic1_anim_cb);
|
||||
@@ -710,7 +710,7 @@ static void analytics_create(lv_obj_t * parent)
|
||||
lv_obj_set_style_arc_width(arc, 10, LV_PART_INDICATOR);
|
||||
lv_obj_set_style_arc_rounded(arc, false, LV_PART_INDICATOR);
|
||||
lv_obj_set_style_arc_color(arc, lv_palette_main(LV_PALETTE_BLUE), LV_PART_INDICATOR);
|
||||
lv_obj_clear_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_center(arc);
|
||||
|
||||
arc = lv_arc_create(scale2);
|
||||
@@ -721,7 +721,7 @@ static void analytics_create(lv_obj_t * parent)
|
||||
lv_obj_set_style_arc_width(arc, 20, LV_PART_INDICATOR);
|
||||
lv_obj_set_style_arc_rounded(arc, false, LV_PART_INDICATOR);
|
||||
lv_obj_set_style_arc_color(arc, lv_palette_main(LV_PALETTE_RED), LV_PART_INDICATOR);
|
||||
lv_obj_clear_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_center(arc);
|
||||
|
||||
arc = lv_arc_create(scale2);
|
||||
@@ -731,7 +731,7 @@ static void analytics_create(lv_obj_t * parent)
|
||||
lv_obj_set_style_arc_width(arc, 30, LV_PART_INDICATOR);
|
||||
lv_obj_set_style_arc_rounded(arc, false, LV_PART_INDICATOR);
|
||||
lv_obj_set_style_arc_color(arc, lv_palette_main(LV_PALETTE_GREEN), LV_PART_INDICATOR);
|
||||
lv_obj_clear_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_center(arc);
|
||||
|
||||
lv_timer_t * scale2_timer = lv_timer_create(scale2_timer_cb, 100, scale2);
|
||||
@@ -999,7 +999,7 @@ static void color_changer_create(lv_obj_t * parent)
|
||||
lv_obj_set_style_opa(c, LV_OPA_TRANSP, 0);
|
||||
lv_obj_set_size(c, 20, 20);
|
||||
lv_obj_add_event(c, color_event_cb, LV_EVENT_ALL, &palette[i]);
|
||||
lv_obj_clear_flag(c, LV_OBJ_FLAG_SCROLL_ON_FOCUS);
|
||||
lv_obj_remove_flag(c, LV_OBJ_FLAG_SCROLL_ON_FOCUS);
|
||||
}
|
||||
|
||||
lv_obj_t * btn = lv_button_create(parent);
|
||||
@@ -1216,7 +1216,7 @@ static void ta_event_cb(lv_event_t * e)
|
||||
lv_obj_set_style_max_height(kb, LV_HOR_RES * 2 / 3, 0);
|
||||
lv_obj_update_layout(tv); /*Be sure the sizes are recalculated*/
|
||||
lv_obj_set_height(tv, LV_VER_RES - lv_obj_get_height(kb));
|
||||
lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_remove_flag(kb, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_scroll_to_view_recursive(ta, LV_ANIM_OFF);
|
||||
lv_indev_wait_release(lv_event_get_param(e));
|
||||
}
|
||||
@@ -1272,9 +1272,9 @@ static void calendar_event_cb(lv_event_t * e)
|
||||
lv_snprintf(buf, sizeof(buf), "%02d.%02d.%d", d.day, d.month, d.year);
|
||||
lv_textarea_set_text(ta, buf);
|
||||
|
||||
lv_obj_del(calendar);
|
||||
lv_obj_delete(calendar);
|
||||
calendar = NULL;
|
||||
lv_obj_clear_flag(lv_layer_top(), LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(lv_layer_top(), LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_set_style_bg_opa(lv_layer_top(), LV_OPA_TRANSP, 0);
|
||||
}
|
||||
}
|
||||
@@ -1494,7 +1494,7 @@ static void scale2_event_cb(lv_event_t * e)
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
if(code == LV_EVENT_DELETE) {
|
||||
lv_timer_t * scale2_timer = lv_event_get_user_data(e);
|
||||
if(scale2_timer) lv_timer_del(scale2_timer);
|
||||
if(scale2_timer) lv_timer_delete(scale2_timer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -675,7 +675,7 @@ Fixes
|
||||
`25ce6e3 <https://github.com/lvgl/lvgl/commit/25ce6e3ae9e144e2df5dad34475dda3542015f6a>`__
|
||||
- fix(indev): do not send keys to objects in disabled state
|
||||
`b0a46c4 <https://github.com/lvgl/lvgl/commit/b0a46c4837c922cb1303ef768da3209e7efa45ae>`__
|
||||
- fix(disp): make lv_scr_load work better with lv_scr_load_anim and
|
||||
- fix(disp): make lv_screen_load work better with lv_screen_load_anim and
|
||||
auto_del = true
|
||||
`52287fd <https://github.com/lvgl/lvgl/commit/52287fd64ad59c35794d1f4486b777f4eb686abc>`__
|
||||
- fix(draw): create intermediate layer for blend modes too
|
||||
@@ -1084,7 +1084,7 @@ Fixes
|
||||
`2944 <https://github.com/littlevgl/lvgl/pull/2944>`__
|
||||
- fix(rlottie): fix variable name
|
||||
`2971 <https://github.com/littlevgl/lvgl/pull/2971>`__
|
||||
- fix(group): in lv_group_del() remove group from indev (lvgl#2963)
|
||||
- fix(group): in lv_group_delete() remove group from indev (lvgl#2963)
|
||||
`2964 <https://github.com/littlevgl/lvgl/pull/2964>`__
|
||||
- fix(obj): old parent's scroll is not updated in lv_obj_set_parent()
|
||||
`2965 <https://github.com/littlevgl/lvgl/pull/2965>`__
|
||||
@@ -1623,7 +1623,7 @@ New Features
|
||||
- feat(event) add LV_SCREEN\_(UN)LOAD_START
|
||||
`7bae9e3 <https://github.com/lvgl/lvgl/commit/7bae9e3ddde9d6bdc06ae437f20a789cd330a556>`__
|
||||
|
||||
- feat(obj) add lv_obj_del_delayed()
|
||||
- feat(obj) add lv_obj_delete_delayed()
|
||||
`c6a2e15 <https://github.com/lvgl/lvgl/commit/c6a2e15ec23c8e96f71bafa8e43ef67fc4a73d0a>`__
|
||||
|
||||
- feat(docs) add view on GitHub link
|
||||
@@ -1811,7 +1811,7 @@ Fixes
|
||||
and lv_tick_inc()
|
||||
`2675 <https://github.com/lvgl/lvgl/pull/2675>`__
|
||||
|
||||
- fix(anim_timeline) avoid calling lv_anim_del(NULL, NULL)
|
||||
- fix(anim_timeline) avoid calling lv_anim_delete(NULL, NULL)
|
||||
`2628 <https://github.com/lvgl/lvgl/pull/2628>`__
|
||||
|
||||
- fix(kconfig) sync Kconfig with the latest lv_conf_template.h
|
||||
@@ -2245,7 +2245,7 @@ Fixes
|
||||
`e41c507 <https://github.com/lvgl/lvgl/commit/e41c50780495c7d6ac6a2b0edf12fc98c9d85a6b>`__
|
||||
|
||||
- fix(disp) be sure the pending scr load animation is finished in
|
||||
lv_scr_load_anim
|
||||
lv_screen_load_anim
|
||||
`eb6ae52 <https://github.com/lvgl/lvgl/commit/eb6ae526432453e4b9dbc7a760cd65d164050548>`__
|
||||
|
||||
- fix(color) fox color premult precision with 16-bit color depth
|
||||
@@ -2999,7 +2999,7 @@ Others
|
||||
- Fix typo in commands to build rlottie
|
||||
`2723 <https://github.com/lvgl/lvgl/pull/2723>`__
|
||||
|
||||
- del(.gitmodules): delete .gitmodules
|
||||
- delete(.gitmodules): delete .gitmodules
|
||||
`2718 <https://github.com/lvgl/lvgl/pull/2718>`__
|
||||
|
||||
- lv_obj_draw_part_dsc_t.text_length added
|
||||
@@ -3542,7 +3542,7 @@ v7.8.1 (15.12.2020)
|
||||
Bugfixes
|
||||
~~~~~~~~
|
||||
|
||||
- fix(lv_scr_load_anim) fix when multiple screens are loaded at the
|
||||
- fix(lv_screen_load_anim) fix when multiple screens are loaded at the
|
||||
same time with delay
|
||||
- fix(page) fix LV_SCROLLBAR_MODE_DRAG
|
||||
|
||||
@@ -3822,7 +3822,7 @@ v7.2.0 (21.07.2020)
|
||||
New features
|
||||
~~~~~~~~~~~~
|
||||
|
||||
- Add screen transitions with lv_scr_load_anim()
|
||||
- Add screen transitions with lv_screen_load_anim()
|
||||
- Add display background color, wallpaper and opacity. Shown when the
|
||||
screen is transparent. Can be used with
|
||||
lv_disp_set_bg_opa/color/image().
|
||||
|
||||
@@ -88,7 +88,7 @@ A simple example
|
||||
btn.align(lv.ALIGN.CENTER, 0, 0)
|
||||
label = lv.label(btn)
|
||||
label.set_text('Hello World!')
|
||||
lv.scr_load(scr)
|
||||
lv.screen_load(scr)
|
||||
|
||||
|
||||
How can I use it?
|
||||
|
||||
@@ -59,7 +59,7 @@ LV_ARC
|
||||
import PikaStdLib
|
||||
mem = PikaStdLib.MemChecker()
|
||||
# Create an Arc
|
||||
arc = lv.arc(lv.scr_act())
|
||||
arc = lv.arc(lv.screen_active())
|
||||
arc.set_end_angle(200)
|
||||
arc.set_size(150, 150)
|
||||
arc.center()
|
||||
@@ -75,7 +75,7 @@ LV_BAR
|
||||
import pika_lvgl as lv
|
||||
import PikaStdLib
|
||||
mem = PikaStdLib.MemChecker()
|
||||
bar1 = lv.bar(lv.scr_act())
|
||||
bar1 = lv.bar(lv.screen_active())
|
||||
bar1.set_size(200, 20)
|
||||
bar1.center()
|
||||
bar1.set_value(70, lv.ANIM.OFF)
|
||||
@@ -97,9 +97,9 @@ LV_BTN
|
||||
def event_cb_2(evt):
|
||||
print('in evt2')
|
||||
print('mem used now: %0.2f kB' % (mem.getNow()))
|
||||
btn1 = lv.btn(lv.scr_act())
|
||||
btn1 = lv.btn(lv.screen_active())
|
||||
btn1.align(lv.ALIGN.TOP_MID, 0, 10)
|
||||
btn2 = lv.btn(lv.scr_act())
|
||||
btn2 = lv.btn(lv.screen_active())
|
||||
btn2.align(lv.ALIGN.TOP_MID, 0, 50)
|
||||
btn1.add_event(event_cb_1, lv.EVENT.CLICKED, 0)
|
||||
btn2.add_event(event_cb_2, lv.EVENT.CLICKED, 0)
|
||||
@@ -115,18 +115,18 @@ LV_CHECKBOX
|
||||
import pika_lvgl as lv
|
||||
import PikaStdLib
|
||||
mem = PikaStdLib.MemChecker()
|
||||
cb = lv.checkbox(lv.scr_act())
|
||||
cb = lv.checkbox(lv.screen_active())
|
||||
cb.set_text("Apple")
|
||||
cb.align(lv.ALIGN.TOP_LEFT, 0 ,0)
|
||||
cb = lv.checkbox(lv.scr_act())
|
||||
cb = lv.checkbox(lv.screen_active())
|
||||
cb.set_text("Banana")
|
||||
cb.add_state(lv.STATE.CHECKED)
|
||||
cb.align(lv.ALIGN.TOP_LEFT, 0 ,30)
|
||||
cb = lv.checkbox(lv.scr_act())
|
||||
cb = lv.checkbox(lv.screen_active())
|
||||
cb.set_text("Lemon")
|
||||
cb.add_state(lv.STATE.DISABLED)
|
||||
cb.align(lv.ALIGN.TOP_LEFT, 0 ,60)
|
||||
cb = lv.checkbox(lv.scr_act())
|
||||
cb = lv.checkbox(lv.screen_active())
|
||||
cb.add_state(lv.STATE.CHECKED | lv.STATE.DISABLED)
|
||||
cb.set_text("Melon")
|
||||
cb.align(lv.ALIGN.TOP_LEFT, 0 ,90)
|
||||
|
||||
@@ -74,7 +74,7 @@ Leveraging Zephyr Features
|
||||
Shell
|
||||
~~~~~
|
||||
|
||||
Zephyr includes a powerful shell implementation that can be enabled with the Kconfig symbols
|
||||
Zephyr includes a powerful shell implementation that can be enabled with the Kconfig symbols
|
||||
:code:`CONFIG_SHELL` and :code:`CONFIG_LV_Z_SHELL` (the demos from above have it enabled by default).
|
||||
|
||||
The shell offers enabling/disabling of LVGL monkeys:
|
||||
@@ -130,7 +130,7 @@ Example with the encoder device to assign a :code:`lv_group_t`:
|
||||
lv_obj_t *arc;
|
||||
lv_group_t *arc_group;
|
||||
|
||||
arc = lv_arc_create(lv_scr_act());
|
||||
arc = lv_arc_create(lv_screen_active());
|
||||
lv_obj_align(arc, LV_ALIGN_CENTER, 0, 0);
|
||||
lv_obj_set_size(arc, 150, 150);
|
||||
|
||||
|
||||
@@ -59,11 +59,11 @@ the *main.c* file. \* Create some frame buffer(s) as global variables:
|
||||
.. code:: c
|
||||
|
||||
// Change the active screen's background color
|
||||
lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0x003a57), LV_PART_MAIN);
|
||||
lv_obj_set_style_text_color(lv_scr_act(), lv_color_hex(0xffffff), LV_PART_MAIN);
|
||||
lv_obj_set_style_bg_color(lv_screen_active(), lv_color_hex(0x003a57), LV_PART_MAIN);
|
||||
lv_obj_set_style_text_color(lv_screen_active(), lv_color_hex(0xffffff), LV_PART_MAIN);
|
||||
|
||||
/*Create a spinner*/
|
||||
lv_obj_t * spinner = lv_spinner_create(lv_scr_act(), 1000, 60);
|
||||
lv_obj_t * spinner = lv_spinner_create(lv_screen_active(), 1000, 60);
|
||||
lv_obj_set_size(spinner, 64, 64);
|
||||
lv_obj_align(spinner, LV_ALIGN_BOTTOM_MID, 0, 0);
|
||||
|
||||
@@ -87,7 +87,7 @@ the *main.c* file. \* Create some frame buffer(s) as global variables:
|
||||
void SysTick_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN SysTick_IRQn 0 */
|
||||
|
||||
|
||||
HAL_SYSTICK_IRQHandler();
|
||||
lv_tick_inc(1);
|
||||
#ifdef USE_RTOS_SYSTICK
|
||||
@@ -183,11 +183,11 @@ variables:
|
||||
.. code:: c
|
||||
|
||||
// Change the active screen's background color
|
||||
lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0x003a57), LV_PART_MAIN);
|
||||
lv_obj_set_style_text_color(lv_scr_act(), lv_color_hex(0xffffff), LV_PART_MAIN);
|
||||
|
||||
lv_obj_set_style_bg_color(lv_screen_active(), lv_color_hex(0x003a57), LV_PART_MAIN);
|
||||
lv_obj_set_style_text_color(lv_screen_active(), lv_color_hex(0xffffff), LV_PART_MAIN);
|
||||
|
||||
/*Create a spinner*/
|
||||
lv_obj_t * spinner = lv_spinner_create(lv_scr_act(), 1000, 60);
|
||||
lv_obj_t * spinner = lv_spinner_create(lv_screen_active(), 1000, 60);
|
||||
lv_obj_set_size(spinner, 64, 64);
|
||||
lv_obj_align(spinner, LV_ALIGN_BOTTOM_MID, 0, 0);
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ A simple example
|
||||
.. code:: python
|
||||
|
||||
lv.start() # start LVGL
|
||||
scr = lv.scr_act() # get default screen
|
||||
scr = lv.screen_active() # get default screen
|
||||
btn = lv.btn(scr) # create button
|
||||
btn.center()
|
||||
label = lv.label(btn) # create a label in the button
|
||||
|
||||
@@ -16,8 +16,8 @@ Instead of porting LVGL to embedded hardware straight away, it's highly
|
||||
recommended to get started in a simulator first.
|
||||
|
||||
LVGL is ported to many IDEs to be sure you will find your favorite one.
|
||||
Go to the :ref:`simulator` section to get ready-to-use projects that can be run
|
||||
on your PC. This way you can save the time of porting for now and get some
|
||||
Go to the :ref:`simulator` section to get ready-to-use projects that can be run
|
||||
on your PC. This way you can save the time of porting for now and get some
|
||||
experience with LVGL immediately.
|
||||
|
||||
Add LVGL into your project
|
||||
@@ -126,8 +126,8 @@ other words, the parts of the children outside the parent are clipped.
|
||||
|
||||
A Screen is the "root" parent. You can have any number of screens.
|
||||
|
||||
To get the current screen call :cpp:func:`lv_scr_act`, and to load a screen
|
||||
use :cpp:expr:`lv_scr_load(scr1)`.
|
||||
To get the current screen call :cpp:func:`lv_screen_active`, and to load a screen
|
||||
use :cpp:expr:`lv_screen_load(scr1)`.
|
||||
|
||||
You can create a new object with ``lv_<type>_create(parent)``. It will
|
||||
return an :cpp:type:`lv_obj_t` ``*`` variable that can be used as a reference to the
|
||||
@@ -137,7 +137,7 @@ For example:
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_obj_t * slider1 = lv_slider_create(lv_scr_act());
|
||||
lv_obj_t * slider1 = lv_slider_create(lv_screen_active());
|
||||
|
||||
To set some basic attributes ``lv_obj_set_<parameter_name>(obj, <value>)`` functions can be used. For
|
||||
example:
|
||||
@@ -239,7 +239,7 @@ To manually add or remove states use:
|
||||
.. code:: c
|
||||
|
||||
lv_obj_add_state(obj, LV_STATE_...);
|
||||
lv_obj_clear_state(obj, LV_STATE_...);
|
||||
lv_obj_remove_state(obj, LV_STATE_...);
|
||||
|
||||
Styles
|
||||
~~~~~~
|
||||
@@ -342,9 +342,9 @@ Learn more about :ref:`micropython`.
|
||||
# Create a Button and a Label
|
||||
scr = lv.obj()
|
||||
btn = lv.btn(scr)
|
||||
btn.align(lv.scr_act(), lv.ALIGN.CENTER, 0, 0)
|
||||
btn.align(lv.screen_active(), lv.ALIGN.CENTER, 0, 0)
|
||||
label = lv.label(btn)
|
||||
label.set_text("Button")
|
||||
|
||||
# Load the screen
|
||||
lv.scr_load(scr)
|
||||
lv.screen_load(scr)
|
||||
|
||||
@@ -12,11 +12,11 @@ First, Download FreeType from `here <https://sourceforge.net/projects/freetype/f
|
||||
|
||||
There are two ways to use FreeType: ### For UNIX For UNIX systems, it is
|
||||
recommended to use the way of compiling and installing libraries. -
|
||||
Enter the FreeType source code directory.
|
||||
Enter the FreeType source code directory.
|
||||
|
||||
- ``make``
|
||||
- ``make``
|
||||
- ``sudo make install``
|
||||
- Add include path: ``/usr/include/freetype2`` (for GCC: ``-I/usr/include/freetype2 -L/usr/local/lib``)
|
||||
- Add include path: ``/usr/include/freetype2`` (for GCC: ``-I/usr/include/freetype2 -L/usr/local/lib``)
|
||||
- Link library: ``freetype`` (for GCC: ``-L/usr/local/lib -lfreetype``)
|
||||
|
||||
For Embedded Devices
|
||||
@@ -58,11 +58,11 @@ Usage
|
||||
|
||||
Enable :c:macro:`LV_USE_FREETYPE` in ``lv_conf.h``.
|
||||
|
||||
Cache configuration:
|
||||
Cache configuration:
|
||||
|
||||
- :c:macro:`LV_FREETYPE_CACHE_SIZE` Maximum memory(Bytes) used to cache font bitmap, outline, character maps, etc.
|
||||
:Note: This value does not include the memory used by ``FT_Face`` and ``FT_Size`` objects
|
||||
- :c:macro:`LV_FREETYPE_CACHE_FT_FACES`: Maximum open number of ``FT_Face`` objects.
|
||||
:Note: This value does not include the memory used by ``FT_Face`` and ``FT_Size`` objects
|
||||
- :c:macro:`LV_FREETYPE_CACHE_FT_FACES`: Maximum open number of ``FT_Face`` objects.
|
||||
- :c:macro:`LV_FREETYPE_CACHE_FT_SIZES`: Maximum open number of ``FT_Size`` objects.
|
||||
|
||||
When you are sure that all the used font sizes will not be greater than
|
||||
@@ -78,7 +78,7 @@ interface, you can enable :c:macro:`LV_FREETYPE_USE_LVGL_PORT` in
|
||||
``lv_conf.h``, convenient for unified management.
|
||||
|
||||
The font style supports *Italic* and **Bold** fonts processed by
|
||||
software, and can be set with reference to the following values:
|
||||
software, and can be set with reference to the following values:
|
||||
|
||||
- :c:enumerator:`LV_FREETYPE_FONT_STYLE_NORMAL`: Default style.
|
||||
- :c:enumerator:`LV_FREETYPE_FONT_STYLE_ITALIC`: Italic style.
|
||||
@@ -88,7 +88,7 @@ They can be combined.eg:
|
||||
:c:expr:`LV_FREETYPE_FONT_STYLE_BOLD | LV_FREETYPE_FONT_STYLE_ITALIC`.
|
||||
|
||||
Use the :c:expr:`lv_freetype_font_create()` function to create a font. To
|
||||
delete a font, use :c:expr:`lv_freetype_font_del()`. For more detailed usage,
|
||||
delete a font, use :c:expr:`lv_freetype_font_delete()`. For more detailed usage,
|
||||
please refer to example code.
|
||||
|
||||
Example
|
||||
|
||||
@@ -56,7 +56,7 @@ Usage
|
||||
|
||||
Enable :c:macro:`LV_USE_FILE_EXPLORER` in ``lv_conf.h``.
|
||||
|
||||
First use :c:expr:`lv_file_explorer_create(lv_scr_act())` to create a file
|
||||
First use :c:expr:`lv_file_explorer_create(lv_screen_active())` to create a file
|
||||
explorer, The default size is the screen size. After that, you can
|
||||
customize the style like widget.
|
||||
|
||||
@@ -80,7 +80,7 @@ customize the style like widget.
|
||||
|
||||
在 ``lv_conf.h`` 中打开 :c:macro:`LV_USE_FILE_EXPLORER`\ 。
|
||||
|
||||
首先,使用 :c:expr:`lv_file_explorer_create(lv_scr_act())`
|
||||
首先,使用 :c:expr:`lv_file_explorer_create(lv_screen_active())`
|
||||
函数创建一个文件浏览器,默认大小为屏幕大小,之后可以像组件那样自定义样式。
|
||||
|
||||
.. raw:: html
|
||||
|
||||
@@ -48,7 +48,7 @@ Usage
|
||||
|
||||
Enable :c:macro:`LV_USE_IME_PINYIN` in ``lv_conf.h``.
|
||||
|
||||
First use :c:expr:`lv_ime_pinyin_create(lv_scr_act())` to create a Pinyin
|
||||
First use :c:expr:`lv_ime_pinyin_create(lv_screen_active())` to create a Pinyin
|
||||
input method plug-in, then use
|
||||
:c:expr:`lv_ime_pinyin_set_keyboard(pinyin_ime, kb)` to add the ``keyboard``
|
||||
you created to the Pinyin input method plug-in. You can use
|
||||
@@ -85,7 +85,7 @@ the keyboard and dictionary at any time.
|
||||
|
||||
在 ``lv_conf.h`` 中打开 :c:macro:`LV_USE_IME_PINYIN`\ 。
|
||||
|
||||
首先,使用 :c:expr:`lv_ime_pinyin_create(lv_scr_act())`
|
||||
首先,使用 :c:expr:`lv_ime_pinyin_create(lv_screen_active())`
|
||||
函数创建一个拼音输入法插件, 然后使用
|
||||
:c:expr:`lv_ime_pinyin_set_keyboard(pinyin_ime, kb)`
|
||||
函数将您创建的键盘组件添加到插件中。
|
||||
@@ -248,7 +248,7 @@ only need to call this function to set up and use your dictionary:
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_obj_t * pinyin_ime = lv_100ask_pinyin_ime_create(lv_scr_act());
|
||||
lv_obj_t * pinyin_ime = lv_100ask_pinyin_ime_create(lv_screen_active());
|
||||
lv_100ask_pinyin_ime_set_dict(pinyin_ime, your_pinyin_dict);
|
||||
|
||||
Modes
|
||||
|
||||
@@ -18,7 +18,7 @@ random operations at random times within this range. Call
|
||||
|
||||
If you want to pause the monkey, call
|
||||
:c:expr:`lv_monkey_set_enable(monkey, false)`. To delete the monkey, call
|
||||
:c:expr:`lv_monkey_del(monkey)`.
|
||||
:c:expr:`lv_monkey_delete(monkey)`.
|
||||
|
||||
Note that ``input_range`` has different meanings in different ``type``:
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ pixels so *20* means *20 px/sec* speed.
|
||||
Delete animations
|
||||
*****************
|
||||
|
||||
You can delete an animation with :cpp:expr:`lv_anim_del(var, func)` if you
|
||||
You can delete an animation with :cpp:expr:`lv_anim_delete(var, func)` if you
|
||||
provide the animated variable and its animator function.
|
||||
|
||||
Timeline
|
||||
@@ -159,7 +159,7 @@ duration of the entire animation timeline.
|
||||
Call :cpp:expr:`lv_anim_timeline_get_reverse(at)` function to get whether to
|
||||
reverse the animation timeline.
|
||||
|
||||
Call :cpp:expr:`lv_anim_timeline_del(at)` function to delete the animation
|
||||
Call :cpp:expr:`lv_anim_timeline_delete(at)` function to delete the animation
|
||||
timeline.
|
||||
|
||||
.. image:: /misc/anim-timeline.png
|
||||
|
||||
@@ -11,11 +11,11 @@ implementation of CSS but a comparable subset is implemented (sometimes
|
||||
with minor adjustments).
|
||||
|
||||
In short this means: - Explicitly set coordinates are stored in styles
|
||||
(size, position, layouts, etc.)
|
||||
(size, position, layouts, etc.)
|
||||
|
||||
- support min-width, max-width, min-height, max-height
|
||||
- have pixel, percentage, and "content" units
|
||||
- x=0; y=0 coordinate means the top-left corner of the parent plus the left/top padding plus border width
|
||||
- have pixel, percentage, and "content" units
|
||||
- x=0; y=0 coordinate means the top-left corner of the parent plus the left/top padding plus border width
|
||||
- width/height means the full size, the "content area" is smaller with padding and border width - a subset
|
||||
of flexbox and grid layouts are supported
|
||||
|
||||
@@ -290,7 +290,7 @@ Here are some examples to set an object's size using a style:
|
||||
lv_style_init(&style);
|
||||
lv_style_set_width(&style, 100);
|
||||
|
||||
lv_obj_t * btn = lv_btn_create(lv_scr_act());
|
||||
lv_obj_t * btn = lv_btn_create(lv_screen_active());
|
||||
lv_obj_add_style(btn, &style, LV_PART_MAIN);
|
||||
|
||||
As you will see below there are some other great features of size and
|
||||
@@ -453,7 +453,7 @@ behave with layouts:
|
||||
- :cpp:enumerator:`LV_OBJ_FLAG_IGNORE_LAYOUT` The object is simply ignored by the layouts. Its coordinates can be set as usual.
|
||||
- :cpp:enumerator:`LV_OBJ_FLAG_FLOATING` Same as :cpp:enumerator:`LV_OBJ_FLAG_IGNORE_LAYOUT` but the object with :cpp:enumerator:`LV_OBJ_FLAG_FLOATING` will be ignored in :c:macro:`LV_SIZE_CONTENT` calculations.
|
||||
|
||||
These flags can be added/removed with :cpp:expr:`lv_obj_add_flag(obj, FLAG)` and :cpp:expr:`lv_obj_clear_flag(obj, FLAG)`
|
||||
These flags can be added/removed with :cpp:expr:`lv_obj_add_flag(obj, FLAG)` and :cpp:expr:`lv_obj_remove_flag(obj, FLAG)`
|
||||
|
||||
Adding new layouts
|
||||
------------------
|
||||
@@ -472,7 +472,7 @@ LVGL can be freely extended by a custom layout like this:
|
||||
|
||||
void my_layout_update(lv_obj_t * obj, void * user_data)
|
||||
{
|
||||
/*Will be called automatically if it's required to reposition/resize the children of "obj" */
|
||||
/*Will be called automatically if it's required to reposition/resize the children of "obj" */
|
||||
}
|
||||
|
||||
Custom style properties can be added which can be retrieved and used in
|
||||
|
||||
@@ -34,7 +34,7 @@ Therefore, the whole concept of multi-display handling is completely
|
||||
hidden if you register only one display. By default, the last created
|
||||
(and only) display is used.
|
||||
|
||||
:cpp:func:`lv_scr_act`, :cpp:func:`lv_scr_load`, :cpp:func:`lv_layer_top`,
|
||||
:cpp:func:`lv_screen_active`, :cpp:func:`lv_screen_load`, :cpp:func:`lv_layer_top`,
|
||||
:cpp:func:`lv_layer_sys`, :c:macro:`LV_HOR_RES` and :c:macro:`LV_VER_RES` are always applied
|
||||
on the most recently created (default) display. If you pass ``NULL`` as
|
||||
``disp`` parameter to display related functions the default display will
|
||||
@@ -84,14 +84,14 @@ To create a screen, use
|
||||
``lv_obj_t * scr = lv_<type>_create(NULL, copy)``. ``copy`` can be an
|
||||
existing screen copied into the new screen.
|
||||
|
||||
To load a screen, use :cpp:expr:`lv_scr_load(scr)`. To get the active screen,
|
||||
use :cpp:expr:`lv_scr_act()`. These functions work on the default display. If
|
||||
To load a screen, use :cpp:expr:`lv_screen_load(scr)`. To get the active screen,
|
||||
use :cpp:expr:`lv_screen_active()`. These functions work on the default display. If
|
||||
you want to specify which display to work on, use
|
||||
:cpp:expr:`lv_disp_get_scr_act(disp)` and :cpp:expr:`lv_disp_load_scr(disp, scr)`. A
|
||||
:cpp:expr:`lv_disp_get_screen_act(disp)` and :cpp:expr:`lv_disp_load_scr(disp, scr)`. A
|
||||
screen can be loaded with animations too. Read more
|
||||
`here <object.html#load-screens>`__.
|
||||
|
||||
Screens can be deleted with :cpp:expr:`lv_obj_del(scr)`, but ensure that you do
|
||||
Screens can be deleted with :cpp:expr:`lv_obj_delete(scr)`, but ensure that you do
|
||||
not delete the currently loaded screen.
|
||||
|
||||
Transparent screens
|
||||
@@ -114,9 +114,9 @@ In summary, to enable transparent screens and displays for OSD menu-like
|
||||
UIs:
|
||||
|
||||
- Set the screen's ``bg_opa`` to transparent:
|
||||
:cpp:expr:`lv_obj_set_style_bg_opa(lv_scr_act(), LV_OPA_TRANSP, 0)`
|
||||
:cpp:expr:`lv_obj_set_style_bg_opa(lv_screen_active(), LV_OPA_TRANSP, 0)`
|
||||
- Set the bottom layer's ``bg_opa`` to transparent:
|
||||
:cpp:expr:`lv_obj_set_style_bg_opa(lv_scr_act(), LV_OPA_TRANSP, 0)`
|
||||
:cpp:expr:`lv_obj_set_style_bg_opa(lv_screen_active(), LV_OPA_TRANSP, 0)`
|
||||
- Set the screen's bg_opa to 0:
|
||||
:cpp:expr:`lv_obj_set_style_bg_opa(lv_layer_bottom(), LV_OPA_TRANSP, 0)`
|
||||
- Set a color format with alpha channel. E.g.
|
||||
|
||||
@@ -5,11 +5,11 @@ Events
|
||||
======
|
||||
|
||||
Events are triggered in LVGL when something happens which might be
|
||||
interesting to the user, e.g. when an object:
|
||||
interesting to the user, e.g. when an object:
|
||||
|
||||
- is clicked
|
||||
- is clicked
|
||||
- is scrolled
|
||||
- has its value changed
|
||||
- has its value changed
|
||||
- is redrawn, etc.
|
||||
|
||||
Add events to the object
|
||||
@@ -20,7 +20,7 @@ In practice, it looks like this:
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_obj_t * btn = lv_btn_create(lv_scr_act());
|
||||
lv_obj_t * btn = lv_btn_create(lv_screen_active());
|
||||
lv_obj_add_event(btn, my_event_cb, LV_EVENT_CLICKED, NULL); /*Assign an event callback*/
|
||||
|
||||
...
|
||||
@@ -132,7 +132,7 @@ Other events
|
||||
- :cpp:enumerator:`LV_EVENT_STYLE_CHANGED`: Object's style has changed
|
||||
- :cpp:enumerator:`LV_EVENT_BASE_DIR_CHANGED`: The base dir has changed
|
||||
- :cpp:enumerator:`LV_EVENT_GET_SELF_SIZE`: Get the internal size of a widget
|
||||
- :cpp:enumerator:`LV_EVENT_SCREEN_UNLOAD_START`: A screen unload started, fired immediately when lv_scr_load/lv_scr_load_anim is called
|
||||
- :cpp:enumerator:`LV_EVENT_SCREEN_UNLOAD_START`: A screen unload started, fired immediately when lv_screen_load/lv_screen_load_anim is called
|
||||
- :cpp:enumerator:`LV_EVENT_SCREEN_LOAD_START`: A screen load started, fired when the screen change delay is expired
|
||||
- :cpp:enumerator:`LV_EVENT_SCREEN_LOADED`: A screen was loaded, called when all animations are finished
|
||||
- :cpp:enumerator:`LV_EVENT_SCREEN_UNLOADED`: A screen was unloaded, called when all animations are finished
|
||||
@@ -174,18 +174,18 @@ Refresh event
|
||||
-------------
|
||||
|
||||
:cpp:enumerator:`LV_EVENT_REFRESH` is a special event because it's designed to let the
|
||||
user notify an object to refresh itself. Some examples:
|
||||
user notify an object to refresh itself. Some examples:
|
||||
|
||||
- notify a label to refresh its text according to one or more variables (e.g. current time)
|
||||
- refresh a label when the language changes
|
||||
- enable a button if some conditions are met (e.g. the correct PIN is entered)
|
||||
- notify a label to refresh its text according to one or more variables (e.g. current time)
|
||||
- refresh a label when the language changes
|
||||
- enable a button if some conditions are met (e.g. the correct PIN is entered)
|
||||
- add/remove styles to/from an object if a limit is exceeded, etc
|
||||
|
||||
Fields of lv_event_t
|
||||
********************
|
||||
|
||||
:cpp:type:`lv_event_t` is the only parameter passed to the event callback and it
|
||||
contains all data about the event. The following values can be gotten from it:
|
||||
contains all data about the event. The following values can be gotten from it:
|
||||
|
||||
- :cpp:expr:`lv_event_get_code(e)`: get the event code
|
||||
- :cpp:expr:`lv_event_get_current_target(e)`: get the object to which an event was sent. I.e. the object whose event handler is being called.
|
||||
|
||||
@@ -33,7 +33,7 @@ To test it try
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_obj_t * label1 = lv_label_create(lv_scr_act(), NULL);
|
||||
lv_obj_t * label1 = lv_label_create(lv_screen_active(), NULL);
|
||||
lv_label_set_text(label1, LV_SYMBOL_OK);
|
||||
|
||||
If all works well, a ✓ character should be displayed.
|
||||
@@ -135,20 +135,20 @@ The default base direction for screens can be set by
|
||||
base direction from their parent.
|
||||
|
||||
To set an object's base direction use :cpp:expr:`lv_obj_set_base_dir(obj, base_dir)`.
|
||||
The possible base directions are:
|
||||
The possible base directions are:
|
||||
|
||||
- :cpp:enumerator:`LV_BASE_DIR_LTR`: Left to Right base direction
|
||||
- :cpp:enumerator:`LV_BASE_DIR_RTL`: Right to Left base direction
|
||||
- :cpp:enumerator:`LV_BASE_DIR_AUTO`: Auto detect base direction
|
||||
|
||||
This list summarizes the effect of RTL base direction on objects:
|
||||
This list summarizes the effect of RTL base direction on objects:
|
||||
|
||||
- Create objects by default on the right
|
||||
- ``lv_tabview``: Displays tabs from right to left
|
||||
- ``lv_checkbox``: Shows the box on the right
|
||||
- ``lv_btnmatrix``: Shows buttons from right to left
|
||||
- ``lv_list``: Shows icons on the right
|
||||
- ``lv_dropdown``: Aligns options to the right
|
||||
- Create objects by default on the right
|
||||
- ``lv_tabview``: Displays tabs from right to left
|
||||
- ``lv_checkbox``: Shows the box on the right
|
||||
- ``lv_btnmatrix``: Shows buttons from right to left
|
||||
- ``lv_list``: Shows icons on the right
|
||||
- ``lv_dropdown``: Aligns options to the right
|
||||
- The texts in ``lv_table``, ``lv_btnmatrix``, ``lv_keyboard``, ``lv_tabview``, ``lv_dropdown``, ``lv_roller`` are "BiDi processed" to be displayed correctly
|
||||
|
||||
Arabic and Persian support
|
||||
@@ -162,9 +162,9 @@ should also be taken into account.
|
||||
|
||||
LVGL supports these rules if :c:macro:`LV_USE_ARABIC_PERSIAN_CHARS` is enabled.
|
||||
|
||||
However, there are some limitations:
|
||||
However, there are some limitations:
|
||||
|
||||
- Only displaying text is supported (e.g. on labels), text inputs (e.g. text area) don't support this feature.
|
||||
- Only displaying text is supported (e.g. on labels), text inputs (e.g. text area) don't support this feature.
|
||||
- Static text (i.e. const) is not processed. E.g. texts set by :cpp:func:`lv_label_set_text` will be "Arabic processed" but :cpp:func:`lv_label_set_text_static` won't.
|
||||
- Text get functions (e.g. :cpp:func:`lv_label_get_text`) will return the processed text.
|
||||
|
||||
@@ -179,9 +179,9 @@ letter anti-aliasing. Learn more
|
||||
`here <https://en.wikipedia.org/wiki/Subpixel_rendering>`__.
|
||||
|
||||
For subpixel rendering, the fonts need to be generated with special
|
||||
settings:
|
||||
settings:
|
||||
|
||||
- In the online converter tick the ``Subpixel`` box
|
||||
- In the online converter tick the ``Subpixel`` box
|
||||
- In the command line tool use ``--lcd`` flag. Note that the generated font needs about three times more memory.
|
||||
|
||||
Subpixel rendering works only if the color channels of the pixels have a
|
||||
@@ -194,18 +194,18 @@ however this can be swapped by setting :c:macro:`LV_SUBPX_BGR` ``1`` in
|
||||
Compressed fonts
|
||||
----------------
|
||||
|
||||
The bitmaps of fonts can be compressed by
|
||||
The bitmaps of fonts can be compressed by
|
||||
|
||||
- ticking the ``Compressed`` check box in the online converter
|
||||
- ticking the ``Compressed`` check box in the online converter
|
||||
- not passing the ``--no-compress`` flag to the offline converter (compression is applied by default)
|
||||
|
||||
Compression is more effective with larger fonts and higher bpp. However,
|
||||
it's about 30% slower to render compressed fonts. Therefore, it's
|
||||
recommended to compress only the largest fonts of a user interface,
|
||||
because
|
||||
because
|
||||
|
||||
- they need the most memory
|
||||
- they can be compressed better
|
||||
- they need the most memory
|
||||
- they can be compressed better
|
||||
- and probably they are used less frequently then the medium-sized fonts, so the performance cost is smaller.
|
||||
|
||||
.. _add_font:
|
||||
@@ -213,13 +213,13 @@ because
|
||||
Add a new font
|
||||
**************
|
||||
|
||||
There are several ways to add a new font to your project:
|
||||
There are several ways to add a new font to your project:
|
||||
|
||||
1. The simplest method is to use the `Online font converter <https://lvgl.io/tools/fontconverter>`__.
|
||||
1. The simplest method is to use the `Online font converter <https://lvgl.io/tools/fontconverter>`__.
|
||||
Just set the parameters, click the *Convert* button, copy the font to your project
|
||||
and use it. **Be sure to carefully read the steps provided on that site
|
||||
or you will get an error while converting.**
|
||||
2. Use the `Offline font converter <https://github.com/lvgl/lv_font_conv>`__.
|
||||
or you will get an error while converting.**
|
||||
2. Use the `Offline font converter <https://github.com/lvgl/lv_font_conv>`__.
|
||||
(Requires Node.js to be installed)
|
||||
3. If you want to create something like the built-in
|
||||
fonts (Montserrat font and symbols) but in a different size and/or
|
||||
@@ -237,10 +237,10 @@ Add new symbols
|
||||
|
||||
The built-in symbols are created from the `FontAwesome <https://fontawesome.com/>`__ font.
|
||||
|
||||
1. Search for a symbol on https://fontawesome.com. For example the
|
||||
1. Search for a symbol on https://fontawesome.com. For example the
|
||||
`USB symbol <https://fontawesome.com/icons/usb?style=brands>`__. Copy its
|
||||
Unicode ID which is ``0xf287`` in this case.
|
||||
2. Open the `Online font converter <https://lvgl.io/tools/fontconverter>`__.
|
||||
2. Open the `Online font converter <https://lvgl.io/tools/fontconverter>`__.
|
||||
Add `FontAwesome.woff <https://lvgl.io/assets/others/FontAwesome5-Solid+Brands+Regular.woff>`__.
|
||||
3. Set the parameters such as Name, Size, BPP. You'll use this name to
|
||||
declare and use the font in your code.
|
||||
@@ -251,9 +251,9 @@ The built-in symbols are created from the `FontAwesome <https://fontawesome.com/
|
||||
6. Declare the font using ``extern lv_font_t my_font_name;`` or simply
|
||||
use :cpp:expr:`LV_FONT_DECLARE(my_font_name)`.
|
||||
|
||||
**Using the symbol**
|
||||
**Using the symbol**
|
||||
|
||||
1. Convert the Unicode value to UTF8, for example on
|
||||
1. Convert the Unicode value to UTF8, for example on
|
||||
`this site <http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=f287&mode=hex>`__.
|
||||
For ``0xf287`` the *Hex UTF-8 bytes* are ``EF 8A 87``.
|
||||
2. Create a ``define`` string from the UTF8 values: ``#define MY_USB_SYMBOL "\xEF\x8A\x87"``
|
||||
|
||||
@@ -8,7 +8,7 @@ some metadata.
|
||||
Store images
|
||||
************
|
||||
|
||||
You can store images in two places
|
||||
You can store images in two places
|
||||
|
||||
- as a variable in internal memory (RAM or ROM)
|
||||
- as a file
|
||||
@@ -21,12 +21,12 @@ Images stored internally in a variable are composed mainly of an
|
||||
|
||||
- **header**:
|
||||
|
||||
- *cf*: Color format. See `below <#color-format>`__
|
||||
- *w*: width in pixels (<= 2048)
|
||||
- *h*: height in pixels (<= 2048)
|
||||
- *always zero*: 3 bits which need to be always zero
|
||||
- *reserved*: reserved for future use
|
||||
- **data**: pointer to an array where the image itself is stored
|
||||
- *cf*: Color format. See `below <#color-format>`__
|
||||
- *w*: width in pixels (<= 2048)
|
||||
- *h*: height in pixels (<= 2048)
|
||||
- *always zero*: 3 bits which need to be always zero
|
||||
- *reserved*: reserved for future use
|
||||
- **data**: pointer to an array where the image itself is stored
|
||||
- **data_size**: length of ``data`` in bytes
|
||||
|
||||
These are usually stored within a project as C files. They are linked
|
||||
@@ -51,7 +51,7 @@ easier to replace without needing to rebuild the main program.
|
||||
Color formats
|
||||
*************
|
||||
|
||||
Various built-in color formats are supported:
|
||||
Various built-in color formats are supported:
|
||||
|
||||
- :cpp:enumerator:`LV_COLOR_FORMAT_NATIVE`: Simply stores the RGB colors (in whatever color depth LVGL is configured for).
|
||||
- :cpp:enumerator:`LV_COLOR_FORMAT_NATIVE_WITH_ALPHA`: Like :cpp:enumerator:`LV_COLOR_FORMAT_NATIVE` but it also adds an alpha (transparency) byte for every pixel.
|
||||
@@ -79,8 +79,8 @@ The bytes of :cpp:enumerator:`LV_COLOR_FORMAT_NATIVE` images are stored in the f
|
||||
- **Byte 2**: Alpha byte (only with :cpp:enumerator:`LV_COLOR_FORMAT_NATIVE_WITH_ALPHA`)
|
||||
|
||||
You can store images in a *Raw* format to indicate that it's not encoded
|
||||
with one of the built-in color formats and an external `Image decoder <#image-decoder>`__
|
||||
needs to be used to decode the image.
|
||||
with one of the built-in color formats and an external `Image decoder <#image-decoder>`__
|
||||
needs to be used to decode the image.
|
||||
|
||||
- :cpp:enumerator:`LV_COLOR_FORMAT_RAW`: Indicates a basic raw image (e.g. a PNG or JPG image).
|
||||
- :cpp:enumerator:`LV_COLOR_FORMAT_RAW_ALPHA`: Indicates that an image has alpha and an alpha byte is added for every pixel.
|
||||
@@ -116,11 +116,11 @@ that matches :c:macro:`LV_COLOR_DEPTH` in *lv_conf.h* will actually be linked
|
||||
into the resulting executable.
|
||||
|
||||
In the case of binary files, you need to specify the color format you
|
||||
want:
|
||||
want:
|
||||
|
||||
- RGB332 for 8-bit color depth
|
||||
- RGB565 for 16-bit color depth
|
||||
- RGB565 Swap for 16-bit color depth (two bytes are swapped)
|
||||
- RGB332 for 8-bit color depth
|
||||
- RGB565 for 16-bit color depth
|
||||
- RGB565 Swap for 16-bit color depth (two bytes are swapped)
|
||||
- RGB888 for 32-bit color depth
|
||||
|
||||
Manually create an image
|
||||
@@ -153,7 +153,7 @@ The simplest way to use an image in LVGL is to display it with an
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_obj_t * icon = lv_image_create(lv_scr_act(), NULL);
|
||||
lv_obj_t * icon = lv_image_create(lv_screen_active(), NULL);
|
||||
|
||||
/*From variable*/
|
||||
lv_image_set_src(icon, &my_icon_dsc);
|
||||
@@ -176,12 +176,12 @@ formats like PNG or JPG.
|
||||
To handle non-built-in image formats, you need to use external libraries
|
||||
and attach them to LVGL via the *Image decoder* interface.
|
||||
|
||||
An image decoder consists of 4 callbacks:
|
||||
An image decoder consists of 4 callbacks:
|
||||
|
||||
- **info** get some basic info about the image (width, height and color format).
|
||||
- **open** open an image:
|
||||
- store a decoded image
|
||||
- set it to ``NULL`` to indicate the image can be read line-by-line.
|
||||
- **info** get some basic info about the image (width, height and color format).
|
||||
- **open** open an image:
|
||||
- store a decoded image
|
||||
- set it to ``NULL`` to indicate the image can be read line-by-line.
|
||||
- **get_area** if *open* didn't fully open an image this function should give back part of image as decoded data.
|
||||
- **close** close an opened image, free the allocated resources.
|
||||
|
||||
@@ -205,14 +205,14 @@ Custom image formats
|
||||
--------------------
|
||||
|
||||
The easiest way to create a custom image is to use the online image
|
||||
converter and select ``Raw`` or ``Raw with alpha`` format.
|
||||
converter and select ``Raw`` or ``Raw with alpha`` format.
|
||||
It will just take every byte of the
|
||||
binary file you uploaded and write it as an image "bitmap". You then
|
||||
need to attach an image decoder that will parse that bitmap and generate
|
||||
the real, renderable bitmap.
|
||||
|
||||
``header.cf`` will be :cpp:enumerator:`LV_COLOR_FORMAT_RAW`, :cpp:enumerator:`LV_COLOR_FORMAT_RAW_ALPHA`
|
||||
accordingly. You should choose the correct format according to your needs:
|
||||
``header.cf`` will be :cpp:enumerator:`LV_COLOR_FORMAT_RAW`, :cpp:enumerator:`LV_COLOR_FORMAT_RAW_ALPHA`
|
||||
accordingly. You should choose the correct format according to your needs:
|
||||
a fully opaque image, using an alpha channel.
|
||||
|
||||
After decoding, the *raw* formats are considered *True color* by the
|
||||
@@ -374,11 +374,11 @@ Cache size
|
||||
----------
|
||||
|
||||
The size of cache (in bytes) can be defined with
|
||||
:c:macro:`LV_CACHE_DEF_SIZE` in *lv_conf.h*. The default value is 0, so
|
||||
:c:macro:`LV_CACHE_DEF_SIZE` in *lv_conf.h*. The default value is 0, so
|
||||
no image is cached.
|
||||
|
||||
The size of cache can be changed at run-time with
|
||||
:cpp:expr:`lv_cache_set_max_size(size_t size)`,
|
||||
:cpp:expr:`lv_cache_set_max_size(size_t size)`,
|
||||
and get with :cpp:expr:`lv_cache_get_max_size()`.
|
||||
|
||||
Value of images
|
||||
@@ -399,9 +399,9 @@ the *weight* value in the cache entry in
|
||||
it unchanged to let LVGL control it.)
|
||||
|
||||
Every cache entry has a *"life"* value. Every time an image is opened
|
||||
through the cache, the *life* value of all entries is increased by their
|
||||
*weight* values to make them older.
|
||||
When a cached image is used, its *usage_count* value is increased
|
||||
through the cache, the *life* value of all entries is increased by their
|
||||
*weight* values to make them older.
|
||||
When a cached image is used, its *usage_count* value is increased
|
||||
to make it more alive.
|
||||
|
||||
If there is no more space in the cache, the entry with *usage_count == 0*
|
||||
|
||||
@@ -25,12 +25,12 @@ Pointer input devices (like a mouse) can have a cursor.
|
||||
lv_indev_t * mouse_indev = lv_indev_create();
|
||||
...
|
||||
LV_IMG_DECLARE(mouse_cursor_icon); /*Declare the image source.*/
|
||||
lv_obj_t * cursor_obj = lv_image_create(lv_scr_act()); /*Create an image object for the cursor */
|
||||
lv_obj_t * cursor_obj = lv_image_create(lv_screen_active()); /*Create an image object for the cursor */
|
||||
lv_image_set_src(cursor_obj, &mouse_cursor_icon); /*Set the image source*/
|
||||
lv_indev_set_cursor(mouse_indev, cursor_obj); /*Connect the image object to the driver*/
|
||||
|
||||
Note that the cursor object should have
|
||||
:cpp:expr:`lv_obj_clear_flag(cursor_obj, LV_OBJ_FLAG_CLICKABLE)`. For images,
|
||||
:cpp:expr:`lv_obj_remove_flag(cursor_obj, LV_OBJ_FLAG_CLICKABLE)`. For images,
|
||||
*clicking* is disabled by default.
|
||||
|
||||
Gestures
|
||||
@@ -68,7 +68,7 @@ event. For example:
|
||||
lv_obj_add_event(screen1, my_event, LV_EVENT_GESTURE, NULL);
|
||||
|
||||
To prevent passing the gesture event to the parent from an object use
|
||||
:cpp:expr:`lv_obj_clear_flag(obj, LV_OBJ_FLAG_GESTURE_BUBBLE)`.
|
||||
:cpp:expr:`lv_obj_remove_flag(obj, LV_OBJ_FLAG_GESTURE_BUBBLE)`.
|
||||
|
||||
Note that, gestures are not triggered if an object is being scrolled.
|
||||
|
||||
@@ -109,7 +109,7 @@ To associate a group with an input device use
|
||||
Keys
|
||||
^^^^
|
||||
|
||||
There are some predefined keys which have special meaning:
|
||||
There are some predefined keys which have special meaning:
|
||||
|
||||
- :cpp:enumerator:`LV_KEY_NEXT`: Focus on the next object
|
||||
- :cpp:enumerator:`LV_KEY_PREV`: Focus on the previous object
|
||||
@@ -134,7 +134,7 @@ The most important special keys In your ``read_cb`` function
|
||||
- :cpp:enumerator:`LV_KEY_LEFT`
|
||||
- :cpp:enumerator:`LV_KEY_RIGHT`
|
||||
|
||||
You should translate some of your keys to these special keys to support navigation
|
||||
You should translate some of your keys to these special keys to support navigation
|
||||
in a group and interact with selected objects.
|
||||
|
||||
Usually, it's enough to use only :cpp:enumerator:`LV_KEY_LEFT` and :cpp:enumerator:`LV_KEY_RIGHT` because most
|
||||
|
||||
@@ -18,7 +18,7 @@ its children.
|
||||
|
||||
/*Create a screen*/
|
||||
lv_obj_t * scr = lv_obj_create(NULL, NULL);
|
||||
lv_scr_load(scr); /*Load the screen*/
|
||||
lv_screen_load(scr); /*Load the screen*/
|
||||
|
||||
/*Create 2 buttons*/
|
||||
lv_obj_t * btn1 = lv_btn_create(scr, NULL); /*Create a button on the screen*/
|
||||
@@ -36,7 +36,7 @@ its children.
|
||||
lv_label_set_text(label2, "Button 2"); /*Set the text of the label*/
|
||||
|
||||
/*Delete the second label*/
|
||||
lv_obj_del(label2);
|
||||
lv_obj_delete(label2);
|
||||
|
||||
Change order
|
||||
************
|
||||
@@ -60,7 +60,7 @@ Top and sys layers
|
||||
LVGL uses two special layers named ``layer_top`` and ``layer_sys``. Both
|
||||
are visible and common on all screens of a display. **They are not,
|
||||
however, shared among multiple physical displays.** The ``layer_top`` is
|
||||
always on top of the default screen (:cpp:func:`lv_scr_act`), and
|
||||
always on top of the default screen (:cpp:func:`lv_screen_active`), and
|
||||
``layer_sys`` is on top of ``layer_top``.
|
||||
|
||||
The ``layer_top`` can be used by the user to create some content visible
|
||||
|
||||
@@ -83,7 +83,7 @@ it. Therefore, all positions are relative to the parent.
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_obj_t * parent = lv_obj_create(lv_scr_act()); /*Create a parent object on the current screen*/
|
||||
lv_obj_t * parent = lv_obj_create(lv_screen_active()); /*Create a parent object on the current screen*/
|
||||
lv_obj_set_size(parent, 100, 80); /*Set the size of the parent*/
|
||||
|
||||
lv_obj_t * obj1 = lv_obj_create(parent); /*Create an object on the previously created parent object*/
|
||||
@@ -146,11 +146,11 @@ the object and all of its children.
|
||||
|
||||
.. code:: c
|
||||
|
||||
void lv_obj_del(lv_obj_t * obj);
|
||||
void lv_obj_delete(lv_obj_t * obj);
|
||||
|
||||
:cpp:func:`lv_obj_del` will delete the object immediately. If for any reason you
|
||||
can't delete the object immediately you can use
|
||||
:cpp:expr:`lv_obj_del_async(obj)` which will perform the deletion on the next
|
||||
:cpp:expr:`lv_obj_delete_async(obj)` which will perform the deletion on the next
|
||||
call of :cpp:func:`lv_timer_handler`. This is useful e.g. if you want to
|
||||
delete the parent of an object in the child's :cpp:enumerator:`LV_EVENT_DELETE`
|
||||
handler.
|
||||
@@ -158,7 +158,7 @@ handler.
|
||||
You can remove all the children of an object (but not the object itself)
|
||||
using :cpp:expr:`lv_obj_clean(obj)`.
|
||||
|
||||
You can use :cpp:expr:`lv_obj_del_delayed(obj, 1000)` to delete an object after
|
||||
You can use :cpp:expr:`lv_obj_delete_delayed(obj, 1000)` to delete an object after
|
||||
some time. The delay is expressed in milliseconds.
|
||||
|
||||
Screens
|
||||
@@ -183,12 +183,12 @@ Get the active screen
|
||||
There is always an active screen on each display. By default, the
|
||||
library creates and loads a "Base object" as a screen for each display.
|
||||
|
||||
To get the currently active screen use the :cpp:func:`lv_scr_act` function.
|
||||
To get the currently active screen use the :cpp:func:`lv_screen_active` function.
|
||||
|
||||
Load screens
|
||||
------------
|
||||
|
||||
To load a new screen, use :cpp:expr:`lv_scr_load(scr1)`.
|
||||
To load a new screen, use :cpp:expr:`lv_screen_load(scr1)`.
|
||||
|
||||
Layers
|
||||
------
|
||||
@@ -215,7 +215,7 @@ Load screen with animation
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
A new screen can be loaded with animation by using
|
||||
:cpp:expr:`lv_scr_load_anim(scr, transition_type, time, delay, auto_del)`. The
|
||||
:cpp:expr:`lv_screen_load_anim(scr, transition_type, time, delay, auto_del)`. The
|
||||
following transition types exist:
|
||||
|
||||
- :cpp:enumerator:`LV_SCR_LOAD_ANIM_NONE`: Switch immediately after ``delay`` milliseconds
|
||||
@@ -227,7 +227,7 @@ following transition types exist:
|
||||
Setting ``auto_del`` to ``true`` will automatically delete the old
|
||||
screen when the animation is finished.
|
||||
|
||||
The new screen will become active (returned by :cpp:func:`lv_scr_act`) when
|
||||
The new screen will become active (returned by :cpp:func:`lv_screen_active`) when
|
||||
the animation starts after ``delay`` time. All inputs are disabled
|
||||
during the screen animation.
|
||||
|
||||
@@ -239,7 +239,7 @@ Screens are created on the currently selected *default display*. The
|
||||
:cpp:func:`lv_disp_drv_register`. You can also explicitly select a new default
|
||||
display using :cpp:expr:`lv_disp_set_default(disp)`.
|
||||
|
||||
:cpp:func:`lv_scr_act`, :cpp:func:`lv_scr_load` and :cpp:func:`lv_scr_load_anim` operate
|
||||
:cpp:func:`lv_screen_active`, :cpp:func:`lv_screen_load` and :cpp:func:`lv_screen_load_anim` operate
|
||||
on the default display.
|
||||
|
||||
Visit `Multi-display support </overview/display>`__ to learn more.
|
||||
@@ -291,7 +291,7 @@ The states are usually automatically changed by the library as the user
|
||||
interacts with an object (presses, releases, focuses, etc.). However,
|
||||
the states can be changed manually too. To set or clear given state (but
|
||||
leave the other states untouched) use
|
||||
``lv_obj_add/clear_state(obj, LV_STATE_...)`` In both cases OR-ed state
|
||||
``lv_obj_add/remove_state(obj, LV_STATE_...)`` In both cases OR-ed state
|
||||
values can be used as well. E.g.
|
||||
:cpp:expr:`lv_obj_add_state(obj, part, LV_STATE_PRESSED | LV_PRESSED_CHECKED)`.
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ Scrollable
|
||||
----------
|
||||
|
||||
It's possible to make an object non-scrollable with
|
||||
:cpp:expr:`lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE)`.
|
||||
:cpp:expr:`lv_obj_remove_flag(obj, LV_OBJ_FLAG_SCROLLABLE)`.
|
||||
|
||||
Non-scrollable objects can still propagate the scrolling (chain) to
|
||||
their parents.
|
||||
|
||||
@@ -336,7 +336,7 @@ notified. There are 3 options to do this:
|
||||
|
||||
1. If you know that the changed properties can be applied by a simple redraw
|
||||
(e.g. color or opacity changes) just call :cpp:expr:`lv_obj_invalidate(obj)`
|
||||
or :cpp:expr:`lv_obj_invalidate(lv_scr_act())`.
|
||||
or :cpp:expr:`lv_obj_invalidate(lv_screen_active())`.
|
||||
2. If more complex style properties were changed or added, and you know which
|
||||
object(s) are affected by that style call :cpp:expr:`lv_obj_refresh_style(obj, part, property)`.
|
||||
To refresh all parts and properties use :cpp:expr:`lv_obj_refresh_style(obj, LV_PART_ANY, LV_STYLE_PROP_ANY)`.
|
||||
|
||||
@@ -35,7 +35,7 @@ For example:
|
||||
/*Do something with LVGL*/
|
||||
if(something_happened) {
|
||||
something_happened = false;
|
||||
lv_btn_create(lv_scr_act(), NULL);
|
||||
lv_btn_create(lv_screen_active(), NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ For example:
|
||||
/*Free some resources related to `scr`*/
|
||||
|
||||
/*Finally delete the screen*/
|
||||
lv_obj_del(scr);
|
||||
lv_obj_delete(scr);
|
||||
}
|
||||
|
||||
...
|
||||
@@ -110,12 +110,12 @@ For example:
|
||||
/*Do something with the object on the current screen*/
|
||||
|
||||
/*Delete screen on next call of `lv_timer_handler`, not right now.*/
|
||||
lv_async_call(my_screen_clean_up, lv_scr_act());
|
||||
lv_async_call(my_screen_clean_up, lv_screen_active());
|
||||
|
||||
/*The screen is still valid so you can do other things with it*/
|
||||
|
||||
If you just want to delete an object and don't need to clean anything up
|
||||
in ``my_screen_cleanup`` you could just use :cpp:func:`lv_obj_del_async` which
|
||||
in ``my_screen_cleanup`` you could just use :cpp:func:`lv_obj_delete_async` which
|
||||
will delete the object on the next call to :cpp:func:`lv_timer_handler`.
|
||||
|
||||
API
|
||||
|
||||
@@ -229,7 +229,7 @@ You can do this in the following way:
|
||||
.. code:: c
|
||||
|
||||
/*Delete the original display refresh timer*/
|
||||
lv_timer_del(disp->refr_timer);
|
||||
lv_timer_delete(disp->refr_timer);
|
||||
disp->refr_timer = NULL;
|
||||
|
||||
|
||||
|
||||
@@ -245,7 +245,7 @@ You can do this in the following way:
|
||||
.. code:: c
|
||||
|
||||
/*Delete the original input device read timer*/
|
||||
lv_timer_del(indev->read_timer);
|
||||
lv_timer_delete(indev->read_timer);
|
||||
indev->read_timer = NULL;
|
||||
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ Here is some pseudocode to illustrate the concept:
|
||||
{
|
||||
/* You must always hold the mutex while using LVGL APIs */
|
||||
mutex_lock(&lvgl_mutex);
|
||||
lv_obj_t *img = lv_image_create(lv_scr_act());
|
||||
lv_obj_t *img = lv_image_create(lv_screen_active());
|
||||
mutex_unlock(&lvgl_mutex);
|
||||
|
||||
while(1) {
|
||||
|
||||
@@ -96,7 +96,7 @@ the object non-clickable:
|
||||
.. code:: c
|
||||
|
||||
lv_obj_remove_style(arc, NULL, LV_PART_KNOB);
|
||||
lv_obj_clear_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
|
||||
Advanced hit test
|
||||
-----------------
|
||||
|
||||
@@ -43,7 +43,7 @@ common state add/clear function:
|
||||
.. code:: c
|
||||
|
||||
lv_obj_add_state(cb, LV_STATE_CHECKED); /*Make the checkbox checked*/
|
||||
lv_obj_clear_state(cb, LV_STATE_CHECKED); /*MAke the checkbox unchecked*/
|
||||
lv_obj_remove_state(cb, LV_STATE_CHECKED); /*MAke the checkbox unchecked*/
|
||||
lv_obj_add_state(cb, LV_STATE_CHECKED | LV_STATE_DISABLED); /*Make the checkbox checked and disabled*/
|
||||
|
||||
To get whether the checkbox is checked or not use:
|
||||
|
||||
@@ -46,7 +46,7 @@ they will be used in pressed state instead of the released images.
|
||||
States
|
||||
------
|
||||
|
||||
Instead of the regular ``lv_obj_add/clear_state()`` functions the
|
||||
Instead of the regular ``lv_obj_add/remove_state()`` functions the
|
||||
:cpp:expr:`lv_imgbtn_set_state(imgbtn, LV_IMGBTN_STATE_...)` functions should be
|
||||
used to manually set a state.
|
||||
|
||||
|
||||
@@ -115,7 +115,7 @@ representing a layout that covers the entire display.
|
||||
|
||||
When you have created a screen like
|
||||
``lv_obj_t * screen = lv_obj_create(NULL)``, you can make it active with
|
||||
:cpp:expr:`lv_scr_load(screen)`. The :cpp:func:`lv_scr_act` function gives you a
|
||||
:cpp:expr:`lv_screen_load(screen)`. The :cpp:func:`lv_screen_active` function gives you a
|
||||
pointer to the active screen.
|
||||
|
||||
If you have multiple displays, it's important to know that the screen
|
||||
@@ -154,7 +154,7 @@ Flags
|
||||
-----
|
||||
|
||||
There are some attributes which can be enabled/disabled by
|
||||
``lv_obj_add/clear_flag(obj, LV_OBJ_FLAG_...)``:
|
||||
``lv_obj_add/remove_flag(obj, LV_OBJ_FLAG_...)``:
|
||||
|
||||
- :cpp:enumerator:`LV_OBJ_FLAG_HIDDEN` Make the object hidden. (Like it wasn't there at all)
|
||||
- :cpp:enumerator:`LV_OBJ_FLAG_CLICKABLE` Make the object clickable by input devices
|
||||
@@ -194,7 +194,7 @@ Some examples:
|
||||
lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN);
|
||||
|
||||
/*Make an object non-clickable*/
|
||||
lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_remove_flag(obj, LV_OBJ_FLAG_CLICKABLE);
|
||||
|
||||
Groups
|
||||
------
|
||||
|
||||
@@ -34,7 +34,7 @@ To get the current state of the switch (with ``true`` being on), use
|
||||
:cpp:expr:`lv_obj_has_state(obj, LV_STATE_CHECKED)`.
|
||||
|
||||
Call :cpp:expr:`lv_obj_add_state(obj, LV_STATE_CHECKED)` to turn it on, or
|
||||
:cpp:expr:`lv_obj_clear_state(obj, LV_STATE_CHECKED)` to turn it off.
|
||||
:cpp:expr:`lv_obj_remove_state(obj, LV_STATE_CHECKED)` to turn it off.
|
||||
|
||||
Events
|
||||
******
|
||||
|
||||
@@ -61,8 +61,8 @@ Delete character
|
||||
----------------
|
||||
|
||||
To delete a character from the left of the current cursor position use
|
||||
:cpp:expr:`lv_textarea_del_char(textarea)`. To delete from the right use
|
||||
:cpp:expr:`lv_textarea_del_char_forward(textarea)`
|
||||
:cpp:expr:`lv_textarea_delete_char(textarea)`. To delete from the right use
|
||||
:cpp:expr:`lv_textarea_delete_char_forward(textarea)`
|
||||
|
||||
Move the cursor
|
||||
---------------
|
||||
|
||||
@@ -37,8 +37,8 @@ void pika_lvgl_lv_timer_t_set_cb(PikaObj* self, Arg* cb) {
|
||||
|
||||
}
|
||||
|
||||
void pika_lvgl_lv_timer_t__del(PikaObj* self) {
|
||||
void pika_lvgl_lv_timer_t__delete(PikaObj* self) {
|
||||
lv_timer_t* lv_timer = obj_getPtr(self, "lv_timer");
|
||||
lv_timer_del(lv_timer);
|
||||
lv_timer_delete(lv_timer);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -145,9 +145,9 @@ void pika_lvgl_PALETTE___init__(PikaObj* self) {
|
||||
obj_setInt(self, "NONE", LV_PALETTE_NONE);
|
||||
}
|
||||
|
||||
PikaObj* pika_lvgl_scr_act(PikaObj* self) {
|
||||
PikaObj* pika_lvgl_screen_act(PikaObj* self) {
|
||||
PikaObj* new_obj = newNormalObj(New_TinyObj);
|
||||
lv_obj_t* lv_obj = lv_scr_act();
|
||||
lv_obj_t* lv_obj = lv_screen_active();
|
||||
obj_setPtr(new_obj, "lv_obj", lv_obj);
|
||||
return new_obj;
|
||||
}
|
||||
|
||||
@@ -39,12 +39,12 @@ static void sw_event_cb(lv_event_t * e)
|
||||
*/
|
||||
void lv_example_anim_1(void)
|
||||
{
|
||||
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, "Hello animations!");
|
||||
lv_obj_set_pos(label, 100, 10);
|
||||
|
||||
|
||||
lv_obj_t * sw = lv_switch_create(lv_scr_act());
|
||||
lv_obj_t * sw = lv_switch_create(lv_screen_active());
|
||||
lv_obj_center(sw);
|
||||
lv_obj_add_state(sw, LV_STATE_CHECKED);
|
||||
lv_obj_add_event(sw, sw_event_cb, LV_EVENT_VALUE_CHANGED, label);
|
||||
|
||||
@@ -27,12 +27,12 @@ def sw_event_cb(e,label):
|
||||
# Start animation on an event
|
||||
#
|
||||
|
||||
label = lv.label(lv.scr_act())
|
||||
label = lv.label(lv.screen_active())
|
||||
label.set_text("Hello animations!")
|
||||
label.set_pos(100, 10)
|
||||
|
||||
|
||||
sw = lv.switch(lv.scr_act())
|
||||
sw = lv.switch(lv.screen_active())
|
||||
sw.center()
|
||||
sw.add_state(lv.STATE.CHECKED)
|
||||
sw.add_event(lambda e: sw_event_cb(e,label), lv.EVENT.VALUE_CHANGED, None)
|
||||
|
||||
@@ -18,7 +18,7 @@ static void anim_size_cb(void * var, int32_t v)
|
||||
void lv_example_anim_2(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_bg_color(obj, lv_palette_main(LV_PALETTE_RED), 0);
|
||||
lv_obj_set_style_radius(obj, LV_RADIUS_CIRCLE, 0);
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ def anim_size_cb(obj, v):
|
||||
#
|
||||
# Create a playback animation
|
||||
#
|
||||
obj = lv.obj(lv.scr_act())
|
||||
obj = lv.obj(lv.screen_active())
|
||||
obj.set_style_bg_color(lv.palette_main(lv.PALETTE.RED), 0)
|
||||
obj.set_style_radius(lv.RADIUS_CIRCLE, 0)
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ void lv_example_anim_3(void)
|
||||
static lv_coord_t row_dsc[] = {30, 10, 10, LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST};
|
||||
|
||||
/*Create a container with grid*/
|
||||
lv_obj_t * cont = lv_obj_create(lv_scr_act());
|
||||
lv_obj_t * cont = lv_obj_create(lv_screen_active());
|
||||
lv_obj_set_style_pad_all(cont, 2, LV_PART_MAIN);
|
||||
lv_obj_set_style_pad_column(cont, 10, LV_PART_MAIN);
|
||||
lv_obj_set_style_pad_row(cont, 10, LV_PART_MAIN);
|
||||
@@ -122,7 +122,7 @@ static void page_obj_init(lv_obj_t * par)
|
||||
ginfo.anim_obj = lv_obj_create(par);
|
||||
lv_obj_set_size(ginfo.anim_obj, 30, 30);
|
||||
lv_obj_set_align(ginfo.anim_obj, LV_ALIGN_TOP_LEFT);
|
||||
lv_obj_clear_flag(ginfo.anim_obj, LV_OBJ_FLAG_SCROLLABLE);
|
||||
lv_obj_remove_flag(ginfo.anim_obj, LV_OBJ_FLAG_SCROLLABLE);
|
||||
lv_obj_set_style_bg_color(ginfo.anim_obj, lv_palette_main(LV_PALETTE_RED), LV_PART_MAIN);
|
||||
lv_obj_set_grid_cell(ginfo.anim_obj, LV_GRID_ALIGN_START, 0, 1, LV_GRID_ALIGN_START, 0, 1);
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ class LvExampleAnim_3():
|
||||
|
||||
self.p1 = 0
|
||||
self.p2 = 0
|
||||
self.cont = lv.obj(lv.scr_act())
|
||||
self.cont = lv.obj(lv.screen_active())
|
||||
self.cont.set_style_pad_all(2, lv.PART.MAIN)
|
||||
self.cont.set_style_pad_column(10, lv.PART.MAIN)
|
||||
self.cont.set_style_pad_row(10, lv.PART.MAIN)
|
||||
@@ -42,7 +42,7 @@ class LvExampleAnim_3():
|
||||
self.anim_obj = lv.obj(par)
|
||||
self.anim_obj.set_size(30, 30)
|
||||
self.anim_obj.set_align(lv.ALIGN.TOP_LEFT)
|
||||
self.anim_obj.clear_flag(lv.obj.FLAG.SCROLLABLE)
|
||||
self.anim_obj.remove_flag(lv.obj.FLAG.SCROLLABLE)
|
||||
self.anim_obj.set_style_bg_color(lv.palette_main(lv.PALETTE.RED), lv.PART.MAIN)
|
||||
self.anim_obj.set_grid_cell(lv.GRID_ALIGN.START, 0, 1,lv.GRID_ALIGN.START, 0, 1)
|
||||
|
||||
|
||||
@@ -102,11 +102,11 @@ static void btn_start_event_handler(lv_event_t * e)
|
||||
lv_anim_timeline_start(anim_timeline);
|
||||
}
|
||||
|
||||
static void btn_del_event_handler(lv_event_t * e)
|
||||
static void btn_delete_event_handler(lv_event_t * e)
|
||||
{
|
||||
LV_UNUSED(e);
|
||||
if(anim_timeline) {
|
||||
lv_anim_timeline_del(anim_timeline);
|
||||
lv_anim_timeline_delete(anim_timeline);
|
||||
anim_timeline = NULL;
|
||||
}
|
||||
}
|
||||
@@ -136,7 +136,7 @@ static void slider_prg_event_handler(lv_event_t * e)
|
||||
*/
|
||||
void lv_example_anim_timeline_1(void)
|
||||
{
|
||||
lv_obj_t * par = lv_scr_act();
|
||||
lv_obj_t * par = lv_screen_active();
|
||||
lv_obj_set_flex_flow(par, LV_FLEX_FLOW_ROW);
|
||||
lv_obj_set_flex_align(par, LV_FLEX_ALIGN_SPACE_AROUND, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
|
||||
|
||||
@@ -153,7 +153,7 @@ void lv_example_anim_timeline_1(void)
|
||||
|
||||
/* create btn_del */
|
||||
lv_obj_t * btn_del = lv_button_create(par);
|
||||
lv_obj_add_event(btn_del, btn_del_event_handler, LV_EVENT_CLICKED, NULL);
|
||||
lv_obj_add_event(btn_del, btn_delete_event_handler, LV_EVENT_CLICKED, NULL);
|
||||
lv_obj_add_flag(btn_del, LV_OBJ_FLAG_IGNORE_LAYOUT);
|
||||
lv_obj_align(btn_del, LV_ALIGN_TOP_MID, 0, 20);
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ class LV_ExampleAnimTimeline_1(object):
|
||||
# Create an animation timeline
|
||||
#
|
||||
|
||||
self.par = lv.scr_act()
|
||||
self.par = lv.screen_active()
|
||||
self.par.set_flex_flow(lv.FLEX_FLOW.ROW)
|
||||
self.par.set_flex_align(lv.FLEX_ALIGN.SPACE_AROUND, lv.FLEX_ALIGN.CENTER, lv.FLEX_ALIGN.CENTER)
|
||||
|
||||
@@ -22,7 +22,7 @@ class LV_ExampleAnimTimeline_1(object):
|
||||
self.label_run.center()
|
||||
|
||||
self.button_del = lv.button(self.par)
|
||||
self.button_del.add_event(self.button_del_event_handler, lv.EVENT.CLICKED, None)
|
||||
self.button_del.add_event(self.button_delete_event_handler, lv.EVENT.CLICKED, None)
|
||||
self.button_del.add_flag(lv.obj.FLAG.IGNORE_LAYOUT)
|
||||
self.button_del.align(lv.ALIGN.TOP_MID, 50, 20)
|
||||
|
||||
@@ -134,9 +134,9 @@ class LV_ExampleAnimTimeline_1(object):
|
||||
self.anim_timeline.set_reverse(reverse)
|
||||
self.anim_timeline.start()
|
||||
|
||||
def button_del_event_handler(self,e):
|
||||
def button_delete_event_handler(self,e):
|
||||
if self.anim_timeline:
|
||||
self.anim_timeline._del()
|
||||
self.anim_timeline._delete()
|
||||
self.anim_timeline = None
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ static void event_cb(lv_event_t * e)
|
||||
*/
|
||||
void lv_example_event_1(void)
|
||||
{
|
||||
lv_obj_t * btn = lv_button_create(lv_scr_act());
|
||||
lv_obj_t * btn = lv_button_create(lv_screen_active());
|
||||
lv_obj_set_size(btn, 100, 50);
|
||||
lv_obj_center(btn);
|
||||
lv_obj_add_event(btn, event_cb, LV_EVENT_CLICKED, NULL);
|
||||
|
||||
@@ -5,7 +5,7 @@ class Event_1():
|
||||
# Add click event to a button
|
||||
#
|
||||
|
||||
button = lv.button(lv.scr_act())
|
||||
button = lv.button(lv.screen_active())
|
||||
button.set_size(100, 50)
|
||||
button.center()
|
||||
button.add_event(self.event_cb, lv.EVENT.CLICKED, None)
|
||||
|
||||
@@ -29,7 +29,7 @@ static void event_cb(lv_event_t * e)
|
||||
*/
|
||||
void lv_example_event_2(void)
|
||||
{
|
||||
lv_obj_t * btn = lv_button_create(lv_scr_act());
|
||||
lv_obj_t * btn = lv_button_create(lv_screen_active());
|
||||
lv_obj_set_size(btn, 100, 50);
|
||||
lv_obj_center(btn);
|
||||
|
||||
@@ -37,7 +37,7 @@ void lv_example_event_2(void)
|
||||
lv_label_set_text(btn_label, "Click me!");
|
||||
lv_obj_center(btn_label);
|
||||
|
||||
lv_obj_t * info_label = lv_label_create(lv_scr_act());
|
||||
lv_obj_t * info_label = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(info_label, "The last button event:\nNone");
|
||||
|
||||
lv_obj_add_event(btn, event_cb, LV_EVENT_ALL, info_label);
|
||||
|
||||
@@ -8,7 +8,7 @@ def event_cb(e,label):
|
||||
label.set_text("The last button event:\nLV_EVENT_LONG_PRESSED")
|
||||
elif code == lv.EVENT.LONG_PRESSED_REPEAT:
|
||||
label.set_text("The last button event:\nLV_EVENT_LONG_PRESSED_REPEAT")
|
||||
button = lv.button(lv.scr_act())
|
||||
button = lv.button(lv.screen_active())
|
||||
button.set_size(100, 50)
|
||||
button.center()
|
||||
|
||||
@@ -16,7 +16,7 @@ button_label = lv.label(button)
|
||||
button_label.set_text("Click me!")
|
||||
button_label.center()
|
||||
|
||||
info_label = lv.label(lv.scr_act())
|
||||
info_label = lv.label(lv.screen_active())
|
||||
info_label.set_text("The last button event:\nNone")
|
||||
|
||||
button.add_event(lambda e: event_cb(e,info_label), lv.EVENT.ALL, None)
|
||||
|
||||
@@ -22,7 +22,7 @@ static void event_cb(lv_event_t * e)
|
||||
void lv_example_event_3(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, 290, 200);
|
||||
lv_obj_center(cont);
|
||||
lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_ROW_WRAP);
|
||||
|
||||
@@ -17,7 +17,7 @@ def event_cb(e):
|
||||
# Demonstrate event bubbling
|
||||
#
|
||||
|
||||
cont = lv.obj(lv.scr_act())
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(290, 200)
|
||||
cont.center()
|
||||
cont.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP)
|
||||
|
||||
@@ -47,7 +47,7 @@ static void event_cb(lv_event_t * e)
|
||||
*/
|
||||
void lv_example_event_4(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_add_event(cont, event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL);
|
||||
|
||||
@@ -6,7 +6,7 @@ class LV_Example_Event_4:
|
||||
#
|
||||
self.size = 0
|
||||
self.size_dec = False
|
||||
self.cont = lv.obj(lv.scr_act())
|
||||
self.cont = lv.obj(lv.screen_active())
|
||||
self.cont.set_size(200, 200)
|
||||
self.cont.center()
|
||||
self.cont.add_event(self.event_cb, lv.EVENT.DRAW_TASK_ADDED, None)
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
void lv_example_get_started_1(void)
|
||||
{
|
||||
/*Change the active screen's background color*/
|
||||
lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0x003a57), LV_PART_MAIN);
|
||||
lv_obj_set_style_bg_color(lv_screen_active(), lv_color_hex(0x003a57), LV_PART_MAIN);
|
||||
|
||||
/*Create a white label, set its text and align it to the center*/
|
||||
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, "Hello world");
|
||||
lv_obj_set_style_text_color(lv_scr_act(), lv_color_hex(0xffffff), LV_PART_MAIN);
|
||||
lv_obj_set_style_text_color(lv_screen_active(), lv_color_hex(0xffffff), LV_PART_MAIN);
|
||||
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Change the active screen's background color
|
||||
scr = lv.scr_act()
|
||||
scr = lv.screen_active()
|
||||
scr.set_style_bg_color(lv.color_hex(0x003a57), lv.PART.MAIN)
|
||||
|
||||
# Create a white label, set its text and align it to the center
|
||||
label = lv.label(lv.scr_act())
|
||||
label = lv.label(lv.screen_active())
|
||||
label.set_text("Hello world")
|
||||
label.set_style_text_color(lv.color_hex(0xffffff), lv.PART.MAIN)
|
||||
label.align(lv.ALIGN.CENTER, 0, 0)
|
||||
|
||||
@@ -20,7 +20,7 @@ static void btn_event_cb(lv_event_t * e)
|
||||
*/
|
||||
void lv_example_get_started_2(void)
|
||||
{
|
||||
lv_obj_t * btn = lv_button_create(lv_scr_act()); /*Add a button the current screen*/
|
||||
lv_obj_t * btn = lv_button_create(lv_screen_active()); /*Add a button the current screen*/
|
||||
lv_obj_set_pos(btn, 10, 10); /*Set its position*/
|
||||
lv_obj_set_size(btn, 120, 50); /*Set its size*/
|
||||
lv_obj_add_event(btn, btn_event_cb, LV_EVENT_ALL, NULL); /*Assign a callback to the button*/
|
||||
|
||||
@@ -5,7 +5,7 @@ class CounterBtn():
|
||||
# Create a button with a label and react on click event.
|
||||
#
|
||||
|
||||
button = lv.button(lv.scr_act()) # Add a button the current screen
|
||||
button = lv.button(lv.screen_active()) # Add a button the current screen
|
||||
button.set_pos(10, 10) # Set its position
|
||||
button.set_size(120, 50) # Set its size
|
||||
button.align(lv.ALIGN.CENTER,0,0)
|
||||
|
||||
@@ -50,7 +50,7 @@ void lv_example_get_started_3(void)
|
||||
style_init();
|
||||
|
||||
/*Create a button and use the new styles*/
|
||||
lv_obj_t * btn = lv_button_create(lv_scr_act());
|
||||
lv_obj_t * btn = lv_button_create(lv_screen_active());
|
||||
/* Remove the styles coming from the theme
|
||||
* Note that size and position are also stored as style properties
|
||||
* so lv_obj_remove_style_all will remove the set size and position too */
|
||||
@@ -66,7 +66,7 @@ void lv_example_get_started_3(void)
|
||||
lv_obj_center(label);
|
||||
|
||||
/*Create another button and use the red style too*/
|
||||
lv_obj_t * btn2 = lv_button_create(lv_scr_act());
|
||||
lv_obj_t * btn2 = lv_button_create(lv_screen_active());
|
||||
lv_obj_remove_style_all(btn2); /*Remove the styles coming from the theme*/
|
||||
lv_obj_set_pos(btn2, 10, 80);
|
||||
lv_obj_set_size(btn2, 120, 50);
|
||||
|
||||
@@ -32,7 +32,7 @@ style_button_pressed.set_bg_color(lv.palette_main(lv.PALETTE.BLUE))
|
||||
style_button_pressed.set_bg_grad_color(lv.palette_darken(lv.PALETTE.RED, 3))
|
||||
|
||||
# Create a button and use the new styles
|
||||
button = lv.button(lv.scr_act()) # Add a button the current screen
|
||||
button = lv.button(lv.screen_active()) # Add a button the current screen
|
||||
# Remove the styles coming from the theme
|
||||
# Note that size and position are also stored as style properties
|
||||
# so lv_obj_remove_style_all will remove the set size and position too
|
||||
@@ -47,12 +47,12 @@ label.set_text("Button") # Set the labels text
|
||||
label.center()
|
||||
|
||||
# Create a slider in the center of the display
|
||||
slider = lv.slider(lv.scr_act())
|
||||
slider = lv.slider(lv.screen_active())
|
||||
slider.set_width(200) # Set the width
|
||||
slider.center() # Align to the center of the parent (screen)
|
||||
|
||||
# Create another button and use the red style too
|
||||
button2 = lv.button(lv.scr_act())
|
||||
button2 = lv.button(lv.screen_active())
|
||||
button2.remove_style_all() # Remove the styles coming from the theme
|
||||
button2.set_pos(10, 80) # Set its position
|
||||
button2.set_size(120, 50) # Set its size
|
||||
|
||||
@@ -18,13 +18,13 @@ static void slider_event_cb(lv_event_t * e)
|
||||
void lv_example_get_started_4(void)
|
||||
{
|
||||
/*Create a slider in the center of the display*/
|
||||
lv_obj_t * slider = lv_slider_create(lv_scr_act());
|
||||
lv_obj_t * slider = lv_slider_create(lv_screen_active());
|
||||
lv_obj_set_width(slider, 200); /*Set the width*/
|
||||
lv_obj_center(slider); /*Align to the center of the parent (screen)*/
|
||||
lv_obj_add_event(slider, slider_event_cb, LV_EVENT_VALUE_CHANGED, NULL); /*Assign an event function*/
|
||||
|
||||
/*Create a label above the slider*/
|
||||
label = lv_label_create(lv_scr_act());
|
||||
label = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(label, "0");
|
||||
lv_obj_align_to(label, slider, LV_ALIGN_OUT_TOP_MID, 0, -15); /*Align top of the slider*/
|
||||
}
|
||||
|
||||
@@ -9,13 +9,13 @@ def slider_event_cb(e):
|
||||
#
|
||||
|
||||
# Create a slider in the center of the display
|
||||
slider = lv.slider(lv.scr_act())
|
||||
slider = lv.slider(lv.screen_active())
|
||||
slider.set_width(200) # Set the width
|
||||
slider.center() # Align to the center of the parent (screen)
|
||||
slider.add_event(slider_event_cb, lv.EVENT.VALUE_CHANGED, None) # Assign an event function
|
||||
|
||||
# Create a label above the slider
|
||||
label = lv.label(lv.scr_act())
|
||||
label = lv.label(lv.screen_active())
|
||||
label.set_text("0")
|
||||
label.align_to(slider, lv.ALIGN.OUT_TOP_MID, 0, -15) # Align below the slider
|
||||
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
void lv_example_flex_1(void)
|
||||
{
|
||||
/*Create a container with ROW flex direction*/
|
||||
lv_obj_t * cont_row = lv_obj_create(lv_scr_act());
|
||||
lv_obj_t * cont_row = lv_obj_create(lv_screen_active());
|
||||
lv_obj_set_size(cont_row, 300, 75);
|
||||
lv_obj_align(cont_row, LV_ALIGN_TOP_MID, 0, 5);
|
||||
lv_obj_set_flex_flow(cont_row, LV_FLEX_FLOW_ROW);
|
||||
|
||||
/*Create a container with COLUMN flex direction*/
|
||||
lv_obj_t * cont_col = lv_obj_create(lv_scr_act());
|
||||
lv_obj_t * cont_col = lv_obj_create(lv_screen_active());
|
||||
lv_obj_set_size(cont_col, 200, 150);
|
||||
lv_obj_align_to(cont_col, cont_row, LV_ALIGN_OUT_BOTTOM_MID, 0, 5);
|
||||
lv_obj_set_flex_flow(cont_col, LV_FLEX_FLOW_COLUMN);
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
#
|
||||
|
||||
# Create a container with ROW flex direction
|
||||
cont_row = lv.obj(lv.scr_act())
|
||||
cont_row = lv.obj(lv.screen_active())
|
||||
cont_row.set_size(300, 75)
|
||||
cont_row.align(lv.ALIGN.TOP_MID, 0, 5)
|
||||
cont_row.set_flex_flow(lv.FLEX_FLOW.ROW)
|
||||
|
||||
# Create a container with COLUMN flex direction
|
||||
cont_col = lv.obj(lv.scr_act())
|
||||
cont_col = lv.obj(lv.screen_active())
|
||||
cont_col.set_size(200, 150)
|
||||
cont_col.align_to(cont_row, lv.ALIGN.OUT_BOTTOM_MID, 0, 5)
|
||||
cont_col.set_flex_flow(lv.FLEX_FLOW.COLUMN)
|
||||
|
||||
@@ -12,7 +12,7 @@ void lv_example_flex_2(void)
|
||||
lv_style_set_flex_main_place(&style, LV_FLEX_ALIGN_SPACE_EVENLY);
|
||||
lv_style_set_layout(&style, LV_LAYOUT_FLEX);
|
||||
|
||||
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, 300, 220);
|
||||
lv_obj_center(cont);
|
||||
lv_obj_add_style(cont, &style, 0);
|
||||
|
||||
@@ -7,7 +7,7 @@ style.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP)
|
||||
style.set_flex_main_place(lv.FLEX_ALIGN.SPACE_EVENLY)
|
||||
style.set_layout(lv.LAYOUT.FLEX)
|
||||
|
||||
cont = lv.obj(lv.scr_act())
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.add_style(style, 0)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*/
|
||||
void lv_example_flex_3(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, 300, 220);
|
||||
lv_obj_center(cont);
|
||||
lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_ROW);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# Demonstrate flex grow.
|
||||
#
|
||||
|
||||
cont = lv.obj(lv.scr_act())
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_flex_flow(lv.FLEX_FLOW.ROW)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
void lv_example_flex_4(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, 300, 220);
|
||||
lv_obj_center(cont);
|
||||
lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_COLUMN_REVERSE);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Reverse the order of flex items
|
||||
#
|
||||
cont = lv.obj(lv.scr_act())
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_flex_flow(lv.FLEX_FLOW.COLUMN_REVERSE)
|
||||
|
||||
@@ -16,7 +16,7 @@ static void column_gap_anim(void * obj, int32_t v)
|
||||
*/
|
||||
void lv_example_flex_5(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, 300, 220);
|
||||
lv_obj_center(cont);
|
||||
lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_ROW_WRAP);
|
||||
|
||||
@@ -9,7 +9,7 @@ def column_gap_anim(obj, v):
|
||||
# Demonstrate the effect of column and row gap style properties
|
||||
#
|
||||
|
||||
cont = lv.obj(lv.scr_act())
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP)
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*/
|
||||
void lv_example_flex_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_style_base_dir(cont, LV_BASE_DIR_RTL, 0);
|
||||
lv_obj_set_size(cont, 300, 220);
|
||||
lv_obj_center(cont);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Also demonstrate how horizontal scrolling works with RTL.
|
||||
#
|
||||
|
||||
cont = lv.obj(lv.scr_act())
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_style_base_dir(lv.BASE_DIR.RTL,0)
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
|
||||
@@ -10,7 +10,7 @@ void lv_example_grid_1(void)
|
||||
static lv_coord_t row_dsc[] = {50, 50, 50, LV_GRID_TEMPLATE_LAST};
|
||||
|
||||
/*Create a container with grid*/
|
||||
lv_obj_t * cont = lv_obj_create(lv_scr_act());
|
||||
lv_obj_t * cont = lv_obj_create(lv_screen_active());
|
||||
lv_obj_set_style_grid_column_dsc_array(cont, col_dsc, 0);
|
||||
lv_obj_set_style_grid_row_dsc_array(cont, row_dsc, 0);
|
||||
lv_obj_set_size(cont, 300, 220);
|
||||
|
||||
@@ -6,7 +6,7 @@ col_dsc = [70, 70, 70, lv.GRID_TEMPLATE_LAST]
|
||||
row_dsc = [50, 50, 50, lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
# Create a container with grid
|
||||
cont = lv.obj(lv.scr_act())
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_style_grid_column_dsc_array(col_dsc, 0)
|
||||
cont.set_style_grid_row_dsc_array(row_dsc, 0)
|
||||
cont.set_size(300, 220)
|
||||
|
||||
@@ -11,7 +11,7 @@ void lv_example_grid_2(void)
|
||||
static lv_coord_t row_dsc[] = {50, 50, 50, LV_GRID_TEMPLATE_LAST};
|
||||
|
||||
/*Create a container with grid*/
|
||||
lv_obj_t * cont = lv_obj_create(lv_scr_act());
|
||||
lv_obj_t * cont = lv_obj_create(lv_screen_active());
|
||||
lv_obj_set_grid_dsc_array(cont, col_dsc, row_dsc);
|
||||
lv_obj_set_size(cont, 300, 220);
|
||||
lv_obj_center(cont);
|
||||
|
||||
@@ -6,7 +6,7 @@ col_dsc = [70, 70, 70, lv.GRID_TEMPLATE_LAST]
|
||||
row_dsc = [50, 50, 50, lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
# Create a container with grid
|
||||
cont = lv.obj(lv.scr_act())
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_grid_dsc_array(col_dsc, row_dsc)
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
|
||||
@@ -17,7 +17,7 @@ void lv_example_grid_3(void)
|
||||
static lv_coord_t row_dsc[] = {50, LV_GRID_FR(1), 50, LV_GRID_TEMPLATE_LAST};
|
||||
|
||||
/*Create a container with grid*/
|
||||
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, 300, 220);
|
||||
lv_obj_center(cont);
|
||||
lv_obj_set_grid_dsc_array(cont, col_dsc, row_dsc);
|
||||
|
||||
@@ -15,7 +15,7 @@ col_dsc = [60, lv.grid_fr(1), lv.grid_fr(2), lv.GRID_TEMPLATE_LAST]
|
||||
row_dsc = [40, lv.grid_fr(1), 40, lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
# Create a container with grid
|
||||
cont = lv.obj(lv.scr_act())
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_grid_dsc_array(col_dsc, row_dsc)
|
||||
|
||||
@@ -13,7 +13,7 @@ void lv_example_grid_4(void)
|
||||
/*Add space between the columns and move the rows to the bottom (end)*/
|
||||
|
||||
/*Create a container with grid*/
|
||||
lv_obj_t * cont = lv_obj_create(lv_scr_act());
|
||||
lv_obj_t * cont = lv_obj_create(lv_screen_active());
|
||||
lv_obj_set_grid_align(cont, LV_GRID_ALIGN_SPACE_BETWEEN, LV_GRID_ALIGN_END);
|
||||
lv_obj_set_grid_dsc_array(cont, col_dsc, row_dsc);
|
||||
lv_obj_set_size(cont, 300, 220);
|
||||
|
||||
@@ -9,7 +9,7 @@ row_dsc = [40, 40, 40, lv.GRID_TEMPLATE_LAST]
|
||||
# Add space between the columns and move the rows to the bottom (end)
|
||||
|
||||
# Create a container with grid
|
||||
cont = lv.obj(lv.scr_act())
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_grid_align(lv.GRID_ALIGN.SPACE_BETWEEN, lv.GRID_ALIGN.END)
|
||||
cont.set_grid_dsc_array(col_dsc, row_dsc)
|
||||
cont.set_size(300, 220)
|
||||
|
||||
@@ -22,7 +22,7 @@ void lv_example_grid_5(void)
|
||||
static lv_coord_t row_dsc[] = {45, 45, 45, LV_GRID_TEMPLATE_LAST};
|
||||
|
||||
/*Create a container with grid*/
|
||||
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, 300, 220);
|
||||
lv_obj_center(cont);
|
||||
lv_obj_set_grid_dsc_array(cont, col_dsc, row_dsc);
|
||||
|
||||
@@ -13,7 +13,7 @@ col_dsc = [60, 60, 60, lv.GRID_TEMPLATE_LAST]
|
||||
row_dsc = [40, 40, 40, lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
# Create a container with grid
|
||||
cont = lv.obj(lv.scr_act())
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_grid_dsc_array(col_dsc, row_dsc)
|
||||
|
||||
@@ -11,7 +11,7 @@ void lv_example_grid_6(void)
|
||||
static lv_coord_t row_dsc[] = {45, 45, 45, LV_GRID_TEMPLATE_LAST};
|
||||
|
||||
/*Create a container with grid*/
|
||||
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, 300, 220);
|
||||
lv_obj_center(cont);
|
||||
lv_obj_set_style_base_dir(cont, LV_BASE_DIR_RTL, 0);
|
||||
|
||||
@@ -5,7 +5,7 @@ col_dsc = [60, 60, 60, lv.GRID_TEMPLATE_LAST]
|
||||
row_dsc = [40, 40, 40, lv.GRID_TEMPLATE_LAST]
|
||||
|
||||
# Create a container with grid
|
||||
cont = lv.obj(lv.scr_act())
|
||||
cont = lv.obj(lv.screen_active())
|
||||
cont.set_size(300, 220)
|
||||
cont.center()
|
||||
cont.set_style_base_dir(lv.BASE_DIR.RTL,0)
|
||||
|
||||
@@ -9,7 +9,7 @@ void lv_example_barcode_1(void)
|
||||
lv_color_t bg_color = lv_palette_lighten(LV_PALETTE_LIGHT_BLUE, 5);
|
||||
lv_color_t fg_color = lv_palette_darken(LV_PALETTE_BLUE, 4);
|
||||
|
||||
lv_obj_t * barcode = lv_barcode_create(lv_scr_act());
|
||||
lv_obj_t * barcode = lv_barcode_create(lv_screen_active());
|
||||
lv_obj_set_height(barcode, 50);
|
||||
lv_obj_center(barcode);
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import display_driver
|
||||
bg_color = lv.palette_lighten(lv.PALETTE.LIGHT_BLUE, 5)
|
||||
fg_color = lv.palette_darken(lv.PALETTE.BLUE, 4)
|
||||
|
||||
barcode = lv.barcode(lv.scr_act())
|
||||
barcode = lv.barcode(lv.screen_active())
|
||||
barcode.set_height(50)
|
||||
barcode.center()
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*/
|
||||
void lv_example_bmp_1(void)
|
||||
{
|
||||
lv_obj_t * img = lv_image_create(lv_scr_act());
|
||||
lv_obj_t * img = lv_image_create(lv_screen_active());
|
||||
/* Assuming a File system is attached to letter 'A'
|
||||
* E.g. set LV_USE_FS_STDIO 'A' in lv_conf.h */
|
||||
lv_image_set_src(img, "A:lvgl/examples/libs/bmp/example_32bit.bmp");
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user