built-in style configurations

This commit is contained in:
Kiss-Vamosi Gabor
2016-06-22 21:52:39 +02:00
parent 708051423f
commit e302062fb0
7 changed files with 94 additions and 81 deletions

View File

@@ -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;

View File

@@ -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{

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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,

View File

@@ -6,7 +6,15 @@
/*********************
* INCLUDES
*********************/
#include "lv_conf.h"
#include <lvgl/lv_misc/2d.h>
#include <misc/mem/dyn_mem.h>
#include <misc/mem/linked_list.h>
#include <misc/others/color.h>
#include <stdbool.h>
#include <stdint.h>
#include <string.h>
#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) {

View File

@@ -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 layout :5;
uint8_t hfit_en :1;
uint8_t vfit_en :1;
lv_layout_t layout;
}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);