feat(style) add basic support to min/max-width/height
This commit is contained in:
@@ -23,7 +23,11 @@ props = [
|
|||||||
{'name': 'PAD_ROW', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
{'name': 'PAD_ROW', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
||||||
{'name': 'PAD_COLUMN', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
{'name': 'PAD_COLUMN', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
||||||
{'name': 'WIDTH', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
{'name': 'WIDTH', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
||||||
|
{'name': 'MIN_WIDTH', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
||||||
|
{'name': 'MAX_WIDTH', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
||||||
{'name': 'HEIGHT', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
{'name': 'HEIGHT', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
||||||
|
{'name': 'MIN_HEIGHT', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
||||||
|
{'name': 'MAX_HEIGHT', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
||||||
{'name': 'X', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
{'name': 'X', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
||||||
{'name': 'Y', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
{'name': 'Y', 'style_type': 'num', 'var_type': 'lv_coord_t' },
|
||||||
{'name': 'ALIGN', 'style_type': 'num', 'var_type': 'lv_align_t' },
|
{'name': 'ALIGN', 'style_type': 'num', 'var_type': 'lv_align_t' },
|
||||||
|
|||||||
@@ -123,6 +123,14 @@ void lv_obj_refr_size(lv_obj_t * obj)
|
|||||||
if(pct_w) w = (LV_COORD_GET_PCT(w) * parent_w) / 100;
|
if(pct_w) w = (LV_COORD_GET_PCT(w) * parent_w) / 100;
|
||||||
if(pct_h) h = (LV_COORD_GET_PCT(h) * parent_h) / 100;
|
if(pct_h) h = (LV_COORD_GET_PCT(h) * parent_h) / 100;
|
||||||
|
|
||||||
|
lv_coord_t minw = lv_obj_get_style_min_width(obj, LV_PART_MAIN);
|
||||||
|
lv_coord_t maxw = lv_obj_get_style_max_width(obj, LV_PART_MAIN);
|
||||||
|
w = LV_CLAMP(minw, w, maxw);
|
||||||
|
|
||||||
|
lv_coord_t minh = lv_obj_get_style_min_height(obj, LV_PART_MAIN);
|
||||||
|
lv_coord_t maxh = lv_obj_get_style_max_height(obj, LV_PART_MAIN);
|
||||||
|
h = LV_CLAMP(minh, h, maxh);
|
||||||
|
|
||||||
/*Do nothing if the size is not changed*/
|
/*Do nothing if the size is not changed*/
|
||||||
/*It is very important else recursive resizing can occur without size change*/
|
/*It is very important else recursive resizing can occur without size change*/
|
||||||
if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) return;
|
if(lv_obj_get_width(obj) == w && lv_obj_get_height(obj) == h) return;
|
||||||
@@ -837,7 +845,6 @@ bool lv_obj_hit_test(lv_obj_t * obj, const lv_point_t * point)
|
|||||||
* STATIC FUNCTIONS
|
* STATIC FUNCTIONS
|
||||||
**********************/
|
**********************/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate the "auto size". It's `auto_size = max(children_size, self_size)`
|
* Calculate the "auto size". It's `auto_size = max(children_size, self_size)`
|
||||||
* @param obj pointer to an object
|
* @param obj pointer to an object
|
||||||
|
|||||||
@@ -353,6 +353,13 @@ _lv_style_state_cmp_t _lv_obj_style_state_compare(lv_obj_t * obj, lv_state_t sta
|
|||||||
else if(lv_style_get_prop(style, LV_STYLE_PAD_RIGHT, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
else if(lv_style_get_prop(style, LV_STYLE_PAD_RIGHT, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
||||||
else if(lv_style_get_prop(style, LV_STYLE_PAD_COLUMN, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
else if(lv_style_get_prop(style, LV_STYLE_PAD_COLUMN, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
||||||
else if(lv_style_get_prop(style, LV_STYLE_PAD_ROW, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
else if(lv_style_get_prop(style, LV_STYLE_PAD_ROW, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
||||||
|
else if(lv_style_get_prop(style, LV_STYLE_LAYOUT, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
||||||
|
else if(lv_style_get_prop(style, LV_STYLE_WIDTH, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
||||||
|
else if(lv_style_get_prop(style, LV_STYLE_HEIGHT, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
||||||
|
else if(lv_style_get_prop(style, LV_STYLE_MIN_WIDTH, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
||||||
|
else if(lv_style_get_prop(style, LV_STYLE_MAX_WIDTH, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
||||||
|
else if(lv_style_get_prop(style, LV_STYLE_MIN_HEIGHT, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
||||||
|
else if(lv_style_get_prop(style, LV_STYLE_MAX_HEIGHT, &v)) res_tmp = _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
||||||
|
|
||||||
if(res_tmp == _LV_STYLE_STATE_CMP_DIFF_LAYOUT) {
|
if(res_tmp == _LV_STYLE_STATE_CMP_DIFF_LAYOUT) {
|
||||||
if(part_act == LV_PART_MAIN) return _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
if(part_act == LV_PART_MAIN) return _LV_STYLE_STATE_CMP_DIFF_LAYOUT;
|
||||||
|
|||||||
@@ -118,12 +118,36 @@ static inline lv_coord_t lv_obj_get_style_width(const struct _lv_obj_t * obj, ui
|
|||||||
return (lv_coord_t)v.num;
|
return (lv_coord_t)v.num;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline lv_coord_t lv_obj_get_style_min_width(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_MIN_WIDTH);
|
||||||
|
return (lv_coord_t)v.num;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline lv_coord_t lv_obj_get_style_max_width(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_MAX_WIDTH);
|
||||||
|
return (lv_coord_t)v.num;
|
||||||
|
}
|
||||||
|
|
||||||
static inline lv_coord_t lv_obj_get_style_height(const struct _lv_obj_t * obj, uint32_t part)
|
static inline lv_coord_t lv_obj_get_style_height(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_HEIGHT);
|
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_HEIGHT);
|
||||||
return (lv_coord_t)v.num;
|
return (lv_coord_t)v.num;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline lv_coord_t lv_obj_get_style_min_height(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_MIN_HEIGHT);
|
||||||
|
return (lv_coord_t)v.num;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline lv_coord_t lv_obj_get_style_max_height(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_MAX_HEIGHT);
|
||||||
|
return (lv_coord_t)v.num;
|
||||||
|
}
|
||||||
|
|
||||||
static inline lv_coord_t lv_obj_get_style_x(const struct _lv_obj_t * obj, uint32_t part)
|
static inline lv_coord_t lv_obj_get_style_x(const struct _lv_obj_t * obj, uint32_t part)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_X);
|
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_X);
|
||||||
@@ -650,6 +674,22 @@ static inline void lv_obj_set_style_width(struct _lv_obj_t * obj, lv_coord_t val
|
|||||||
lv_obj_set_local_style_prop(obj, LV_STYLE_WIDTH, v, selector);
|
lv_obj_set_local_style_prop(obj, LV_STYLE_WIDTH, v, selector);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void lv_obj_set_style_min_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = {
|
||||||
|
.num = (int32_t)value
|
||||||
|
};
|
||||||
|
lv_obj_set_local_style_prop(obj, LV_STYLE_MIN_WIDTH, v, selector);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void lv_obj_set_style_max_width(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = {
|
||||||
|
.num = (int32_t)value
|
||||||
|
};
|
||||||
|
lv_obj_set_local_style_prop(obj, LV_STYLE_MAX_WIDTH, v, selector);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void lv_obj_set_style_height(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector)
|
static inline void lv_obj_set_style_height(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = {
|
lv_style_value_t v = {
|
||||||
@@ -658,6 +698,22 @@ static inline void lv_obj_set_style_height(struct _lv_obj_t * obj, lv_coord_t va
|
|||||||
lv_obj_set_local_style_prop(obj, LV_STYLE_HEIGHT, v, selector);
|
lv_obj_set_local_style_prop(obj, LV_STYLE_HEIGHT, v, selector);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void lv_obj_set_style_min_height(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = {
|
||||||
|
.num = (int32_t)value
|
||||||
|
};
|
||||||
|
lv_obj_set_local_style_prop(obj, LV_STYLE_MIN_HEIGHT, v, selector);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void lv_obj_set_style_max_height(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = {
|
||||||
|
.num = (int32_t)value
|
||||||
|
};
|
||||||
|
lv_obj_set_local_style_prop(obj, LV_STYLE_MAX_HEIGHT, v, selector);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void lv_obj_set_style_x(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector)
|
static inline void lv_obj_set_style_x(struct _lv_obj_t * obj, lv_coord_t value, lv_style_selector_t selector)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = {
|
lv_style_value_t v = {
|
||||||
|
|||||||
@@ -240,6 +240,10 @@ lv_style_value_t lv_style_prop_get_default(lv_style_prop_t prop)
|
|||||||
case LV_STYLE_SIZE:
|
case LV_STYLE_SIZE:
|
||||||
value.num = 5;
|
value.num = 5;
|
||||||
break;
|
break;
|
||||||
|
case LV_STYLE_MAX_WIDTH:
|
||||||
|
case LV_STYLE_MAX_HEIGHT:
|
||||||
|
value.num = LV_COORD_MAX;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
value.ptr = NULL;
|
value.ptr = NULL;
|
||||||
value.num = 0;
|
value.num = 0;
|
||||||
|
|||||||
@@ -135,11 +135,15 @@ typedef enum {
|
|||||||
LV_STYLE_PAD_COLUMN = 21 | LV_STYLE_PROP_LAYOUT_REFR,
|
LV_STYLE_PAD_COLUMN = 21 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||||
|
|
||||||
LV_STYLE_WIDTH = 22 | LV_STYLE_PROP_LAYOUT_REFR,
|
LV_STYLE_WIDTH = 22 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||||
LV_STYLE_HEIGHT = 23 | LV_STYLE_PROP_LAYOUT_REFR,
|
LV_STYLE_MIN_WIDTH = 23 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||||
LV_STYLE_X = 24 | LV_STYLE_PROP_LAYOUT_REFR,
|
LV_STYLE_MAX_WIDTH = 24 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||||
LV_STYLE_Y = 25 | LV_STYLE_PROP_LAYOUT_REFR,
|
LV_STYLE_HEIGHT = 25 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||||
LV_STYLE_LAYOUT = 26 | LV_STYLE_PROP_LAYOUT_REFR,
|
LV_STYLE_MIN_HEIGHT = 26 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||||
LV_STYLE_ALIGN = 27 | LV_STYLE_PROP_LAYOUT_REFR,
|
LV_STYLE_MAX_HEIGHT = 27 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||||
|
LV_STYLE_X = 28 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||||
|
LV_STYLE_Y = 29 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||||
|
LV_STYLE_LAYOUT = 30 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||||
|
LV_STYLE_ALIGN = 31 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||||
|
|
||||||
/*Group 2*/
|
/*Group 2*/
|
||||||
LV_STYLE_BG_COLOR = 32,
|
LV_STYLE_BG_COLOR = 32,
|
||||||
|
|||||||
@@ -158,6 +158,22 @@ static inline void lv_style_set_width(lv_style_t * style, lv_coord_t value)
|
|||||||
lv_style_set_prop(style, LV_STYLE_WIDTH, v);
|
lv_style_set_prop(style, LV_STYLE_WIDTH, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void lv_style_set_min_width(lv_style_t * style, lv_coord_t value)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = {
|
||||||
|
.num = (int32_t)value
|
||||||
|
};
|
||||||
|
lv_style_set_prop(style, LV_STYLE_MIN_WIDTH, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void lv_style_set_max_width(lv_style_t * style, lv_coord_t value)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = {
|
||||||
|
.num = (int32_t)value
|
||||||
|
};
|
||||||
|
lv_style_set_prop(style, LV_STYLE_MAX_WIDTH, v);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void lv_style_set_height(lv_style_t * style, lv_coord_t value)
|
static inline void lv_style_set_height(lv_style_t * style, lv_coord_t value)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = {
|
lv_style_value_t v = {
|
||||||
@@ -166,6 +182,22 @@ static inline void lv_style_set_height(lv_style_t * style, lv_coord_t value)
|
|||||||
lv_style_set_prop(style, LV_STYLE_HEIGHT, v);
|
lv_style_set_prop(style, LV_STYLE_HEIGHT, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void lv_style_set_min_height(lv_style_t * style, lv_coord_t value)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = {
|
||||||
|
.num = (int32_t)value
|
||||||
|
};
|
||||||
|
lv_style_set_prop(style, LV_STYLE_MIN_HEIGHT, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void lv_style_set_max_height(lv_style_t * style, lv_coord_t value)
|
||||||
|
{
|
||||||
|
lv_style_value_t v = {
|
||||||
|
.num = (int32_t)value
|
||||||
|
};
|
||||||
|
lv_style_set_prop(style, LV_STYLE_MAX_HEIGHT, v);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void lv_style_set_x(lv_style_t * style, lv_coord_t value)
|
static inline void lv_style_set_x(lv_style_t * style, lv_coord_t value)
|
||||||
{
|
{
|
||||||
lv_style_value_t v = {
|
lv_style_value_t v = {
|
||||||
|
|||||||
Reference in New Issue
Block a user