diff --git a/lv_obj/lv_obj.c b/lv_obj/lv_obj.c index 4c7616c082..3e0fa40030 100644 --- a/lv_obj/lv_obj.c +++ b/lv_obj/lv_obj.c @@ -303,11 +303,10 @@ bool lv_obj_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) { bool valid = true; - - switch(sign) { case LV_SIGNAL_CHILD_CHG: - if(obj_dp->child_chg_off != 0) valid = false; + /*Return 'invalid' if the child change signal is not enabled*/ + // if(obj_dp->child_chg_off != 0) valid = false; break; default: break; diff --git a/lv_objx/lv_btn.c b/lv_objx/lv_btn.c index 523b9eb6dc..b38ee2ca69 100644 --- a/lv_objx/lv_btn.c +++ b/lv_objx/lv_btn.c @@ -70,7 +70,7 @@ static lv_btns_t lv_btns_transp = .rects.empty = 1, .rects.hpad = 10 * LV_STYLE_MULT, .rects.vpad = 15 * LV_STYLE_MULT, - .rects.opad = 10 * LV_STYLE_MULT, + .rects.opad = 5 * LV_STYLE_MULT, }; static lv_btns_t lv_btns_border = @@ -85,8 +85,8 @@ static lv_btns_t lv_btns_border = .rects.bopa = 50, .rects.round = 4 * LV_STYLE_MULT, .rects.hpad = 10 * LV_STYLE_MULT, - .rects.vpad = 15 * LV_STYLE_MULT, .rects.vpad = 10 * LV_STYLE_MULT, + .rects.vpad = 5 * LV_STYLE_MULT, }; /********************** @@ -125,7 +125,7 @@ lv_obj_t* lv_btn_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) btn_ext_dp->lpr_action = NULL; btn_ext_dp->tgl = 0; lv_obj_set_style(new_obj_dp, &lv_btns_def); - lv_rect_set_layout(new_obj_dp, LV_LAYOUT_CENTER); + lv_rect_set_layout(new_obj_dp, LV_RECT_LAYOUT_CENTER); } /*Copy 'copy_dp'*/ else{ diff --git a/lv_objx/lv_list.c b/lv_objx/lv_list.c index 536cac3e71..e8c2308bf3 100644 --- a/lv_objx/lv_list.c +++ b/lv_objx/lv_list.c @@ -16,6 +16,7 @@ /********************* * DEFINES *********************/ +#define LV_LIST_LAYOUT_DEF LV_RECT_LAYOUT_COL_M /********************** * TYPEDEFS @@ -34,20 +35,17 @@ static lv_lists_t lv_lists_def = /*Page style*/ .pages.bg_rects.objs.color = COLOR_WHITE, .pages.bg_rects.gcolor = COLOR_SILVER, .pages.bg_rects.bcolor = COLOR_GRAY, .pages.bg_rects.bopa = 50, .pages.bg_rects.bwidth = 0 * LV_STYLE_MULT, .pages.bg_rects.round = 2 * LV_STYLE_MULT, - .pages.bg_rects.empty = 0, - .pages.bg_rects.vpad = 40, - .pages.bg_rects.hpad = 20, - .pages.bg_rects.opad = 10, + .pages.bg_rects.empty = 1, + .pages.bg_rects.vpad = 0 * LV_STYLE_MULT, + .pages.bg_rects.hpad = 0 * LV_STYLE_MULT, + .pages.bg_rects.opad = 5 * LV_STYLE_MULT, .pages.sb_rects.objs.color = COLOR_BLACK, .pages.sb_rects.gcolor = COLOR_BLACK, .pages.sb_rects.bcolor = COLOR_WHITE, .pages.sb_rects.bopa = 50, .pages.sb_rects.bwidth = 1 * LV_STYLE_MULT, .pages.sb_rects.round = 5 * LV_STYLE_MULT, - .pages.sb_rects.empty = 0, .pages.sb_width= 8 * LV_STYLE_MULT, .pages.sb_opa=50, .pages.sb_mode = LV_PAGE_SB_MODE_ON, + .pages.sb_rects.empty = 0, .pages.sb_width= 8 * LV_STYLE_MULT, .pages.sb_opa=50, .pages.sb_mode = LV_PAGE_SB_MODE_AUTO, .pages.margin_ver = 0 * LV_STYLE_MULT, - .pages.margin_ver = 0 * LV_STYLE_MULT, - - /*List style*/ - .list_layout = LV_LAYOUT_CENTER, + .pages.margin_hor = 0 * LV_STYLE_MULT, /*List element style*/ .liste_btns.mcolor[LV_BTN_STATE_REL] = COLOR_MAKE(0xa0, 0xa0, 0xa0), .liste_btns.gcolor[LV_BTN_STATE_REL] = COLOR_WHITE, .liste_btns.bcolor[LV_BTN_STATE_REL] = COLOR_WHITE, @@ -58,10 +56,10 @@ static lv_lists_t lv_lists_def = .liste_btns.rects.bwidth = 2 * LV_STYLE_MULT, .liste_btns.rects.bopa = 50, .liste_btns.rects.empty = 0, .liste_btns.rects.round = 4 * LV_STYLE_MULT, .liste_btns.rects.hpad = 10 * LV_STYLE_MULT, - .liste_btns.rects.vpad = 20 * LV_STYLE_MULT, - .liste_btns.rects.opad = 5 * LV_STYLE_MULT, + .liste_btns.rects.vpad = 10 * LV_STYLE_MULT, + .liste_btns.rects.opad = 3 * LV_STYLE_MULT, - .liste_layout = LV_LAYOUT_ROW_M, + .liste_layout = LV_RECT_LAYOUT_CENTER }; /********************** @@ -90,7 +88,7 @@ lv_obj_t* lv_list_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) /*Init the new list object*/ lv_obj_set_style(new_obj_dp, &lv_lists_def.pages); - lv_rect_set_layout(new_obj_dp, lv_lists_def.list_layout); + lv_rect_set_layout(new_obj_dp, LV_LIST_LAYOUT_DEF); return new_obj_dp; } @@ -129,7 +127,7 @@ void lv_list_add(lv_obj_t * obj_dp, const char * img_fn, const char * txt, void //lv_btn_set_rel_action(liste, release); lv_page_glue_obj(liste, true); lv_rect_set_layout(liste, lv_lists_def.liste_layout); - lv_rect_set_fit(liste, true, true); + lv_rect_set_fit(liste, false, true); if(img_fn != NULL) { diff --git a/lv_objx/lv_list.h b/lv_objx/lv_list.h index 49b4bd17f0..6a4c871c38 100644 --- a/lv_objx/lv_list.h +++ b/lv_objx/lv_list.h @@ -27,15 +27,9 @@ /*Style of LIST*/ typedef struct { - /*Ancestor page style*/ - lv_pages_t pages; - /*List style*/ - lv_layout_t list_layout; - cord_t list_layout_space; - /*List element style*/ + lv_pages_t pages; /*Ancestor page style*/ lv_btns_t liste_btns; - lv_layout_t liste_layout; - cord_t liste_layout_space; + lv_rect_layout_t liste_layout; }lv_lists_t; diff --git a/lv_objx/lv_page.c b/lv_objx/lv_page.c index 9801bccc0f..166a7ee71a 100644 --- a/lv_objx/lv_page.c +++ b/lv_objx/lv_page.c @@ -39,8 +39,9 @@ static lv_pages_t lv_pages_def = .bg_rects.bwidth = 0 * LV_STYLE_MULT, .bg_rects.round = 2 * LV_STYLE_MULT, .bg_rects.empty = 0, - .bg_rects.hpad = 10, - .bg_rects.vpad = 10, + .bg_rects.hpad = 10 * LV_STYLE_MULT, + .bg_rects.vpad = 10 * LV_STYLE_MULT, + .bg_rects.opad = 5 * LV_STYLE_MULT, .sb_rects.objs.color = COLOR_BLACK, .sb_rects.gcolor = COLOR_BLACK, @@ -49,6 +50,9 @@ static lv_pages_t lv_pages_def = .sb_rects.bwidth = 1 * LV_STYLE_MULT, .sb_rects.round = 5 * LV_STYLE_MULT, .sb_rects.empty = 0, + .sb_rects.hpad = 0, + .sb_rects.vpad = 0, + .sb_rects.opad = 0, .sb_width= 8 * LV_STYLE_MULT, .sb_opa=50, @@ -70,6 +74,7 @@ static lv_pages_t lv_pages_paper = .bg_rects.empty = 0, .bg_rects.hpad = 20 * LV_STYLE_MULT, .bg_rects.vpad = 20 * LV_STYLE_MULT, + .bg_rects.opad = 10 * LV_STYLE_MULT, .sb_rects.objs.color = COLOR_BLACK, .sb_rects.gcolor = COLOR_BLACK, @@ -78,6 +83,9 @@ static lv_pages_t lv_pages_paper = .sb_rects.bwidth = 1 * LV_STYLE_MULT, .sb_rects.round = 5 * LV_STYLE_MULT, .sb_rects.empty = 0, + .sb_rects.hpad = 0, + .sb_rects.vpad = 0, + .sb_rects.opad = 0, .sb_width = 10 * LV_STYLE_MULT, .sb_opa=50, @@ -90,8 +98,9 @@ static lv_pages_t lv_pages_paper = static lv_pages_t lv_pages_transp = { .bg_rects.empty = 1, - .bg_rects.hpad = 1, - .bg_rects.vpad = 1, + .bg_rects.hpad = 10 * LV_STYLE_MULT, + .bg_rects.vpad = 10 * LV_STYLE_MULT, + .bg_rects.vpad = 10 * LV_STYLE_MULT, .sb_rects.objs.color = COLOR_BLACK, .sb_rects.gcolor = COLOR_BLACK, @@ -100,6 +109,9 @@ static lv_pages_t lv_pages_transp = .sb_rects.bwidth = 1 * LV_STYLE_MULT, .sb_rects.round = 5 * LV_STYLE_MULT, .sb_rects.empty = 0, + .sb_rects.hpad = 0, + .sb_rects.vpad = 0, + .sb_rects.opad = 0, .sb_width = 8 * LV_STYLE_MULT, .sb_opa = 50, @@ -142,7 +154,7 @@ lv_obj_t* lv_page_create(lv_obj_t * par_dp, lv_obj_t * ori_dp) lv_obj_set_drag_throw(new_dp, true); lv_obj_set_style(new_dp, &lv_pages_def); lv_rect_set_fit(new_dp, true, true); - } else { + } else { lv_obj_set_style(new_dp, lv_obj_get_style(ori_dp)); } diff --git a/lv_objx/lv_rect.c b/lv_objx/lv_rect.c index f11f30a4a1..67b9ab4f0d 100644 --- a/lv_objx/lv_rect.c +++ b/lv_objx/lv_rect.c @@ -6,7 +6,15 @@ /********************* * INCLUDES *********************/ -#include "lv_conf.h" + +#include +#include +#include +#include +#include +#include +#include + #if USE_LV_RECT != 0 #include "lv_rect.h" @@ -27,9 +35,9 @@ **********************/ static bool lv_rect_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mode_t mode); static void lv_rect_refr_layout(lv_obj_t * obj_dp); -static void lv_layout_col(lv_obj_t * obj_dp); -static void lv_layout_row(lv_obj_t * obj_dp); -static void lv_layout_center(lv_obj_t * obj_dp); +static void lv_rect_layout_col(lv_obj_t * obj_dp); +static void lv_rect_layout_row(lv_obj_t * obj_dp); +static void lv_rect_layout_center(lv_obj_t * obj_dp); static void lv_rect_refr_autofit(lv_obj_t * obj_dp); /********************** @@ -39,11 +47,11 @@ static lv_rects_t lv_rects_def = { .objs.color = COLOR_MAKE(0x20, 0x30, 0x40), .gcolor = COLOR_MAKE(0x50, 0x70, 0x90), .bcolor = COLOR_WHITE, .bwidth = 2 * LV_STYLE_MULT, .bopa = 50, .round = 4 * LV_STYLE_MULT, .empty = 0, - .hpad = 0 * LV_STYLE_MULT, .vpad = 0 * LV_STYLE_MULT, .opad = 0 * LV_STYLE_MULT }; + .hpad = 10 * LV_STYLE_MULT, .vpad = 10 * LV_STYLE_MULT, .opad = 10 * LV_STYLE_MULT }; static lv_rects_t lv_rects_transp = { .bwidth = 0, .empty = 1, - .hpad = 0, .vpad = 0, .opad = 0}; + .hpad = 10 * LV_STYLE_MULT, .vpad = 10 * LV_STYLE_MULT, .opad = 10 * LV_STYLE_MULT}; static lv_rects_t lv_rects_border = { .bcolor = COLOR_BLACK, .bwidth = 2 * LV_STYLE_MULT, .bopa = 100, @@ -91,7 +99,7 @@ lv_obj_t* lv_rect_create(lv_obj_t* par_dp, lv_obj_t * copy_dp) return new_obj_dp; } - +uint32_t sign_cnt = 0; /** * Signal function of the rectangle * @param obj_dp pointer to a rectangle object @@ -111,13 +119,16 @@ bool lv_rect_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) switch(sign) { case LV_SIGNAL_STYLE_CHG: /*Recalculate the padding if the style changed*/ case LV_SIGNAL_CHILD_CHG: + sign_cnt++; lv_rect_refr_layout(obj_dp); lv_rect_refr_autofit(obj_dp); break; case LV_SIGNAL_CORD_CHG: + sign_cnt++; if(lv_obj_get_width(obj_dp) != area_get_width(param) || lv_obj_get_height(obj_dp) != area_get_height(param)) { lv_rect_refr_layout(obj_dp); + lv_rect_refr_autofit(obj_dp); } break; @@ -136,7 +147,7 @@ bool lv_rect_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param) * Setter functions *====================*/ -void lv_rect_set_layout(lv_obj_t * obj_dp, lv_layout_t layout) +void lv_rect_set_layout(lv_obj_t * obj_dp, lv_rect_layout_t layout) { lv_rect_ext_t * ext_p = lv_obj_get_ext(obj_dp); ext_p->layout = layout; @@ -168,7 +179,7 @@ void lv_rect_set_fit(lv_obj_t * obj_dp, bool hor_en, bool ver_en) * Getter functions *====================*/ -lv_layout_t lv_rect_get_layout(lv_obj_t * obj_dp) +lv_rect_layout_t lv_rect_get_layout(lv_obj_t * obj_dp) { lv_rect_ext_t * ext_p = lv_obj_get_ext(obj_dp); return ext_p->layout; @@ -179,7 +190,7 @@ lv_layout_t lv_rect_get_layout(lv_obj_t * obj_dp) * @param obj_dp pointer to a rectangle object * @return true: horizontal padding is enabled */ -bool lv_rect_get_hpad_en(lv_obj_t * obj_dp) +bool lv_rect_get_hfit(lv_obj_t * obj_dp) { lv_rect_ext_t * ext_p = lv_obj_get_ext(obj_dp); return ext_p->hfit_en == 0 ? false : true; @@ -190,7 +201,7 @@ bool lv_rect_get_hpad_en(lv_obj_t * obj_dp) * @param obj_dp pointer to a rectangle object * @return true: vertical padding is enabled */ -bool lv_rect_get_vpad_en(lv_obj_t * obj_dp) +bool lv_rect_get_vfit(lv_obj_t * obj_dp) { lv_rect_ext_t * ext_p = lv_obj_get_ext(obj_dp); return ext_p->vfit_en == 0 ? false : true; @@ -283,16 +294,16 @@ static bool lv_rect_design(lv_obj_t* obj_dp, const area_t * mask_p, lv_design_mo */ static void lv_rect_refr_layout(lv_obj_t * obj_dp) { - lv_layout_t type = lv_rect_get_layout(obj_dp); + lv_rect_layout_t type = lv_rect_get_layout(obj_dp); - if(type == LV_LAYOUT_OFF) return; + if(type == LV_RECT_LAYOUT_OFF) return; - if(type == LV_LAYOUT_COL_L || type == LV_LAYOUT_COL_M || type == LV_LAYOUT_COL_R) { - lv_layout_col(obj_dp); - } else if(type == LV_LAYOUT_ROW_T || type == LV_LAYOUT_ROW_M || type == LV_LAYOUT_ROW_B) { - lv_layout_row(obj_dp); - } else if(type == LV_LAYOUT_CENTER) { - lv_layout_center(obj_dp); + if(type == LV_RECT_LAYOUT_COL_L || type == LV_RECT_LAYOUT_COL_M || type == LV_RECT_LAYOUT_COL_R) { + lv_rect_layout_col(obj_dp); + } else if(type == LV_RECT_LAYOUT_ROW_T || type == LV_RECT_LAYOUT_ROW_M || type == LV_RECT_LAYOUT_ROW_B) { + lv_rect_layout_row(obj_dp); + } else if(type == LV_RECT_LAYOUT_CENTER) { + lv_rect_layout_center(obj_dp); } } @@ -301,9 +312,9 @@ static void lv_rect_refr_layout(lv_obj_t * obj_dp) * Handle column type layouts * @param obj_dp pointer to an object which layout should be handled */ -static void lv_layout_col(lv_obj_t * obj_dp) +static void lv_rect_layout_col(lv_obj_t * obj_dp) { - lv_layout_t type = lv_rect_get_layout(obj_dp); + lv_rect_layout_t type = lv_rect_get_layout(obj_dp); lv_obj_t * child; /*Adjust margin and get the alignment type*/ @@ -311,15 +322,15 @@ static void lv_layout_col(lv_obj_t * obj_dp) lv_rects_t * rects_p = lv_obj_get_style(obj_dp); cord_t hpad_corr; switch(type) { - case LV_LAYOUT_COL_L: + case LV_RECT_LAYOUT_COL_L: hpad_corr = rects_p->hpad; align = LV_ALIGN_IN_TOP_LEFT; break; - case LV_LAYOUT_COL_M: + case LV_RECT_LAYOUT_COL_M: hpad_corr = 0; align = LV_ALIGN_IN_TOP_MID; break; - case LV_LAYOUT_COL_R: + case LV_RECT_LAYOUT_COL_R: hpad_corr = -rects_p->hpad; align = LV_ALIGN_IN_TOP_RIGHT; break; @@ -345,9 +356,9 @@ static void lv_layout_col(lv_obj_t * obj_dp) * Handle row type layouts * @param obj_dp pointer to an object which layout should be handled */ -static void lv_layout_row(lv_obj_t * obj_dp) +static void lv_rect_layout_row(lv_obj_t * obj_dp) { - lv_layout_t type = lv_rect_get_layout(obj_dp); + lv_rect_layout_t type = lv_rect_get_layout(obj_dp); lv_obj_t * child; /*Adjust margin and get the alignment type*/ @@ -355,15 +366,15 @@ static void lv_layout_row(lv_obj_t * obj_dp) lv_rects_t * rects_p = lv_obj_get_style(obj_dp); cord_t vpad_corr = rects_p->vpad; switch(type) { - case LV_LAYOUT_ROW_T: + case LV_RECT_LAYOUT_ROW_T: vpad_corr = rects_p->vpad; align = LV_ALIGN_IN_TOP_LEFT; break; - case LV_LAYOUT_ROW_M: + case LV_RECT_LAYOUT_ROW_M: vpad_corr = 0; align = LV_ALIGN_IN_LEFT_MID; break; - case LV_LAYOUT_ROW_B: + case LV_RECT_LAYOUT_ROW_B: vpad_corr = -rects_p->vpad; align = LV_ALIGN_IN_BOTTOM_LEFT; break; @@ -389,7 +400,7 @@ static void lv_layout_row(lv_obj_t * obj_dp) } -static void lv_layout_center(lv_obj_t * obj_dp) +static void lv_rect_layout_center(lv_obj_t * obj_dp) { lv_obj_t * child; lv_rects_t * rects_p = lv_obj_get_style(obj_dp); @@ -409,7 +420,6 @@ static void lv_layout_center(lv_obj_t * obj_dp) * an unnecessary child change signals could be sent*/ obj_dp->child_chg_off = 1; - /* Align the children */ cord_t last_cord = - (h_tot / 2); LL_READ_BACK(obj_dp->child_ll, child) { diff --git a/lv_objx/lv_rect.h b/lv_objx/lv_rect.h index 40d16910da..217ed6823a 100644 --- a/lv_objx/lv_rect.h +++ b/lv_objx/lv_rect.h @@ -25,15 +25,15 @@ typedef enum { - LV_LAYOUT_OFF = 0, - LV_LAYOUT_COL_L, - LV_LAYOUT_COL_M, - LV_LAYOUT_COL_R, - LV_LAYOUT_ROW_T, - LV_LAYOUT_ROW_M, - LV_LAYOUT_ROW_B, - LV_LAYOUT_CENTER, -}lv_layout_t; + LV_RECT_LAYOUT_OFF = 0, + LV_RECT_LAYOUT_CENTER, + LV_RECT_LAYOUT_COL_L, /*Column left align*/ + LV_RECT_LAYOUT_COL_M, /*Column middle align*/ + LV_RECT_LAYOUT_COL_R, /*Column right align*/ + LV_RECT_LAYOUT_ROW_T, /*Row row left align*/ + LV_RECT_LAYOUT_ROW_M, /*Row row middle align*/ + LV_RECT_LAYOUT_ROW_B, /*Row row right align*/ +}lv_rect_layout_t; typedef struct { @@ -41,10 +41,10 @@ typedef struct color_t gcolor; color_t bcolor; uint16_t bwidth; + uint16_t round; cord_t hpad; cord_t vpad; cord_t opad; - uint16_t round; uint8_t bopa; uint8_t empty :1; }lv_rects_t; @@ -52,9 +52,9 @@ typedef struct typedef struct { - uint8_t hfit_en:1; - uint8_t vfit_en:1; - lv_layout_t layout; + uint8_t layout :5; + uint8_t hfit_en :1; + uint8_t vfit_en :1; }lv_rect_ext_t; typedef enum @@ -72,11 +72,11 @@ lv_obj_t* lv_rect_create(lv_obj_t* par_dp, lv_obj_t * copy_dp); bool lv_rect_signal(lv_obj_t* obj_dp, lv_signal_t sign, void * param); void lv_rect_set_fit(lv_obj_t * obj_dp, bool hor_en, bool ver_en); -void lv_rect_set_layout(lv_obj_t * obj_dp, lv_layout_t layout); +void lv_rect_set_layout(lv_obj_t * obj_dp, lv_rect_layout_t layout); -lv_layout_t lv_rect_get_layout(lv_obj_t * obj_dp); -bool lv_rect_get_hpad_en(lv_obj_t * obj_dp); -bool lv_rect_get_vpad_en(lv_obj_t * obj_dp); +lv_rect_layout_t lv_rect_get_layout(lv_obj_t * obj_dp); +bool lv_rect_get_hfit(lv_obj_t * obj_dp); +bool lv_rect_get_vfit(lv_obj_t * obj_dp); lv_rects_t * lv_rects_get(lv_rects_builtin_t style, lv_rects_t * copy_p);