add color filter style property
This commit is contained in:
98
scripts/style_api_gen.py
Executable file
98
scripts/style_api_gen.py
Executable file
@@ -0,0 +1,98 @@
|
||||
props = [
|
||||
{'name': 'RADIUS', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'CLIP_CORNER', 'style_type': '_int', 'var_type': 'bool' },
|
||||
{'name': 'TRANSFORM_WIDTH', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'TRANSFORM_HEIGHT', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'TRANSFORM_ZOOM', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'TRANSFORM_ANGLE', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'OPA', 'style_type': '_int', 'var_type': 'lv_opa_t' },
|
||||
{'name': 'COLOR_FILTER_CB', 'style_type': '_func', 'var_type': 'lv_color_filter_cb_t' },
|
||||
{'name': 'COLOR_FILTER_OPA', 'style_type': '_int', 'var_type': 'lv_opa_t' },
|
||||
{'name': 'PAD_TOP', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'PAD_BOTTOM', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'PAD_LEFT', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'PAD_RIGHT', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'MARGIN_TOP', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'MARGIN_BOTTOM', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'MARGIN_LEFT', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'MARGIN_RIGHT', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'BG_COLOR', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'BG_COLOR_FILTERED', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'BG_OPA', 'style_type': '_int', 'var_type': 'lv_opa_t' },
|
||||
{'name': 'BG_GRAD_COLOR', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'BG_GRAD_COLOR_FILTERED', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'BG_GRAD_DIR', 'style_type': '_int', 'var_type': 'lv_grad_dir_t' },
|
||||
{'name': 'BG_BLEND_MODE', 'style_type': '_int', 'var_type': 'lv_blend_mode_t' },
|
||||
{'name': 'BG_MAIN_STOP', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'BG_GRAD_STOP', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'BORDER_COLOR', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'BORDER_COLOR_FILTERED', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'BORDER_OPA', 'style_type': '_int', 'var_type': 'lv_opa_t' },
|
||||
{'name': 'BORDER_WIDTH', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'BORDER_SIDE', 'style_type': '_int', 'var_type': 'lv_border_side_t' },
|
||||
{'name': 'BORDER_POST', 'style_type': '_int', 'var_type': 'bool' },
|
||||
{'name': 'BORDER_BLEND_MODE', 'style_type': '_int', 'var_type': 'lv_blend_mode_t' },
|
||||
{'name': 'TEXT_COLOR', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'TEXT_COLOR_FILTERED', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'TEXT_OPA', 'style_type': '_int', 'var_type': 'lv_opa_t' },
|
||||
{'name': 'TEXT_FONT', 'style_type': '_ptr', 'var_type': 'const lv_font_t *' },
|
||||
{'name': 'TEXT_LETTER_SPACE', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'TEXT_LINE_SPACE', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'TEXT_DECOR', 'style_type': '_int', 'var_type': 'lv_text_decor_t' },
|
||||
{'name': 'TEXT_BLEND_MODE', 'style_type': '_int', 'var_type': 'lv_blend_mode_t' },
|
||||
{'name': 'IMG_OPA', 'style_type': '_int', 'var_type': 'lv_opa_t' },
|
||||
{'name': 'IMG_BLEND_MODE', 'style_type': '_int', 'var_type': 'lv_blend_mode_t' },
|
||||
{'name': 'IMG_RECOLOR', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'IMG_RECOLOR_FILTERED', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'IMG_RECOLOR_OPA', 'style_type': '_int', 'var_type': 'lv_opa_t' },
|
||||
{'name': 'OUTLINE_WIDTH', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'OUTLINE_COLOR', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'OUTLINE_OPA', 'style_type': '_int', 'var_type': 'lv_opa_t' },
|
||||
{'name': 'OUTLINE_PAD', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'OUTLINE_BLEND_MODE', 'style_type': '_int', 'var_type': 'lv_blend_mode_t' },
|
||||
{'name': 'SHADOW_WIDTH', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'SHADOW_OFS_X', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'SHADOW_OFS_Y', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'SHADOW_SPREAD', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'SHADOW_BLEND_MODE', 'style_type': '_int', 'var_type': 'lv_blend_mode_t' },
|
||||
{'name': 'SHADOW_COLOR', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'SHADOW_COLOR_FILTERED', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'SHADOW_OPA', 'style_type': '_int', 'var_type': 'lv_opa_t' },
|
||||
{'name': 'LINE_WIDTH', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'LINE_BLEND_MODE', 'style_type': '_int', 'var_type': 'lv_blend_mode_t' },
|
||||
{'name': 'LINE_DASH_WIDTH', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'LINE_DASH_GAP', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'LINE_ROUNDED', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'LINE_COLOR', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'LINE_COLOR_FILTERED', 'style_type': '_color', 'var_type': 'lv_color_t' },
|
||||
{'name': 'LINE_OPA', 'style_type': '_int', 'var_type': 'lv_opa_t' },
|
||||
{'name': 'CONTENT_SRC', 'style_type': '_ptr', 'var_type': 'const char *' },
|
||||
{'name': 'CONTENT_ALIGN', 'style_type': '_int', 'var_type': 'lv_align_t' },
|
||||
{'name': 'CONTENT_OFS_X', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'CONTENT_OFS_Y', 'style_type': '_int', 'var_type': 'lv_coord_t' },
|
||||
{'name': 'TRANSITION_TIME', 'style_type': '_int', 'var_type': 'uint16_t' },
|
||||
{'name': 'TRANSITION_DELAY', 'style_type': '_int', 'var_type': 'uint16_t' },
|
||||
{'name': 'TRANSITION_PATH', 'style_type': '_ptr', 'var_type': 'const lv_anim_path_t *' },
|
||||
{'name': 'TRANSITION_PROP_1', 'style_type': '_int', 'var_type': 'lv_style_prop_t' },
|
||||
{'name': 'TRANSITION_PROP_2', 'style_type': '_int', 'var_type': 'lv_style_prop_t' },
|
||||
{'name': 'TRANSITION_PROP_3', 'style_type': '_int', 'var_type': 'lv_style_prop_t' },
|
||||
{'name': 'TRANSITION_PROP_4', 'style_type': '_int', 'var_type': 'lv_style_prop_t' },
|
||||
{'name': 'TRANSITION_PROP_5', 'style_type': '_int', 'var_type': 'lv_style_prop_t' },
|
||||
{'name': 'TRANSITION_PROP_6', 'style_type': '_int', 'var_type': 'lv_style_prop_t' }
|
||||
]
|
||||
|
||||
def obj_style_get(i):
|
||||
print("static inline " + props[i]['var_type'] + " lv_obj_get_style_" + props[i]['name'].lower() +"(const struct _lv_obj_t * obj, uint32_t part) {")
|
||||
print(" lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_" + props[i]['name'] + "); return v." + props[i][ 'style_type'] + "; }")
|
||||
print("")
|
||||
|
||||
|
||||
def style_set(i):
|
||||
print("static inline void lv_style_set_" + props[i]['name'].lower() +"(lv_style_t * style, "+ props[i]['var_type'] +" value) {")
|
||||
print(" lv_style_value_t v = {." + props[i][ 'style_type'] +" = value}; lv_style_set_prop(style, LV_STYLE_" + props[i]['name'] +", v); }")
|
||||
print("")
|
||||
|
||||
|
||||
|
||||
for i in range(len(props)):
|
||||
obj_style_get(i)
|
||||
@@ -68,7 +68,7 @@ void lv_obj_init_draw_rect_dsc(lv_obj_t * obj, uint8_t part, lv_draw_rect_dsc_t
|
||||
if(draw_dsc->bg_opa != LV_OPA_TRANSP) {
|
||||
draw_dsc->bg_opa = lv_obj_get_style_bg_opa(obj, part);
|
||||
if(draw_dsc->bg_opa > LV_OPA_MIN) {
|
||||
draw_dsc->bg_color = lv_obj_get_style_bg_color(obj, part);
|
||||
draw_dsc->bg_color = lv_obj_get_style_bg_color_filtered(obj, part);
|
||||
draw_dsc->bg_grad_dir = lv_obj_get_style_bg_grad_dir(obj, part);
|
||||
if(draw_dsc->bg_grad_dir != LV_GRAD_DIR_NONE) {
|
||||
draw_dsc->bg_grad_color = lv_obj_get_style_bg_grad_color(obj, part);
|
||||
@@ -115,7 +115,7 @@ void lv_obj_init_draw_rect_dsc(lv_obj_t * obj, uint8_t part, lv_draw_rect_dsc_t
|
||||
|
||||
#if LV_USE_PATTERN
|
||||
if(draw_dsc->content_opa != LV_OPA_TRANSP) {
|
||||
draw_dsc->content_src = lv_obj_get_style_content_text(obj, part);
|
||||
draw_dsc->content_src = lv_obj_get_style_content_src(obj, part);
|
||||
if(draw_dsc->content_src) {
|
||||
draw_dsc->content_ofs_y = lv_obj_get_style_content_ofs_y(obj, part);
|
||||
draw_dsc->content_ofs_x = lv_obj_get_style_content_ofs_x(obj, part);
|
||||
@@ -331,7 +331,7 @@ lv_coord_t _lv_obj_get_draw_rect_ext_pad_size(lv_obj_t * obj, uint8_t part)
|
||||
}
|
||||
}
|
||||
|
||||
const void * content_src = lv_obj_get_style_content_text(obj, part);
|
||||
const void * content_src = lv_obj_get_style_content_src(obj, part);
|
||||
if(content_src) {
|
||||
lv_opa_t content_opa;
|
||||
lv_point_t content_size;
|
||||
|
||||
@@ -70,14 +70,6 @@ static void trans_anim_ready_cb(lv_anim_t * a);
|
||||
static void fade_anim_cb(lv_obj_t * obj, lv_anim_value_t v);
|
||||
static void fade_in_anim_ready(lv_anim_t * a);
|
||||
#endif
|
||||
static void style_snapshot(lv_obj_t * obj, uint8_t part, style_snapshot_t * shot);
|
||||
static _lv_style_state_cmp_t style_snapshot_compare(style_snapshot_t * shot1, style_snapshot_t * shot2);
|
||||
|
||||
#if LV_STYLE_CACHE_LEVEL >= 1
|
||||
static bool style_prop_is_cacheable(lv_style_property_t prop);
|
||||
static void update_style_cache(lv_obj_t * obj, uint8_t part, uint16_t prop);
|
||||
static void update_style_cache_children(lv_obj_t * obj);
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* STATIC VARIABLES
|
||||
@@ -290,6 +282,16 @@ void lv_obj_fade_out(lv_obj_t * obj, uint32_t time, uint32_t delay)
|
||||
}
|
||||
#endif
|
||||
|
||||
static lv_style_value_t apply_color_filter(const lv_obj_t * obj, uint32_t part, lv_style_value_t v)
|
||||
{
|
||||
if(obj == NULL) return v;
|
||||
lv_color_filter_cb_t f = lv_obj_get_style_color_filter_cb(obj, part);
|
||||
if(f) {
|
||||
lv_opa_t f_opa = lv_obj_get_style_color_filter_opa(obj, part);
|
||||
if(f_opa != 0) v._color = f(v._color, f_opa);
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a style property of a part of an object in the object's current state.
|
||||
@@ -311,6 +313,7 @@ lv_style_value_t lv_obj_get_style_prop(const lv_obj_t * obj, uint8_t part, lv_st
|
||||
lv_style_value_t value_final;
|
||||
bool found = false;
|
||||
bool inherit = prop & LV_STYLE_PROP_INHERIT ? true : false;
|
||||
bool filter = prop & LV_STYLE_PROP_FILTER ? true : false;
|
||||
const lv_obj_t * parent = obj;
|
||||
while(parent) {
|
||||
int32_t weight = -1;
|
||||
@@ -324,7 +327,10 @@ lv_style_value_t lv_obj_get_style_prop(const lv_obj_t * obj, uint8_t part, lv_st
|
||||
if(skip_trans) continue;
|
||||
if(obj_style->part != part) continue;
|
||||
found = lv_style_get_prop(obj_style->style, prop, &value_act);
|
||||
if(found) return value_act;
|
||||
if(found) {
|
||||
if(filter) value_act = apply_color_filter(parent, part, value_act);
|
||||
return value_act;
|
||||
}
|
||||
}
|
||||
|
||||
for(; i < parent->style_list.style_cnt; i++) {
|
||||
@@ -341,14 +347,20 @@ lv_style_value_t lv_obj_get_style_prop(const lv_obj_t * obj, uint8_t part, lv_st
|
||||
found = lv_style_get_prop(obj_style->style, prop, &value_act);
|
||||
|
||||
if(found) {
|
||||
if(obj_style->state == state) return value_act;
|
||||
if(obj_style->state == state) {
|
||||
if(filter) value_act = apply_color_filter(parent, part, value_act);
|
||||
return value_act;
|
||||
}
|
||||
if(weight < obj_style->state) {
|
||||
weight = obj_style->state;
|
||||
value_final = value_act;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(weight >= 0) return value_final;
|
||||
if(weight >= 0) {
|
||||
if(filter) value_final = apply_color_filter(parent, part, value_final);
|
||||
return value_final;
|
||||
}
|
||||
if(!inherit) break;
|
||||
|
||||
/*If not found, check the `MAIN` style first*/
|
||||
@@ -361,7 +373,9 @@ lv_style_value_t lv_obj_get_style_prop(const lv_obj_t * obj, uint8_t part, lv_st
|
||||
parent = lv_obj_get_parent(parent);
|
||||
}
|
||||
|
||||
return lv_style_prop_get_default(prop);
|
||||
value_act = lv_style_prop_get_default(prop);
|
||||
if(filter) value_act = apply_color_filter(parent, part, value_act);
|
||||
return value_act;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -712,11 +726,12 @@ static void trans_anim_cb(lv_style_trans_t * tr, lv_anim_value_t v)
|
||||
case LV_STYLE_SHADOW_BLEND_MODE:
|
||||
case LV_STYLE_TEXT_BLEND_MODE:
|
||||
case LV_STYLE_LINE_BLEND_MODE:
|
||||
if(v < 128) value_final._int = tr->start_value._int;
|
||||
if(v < 255) value_final._int = tr->start_value._int;
|
||||
else value_final._int = tr->end_value._int;
|
||||
break;
|
||||
case LV_STYLE_TEXT_FONT:
|
||||
if(v < 128) value_final._ptr = tr->start_value._ptr;
|
||||
case LV_STYLE_COLOR_FILTER_CB:
|
||||
if(v < 255) value_final._ptr = tr->start_value._ptr;
|
||||
else value_final._ptr = tr->end_value._ptr;
|
||||
break;
|
||||
|
||||
|
||||
@@ -164,6 +164,7 @@ _lv_style_state_cmp_t _lv_obj_style_state_compare(struct _lv_obj_t * obj, lv_sta
|
||||
/*********************
|
||||
* OBJ STYLE GET
|
||||
*********************/
|
||||
|
||||
static inline lv_coord_t lv_obj_get_style_radius(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_RADIUS); return v._int; }
|
||||
|
||||
@@ -185,6 +186,12 @@ static inline lv_coord_t lv_obj_get_style_transform_angle(const struct _lv_obj_t
|
||||
static inline lv_opa_t lv_obj_get_style_opa(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_OPA); return v._int; }
|
||||
|
||||
static inline lv_color_filter_cb_t lv_obj_get_style_color_filter_cb(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_COLOR_FILTER_CB); return (lv_color_filter_cb_t)v._func; }
|
||||
|
||||
static inline lv_opa_t lv_obj_get_style_color_filter_opa(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_COLOR_FILTER_OPA); return v._int; }
|
||||
|
||||
static inline lv_coord_t lv_obj_get_style_pad_top(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_PAD_TOP); return v._int; }
|
||||
|
||||
@@ -212,12 +219,18 @@ static inline lv_coord_t lv_obj_get_style_margin_right(const struct _lv_obj_t *
|
||||
static inline lv_color_t lv_obj_get_style_bg_color(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_COLOR); return v._color; }
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_bg_color_filtered(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_COLOR_FILTERED); return v._color; }
|
||||
|
||||
static inline lv_opa_t lv_obj_get_style_bg_opa(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_OPA); return v._int; }
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_bg_grad_color(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD_COLOR); return v._color; }
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_bg_grad_color_filtered(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD_COLOR_FILTERED); return v._color; }
|
||||
|
||||
static inline lv_grad_dir_t lv_obj_get_style_bg_grad_dir(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD_DIR); return v._int; }
|
||||
|
||||
@@ -233,6 +246,9 @@ static inline lv_coord_t lv_obj_get_style_bg_grad_stop(const struct _lv_obj_t *
|
||||
static inline lv_color_t lv_obj_get_style_border_color(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BORDER_COLOR); return v._color; }
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_border_color_filtered(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BORDER_COLOR_FILTERED); return v._color; }
|
||||
|
||||
static inline lv_opa_t lv_obj_get_style_border_opa(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BORDER_OPA); return v._int; }
|
||||
|
||||
@@ -251,6 +267,9 @@ static inline lv_blend_mode_t lv_obj_get_style_border_blend_mode(const struct _l
|
||||
static inline lv_color_t lv_obj_get_style_text_color(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_COLOR); return v._color; }
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_text_color_filtered(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_COLOR_FILTERED); return v._color; }
|
||||
|
||||
static inline lv_opa_t lv_obj_get_style_text_opa(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TEXT_OPA); return v._int; }
|
||||
|
||||
@@ -278,6 +297,9 @@ static inline lv_blend_mode_t lv_obj_get_style_img_blend_mode(const struct _lv_o
|
||||
static inline lv_color_t lv_obj_get_style_img_recolor(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_IMG_RECOLOR); return v._color; }
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_img_recolor_filtered(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_IMG_RECOLOR_FILTERED); return v._color; }
|
||||
|
||||
static inline lv_opa_t lv_obj_get_style_img_recolor_opa(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_IMG_RECOLOR_OPA); return v._int; }
|
||||
|
||||
@@ -314,6 +336,9 @@ static inline lv_blend_mode_t lv_obj_get_style_shadow_blend_mode(const struct _l
|
||||
static inline lv_color_t lv_obj_get_style_shadow_color(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_SHADOW_COLOR); return v._color; }
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_shadow_color_filtered(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_SHADOW_COLOR_FILTERED); return v._color; }
|
||||
|
||||
static inline lv_opa_t lv_obj_get_style_shadow_opa(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_SHADOW_OPA); return v._int; }
|
||||
|
||||
@@ -335,10 +360,13 @@ static inline lv_coord_t lv_obj_get_style_line_rounded(const struct _lv_obj_t *
|
||||
static inline lv_color_t lv_obj_get_style_line_color(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_LINE_COLOR); return v._color; }
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_line_color_filtered(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_LINE_COLOR_FILTERED); return v._color; }
|
||||
|
||||
static inline lv_opa_t lv_obj_get_style_line_opa(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_LINE_OPA); return v._int; }
|
||||
|
||||
static inline const char * lv_obj_get_style_content_text(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
static inline const char * lv_obj_get_style_content_src(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_CONTENT_SRC); return v._ptr; }
|
||||
|
||||
static inline lv_align_t lv_obj_get_style_content_align(const struct _lv_obj_t * obj, uint32_t part) {
|
||||
@@ -378,7 +406,6 @@ static inline lv_style_prop_t lv_obj_get_style_transition_prop_6(const struct _l
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_TRANSITION_PROP_6); return v._int; }
|
||||
|
||||
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
@@ -228,6 +228,16 @@ static void set_prop(lv_style_t * style, lv_style_prop_t prop, lv_style_value_t
|
||||
style->ext->opa = value._int;
|
||||
style->ext->has_opa = 1;
|
||||
break;
|
||||
case LV_STYLE_COLOR_FILTER_CB:
|
||||
_alloc_ext(style);
|
||||
style->ext->color_filter_cb = (lv_color_filter_cb_t)value._func;
|
||||
style->ext->has_color_filter_cb = 1;
|
||||
break;
|
||||
case LV_STYLE_COLOR_FILTER_OPA:
|
||||
_alloc_ext(style);
|
||||
style->ext->color_filter_opa = value._int;
|
||||
style->ext->has_color_filter_opa = 1;
|
||||
break;
|
||||
|
||||
case LV_STYLE_PAD_TOP:
|
||||
style->pad_top = value._int;
|
||||
@@ -569,6 +579,12 @@ static bool get_prop(const lv_style_t * style, lv_style_prop_t prop, lv_style_va
|
||||
case LV_STYLE_OPA:
|
||||
if(style->ext && style->ext->has_opa) { value->_int = style->ext->opa; return true; }
|
||||
break;
|
||||
case LV_STYLE_COLOR_FILTER_CB:
|
||||
if(style->ext && style->ext->has_color_filter_cb) { value->_func = (void(*)(void)) style->ext->color_filter_cb; return true; }
|
||||
break;
|
||||
case LV_STYLE_COLOR_FILTER_OPA:
|
||||
if(style->ext && style->ext->has_color_filter_opa) { value->_int = style->ext->color_filter_opa; return true; }
|
||||
break;
|
||||
|
||||
case LV_STYLE_PAD_TOP:
|
||||
if(style->has_pad_top) { value->_int = style->pad_top; return true; }
|
||||
@@ -596,12 +612,14 @@ static bool get_prop(const lv_style_t * style, lv_style_prop_t prop, lv_style_va
|
||||
break;
|
||||
|
||||
case LV_STYLE_BG_COLOR:
|
||||
case LV_STYLE_BG_COLOR_FILTERED:
|
||||
if(style->has_bg_color) { value->_color = style->bg_color; return true; }
|
||||
break;
|
||||
case LV_STYLE_BG_OPA:
|
||||
if(style->has_bg_opa) { value->_int = style->bg_opa; return true; }
|
||||
break;
|
||||
case LV_STYLE_BG_GRAD_COLOR:
|
||||
case LV_STYLE_BG_GRAD_COLOR_FILTERED:
|
||||
if(style->ext && style->ext->has_bg_grad_color) { value->_color = style->ext->bg_grad_color; return true; }
|
||||
break;
|
||||
case LV_STYLE_BG_GRAD_DIR:
|
||||
@@ -618,6 +636,7 @@ static bool get_prop(const lv_style_t * style, lv_style_prop_t prop, lv_style_va
|
||||
break;
|
||||
|
||||
case LV_STYLE_BORDER_COLOR:
|
||||
case LV_STYLE_BORDER_COLOR_FILTERED:
|
||||
if(style->has_border_color) { value->_color = style->border_color; return true; }
|
||||
break;
|
||||
case LV_STYLE_BORDER_OPA:
|
||||
@@ -637,6 +656,7 @@ static bool get_prop(const lv_style_t * style, lv_style_prop_t prop, lv_style_va
|
||||
break;
|
||||
|
||||
case LV_STYLE_TEXT_COLOR:
|
||||
case LV_STYLE_TEXT_COLOR_FILTERED:
|
||||
if(style->has_text_color) { value->_color = style->text_color; return true; }
|
||||
break;
|
||||
case LV_STYLE_TEXT_OPA:
|
||||
@@ -665,6 +685,7 @@ static bool get_prop(const lv_style_t * style, lv_style_prop_t prop, lv_style_va
|
||||
if(style->ext && style->ext->has_img_blend_mode) { value->_int = style->ext->img_blend_mode; return true; }
|
||||
break;
|
||||
case LV_STYLE_IMG_RECOLOR:
|
||||
case LV_STYLE_IMG_RECOLOR_FILTERED:
|
||||
if(style->ext && style->ext->has_img_recolor) { value->_color = style->ext->img_recolor; return true; }
|
||||
break;
|
||||
case LV_STYLE_IMG_RECOLOR_OPA:
|
||||
@@ -676,6 +697,7 @@ static bool get_prop(const lv_style_t * style, lv_style_prop_t prop, lv_style_va
|
||||
if(style->ext && style->ext->has_outline_width) { value->_int = style->ext->outline_width; return true; }
|
||||
break;
|
||||
case LV_STYLE_OUTLINE_COLOR:
|
||||
case LV_STYLE_OUTLINE_COLOR_FILTERED:
|
||||
if(style->ext && style->ext->has_outline_color) { value->_color = style->ext->outline_color; return true; }
|
||||
break;
|
||||
case LV_STYLE_OUTLINE_OPA:
|
||||
@@ -704,6 +726,7 @@ static bool get_prop(const lv_style_t * style, lv_style_prop_t prop, lv_style_va
|
||||
if(style->ext && style->ext->has_shadow_blend_mode) { value->_int = style->ext->shadow_blend_mode; return true; }
|
||||
break;
|
||||
case LV_STYLE_SHADOW_COLOR:
|
||||
case LV_STYLE_SHADOW_COLOR_FILTERED:
|
||||
if(style->ext && style->ext->has_shadow_color) { value->_color = style->ext->shadow_color; return true; }
|
||||
break;
|
||||
case LV_STYLE_SHADOW_OPA:
|
||||
@@ -726,6 +749,7 @@ static bool get_prop(const lv_style_t * style, lv_style_prop_t prop, lv_style_va
|
||||
if(style->ext && style->ext->has_line_rounded) { value->_int = style->ext->line_rounded; return true; }
|
||||
break;
|
||||
case LV_STYLE_LINE_COLOR:
|
||||
case LV_STYLE_LINE_COLOR_FILTERED:
|
||||
if(style->ext && style->ext->has_line_color) { value->_color = style->ext->line_color; return true; }
|
||||
break;
|
||||
case LV_STYLE_LINE_OPA:
|
||||
@@ -804,10 +828,16 @@ static bool remove_prop(lv_style_t * style, lv_style_prop_t prop)
|
||||
case LV_STYLE_TRANSFORM_ANGLE:
|
||||
if(style->ext) style->ext->has_transform_angle = 0;
|
||||
break;
|
||||
|
||||
case LV_STYLE_OPA:
|
||||
if(style->ext) style->ext->has_opa = 0;
|
||||
break;
|
||||
case LV_STYLE_COLOR_FILTER_CB:
|
||||
if(style->ext) style->ext->has_color_filter_cb = 0;
|
||||
break;
|
||||
case LV_STYLE_COLOR_FILTER_OPA:
|
||||
if(style->ext) style->ext->has_color_filter_opa = 0;
|
||||
break;
|
||||
|
||||
case LV_STYLE_PAD_TOP:
|
||||
style->has_pad_top = 0;
|
||||
break;
|
||||
|
||||
@@ -35,6 +35,7 @@ LV_EXPORT_CONST_INT(LV_RADIUS_CIRCLE);
|
||||
#define LV_STYLE_PROP_INHERIT (1 << 10)
|
||||
#define LV_STYLE_PROP_EXT_DRAW (1 << 11)
|
||||
#define LV_STYLE_PROP_LAYOUT_REFR (1 << 12)
|
||||
#define LV_STYLE_PROP_FILTER (1 << 13)
|
||||
|
||||
#define LV_STYLE_TRANS_NUM_MAX 6
|
||||
|
||||
@@ -74,9 +75,11 @@ enum {
|
||||
|
||||
typedef uint8_t lv_text_decor_t;
|
||||
|
||||
|
||||
typedef union {
|
||||
int32_t _int;
|
||||
const void * _ptr;
|
||||
void (* _func)(void);
|
||||
lv_color_t _color;
|
||||
}lv_style_value_t;
|
||||
|
||||
@@ -89,6 +92,8 @@ typedef enum {
|
||||
LV_STYLE_TRANSFORM_ZOOM = 5 | LV_STYLE_PROP_EXT_DRAW,
|
||||
LV_STYLE_TRANSFORM_ANGLE = 6 | LV_STYLE_PROP_EXT_DRAW,
|
||||
LV_STYLE_OPA = 7 | LV_STYLE_PROP_INHERIT,
|
||||
LV_STYLE_COLOR_FILTER_CB = 8,
|
||||
LV_STYLE_COLOR_FILTER_OPA = 9,
|
||||
|
||||
LV_STYLE_PAD_TOP = 10 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||
LV_STYLE_PAD_BOTTOM = 11 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||
@@ -100,14 +105,17 @@ typedef enum {
|
||||
LV_STYLE_MARGIN_RIGHT = 17 | LV_STYLE_PROP_LAYOUT_REFR,
|
||||
|
||||
LV_STYLE_BG_COLOR = 20,
|
||||
LV_STYLE_BG_COLOR_FILTERED = 20 | LV_STYLE_PROP_FILTER,
|
||||
LV_STYLE_BG_OPA = 21,
|
||||
LV_STYLE_BG_GRAD_COLOR = 22,
|
||||
LV_STYLE_BG_GRAD_COLOR_FILTERED = 22 | LV_STYLE_PROP_FILTER,
|
||||
LV_STYLE_BG_GRAD_DIR = 23,
|
||||
LV_STYLE_BG_BLEND_MODE = 24,
|
||||
LV_STYLE_BG_MAIN_STOP = 25,
|
||||
LV_STYLE_BG_GRAD_STOP = 26,
|
||||
|
||||
LV_STYLE_BORDER_COLOR = 31,
|
||||
LV_STYLE_BORDER_COLOR_FILTERED = 31 | LV_STYLE_PROP_FILTER,
|
||||
LV_STYLE_BORDER_OPA = 32,
|
||||
LV_STYLE_BORDER_WIDTH = 33,
|
||||
LV_STYLE_BORDER_SIDE = 34,
|
||||
@@ -115,6 +123,7 @@ typedef enum {
|
||||
LV_STYLE_BORDER_BLEND_MODE = 36,
|
||||
|
||||
LV_STYLE_TEXT_COLOR = 40 | LV_STYLE_PROP_INHERIT,
|
||||
LV_STYLE_TEXT_COLOR_FILTERED = 40 | LV_STYLE_PROP_INHERIT | LV_STYLE_PROP_FILTER,
|
||||
LV_STYLE_TEXT_OPA = 41 | LV_STYLE_PROP_INHERIT,
|
||||
LV_STYLE_TEXT_FONT = 42 | LV_STYLE_PROP_INHERIT,
|
||||
LV_STYLE_TEXT_LETTER_SPACE = 43 | LV_STYLE_PROP_INHERIT,
|
||||
@@ -125,10 +134,12 @@ typedef enum {
|
||||
LV_STYLE_IMG_OPA = 50,
|
||||
LV_STYLE_IMG_BLEND_MODE = 51,
|
||||
LV_STYLE_IMG_RECOLOR = 52,
|
||||
LV_STYLE_IMG_RECOLOR_FILTERED = 52 | LV_STYLE_PROP_FILTER,
|
||||
LV_STYLE_IMG_RECOLOR_OPA = 53,
|
||||
|
||||
LV_STYLE_OUTLINE_WIDTH = 61 | LV_STYLE_PROP_EXT_DRAW,
|
||||
LV_STYLE_OUTLINE_COLOR = 62,
|
||||
LV_STYLE_OUTLINE_COLOR_FILTERED = 62 | LV_STYLE_PROP_FILTER,
|
||||
LV_STYLE_OUTLINE_OPA = 63 | LV_STYLE_PROP_EXT_DRAW,
|
||||
LV_STYLE_OUTLINE_PAD = 64 | LV_STYLE_PROP_EXT_DRAW,
|
||||
LV_STYLE_OUTLINE_BLEND_MODE = 65,
|
||||
@@ -139,6 +150,7 @@ typedef enum {
|
||||
LV_STYLE_SHADOW_SPREAD = 73 | LV_STYLE_PROP_EXT_DRAW,
|
||||
LV_STYLE_SHADOW_BLEND_MODE = 74,
|
||||
LV_STYLE_SHADOW_COLOR = 75,
|
||||
LV_STYLE_SHADOW_COLOR_FILTERED = 75 | LV_STYLE_PROP_FILTER,
|
||||
LV_STYLE_SHADOW_OPA = 76 | LV_STYLE_PROP_EXT_DRAW,
|
||||
|
||||
LV_STYLE_LINE_WIDTH = 80 | LV_STYLE_PROP_EXT_DRAW,
|
||||
@@ -147,6 +159,7 @@ typedef enum {
|
||||
LV_STYLE_LINE_DASH_GAP = 83,
|
||||
LV_STYLE_LINE_ROUNDED = 84,
|
||||
LV_STYLE_LINE_COLOR = 85,
|
||||
LV_STYLE_LINE_COLOR_FILTERED = 85 | LV_STYLE_PROP_FILTER,
|
||||
LV_STYLE_LINE_OPA = 86,
|
||||
|
||||
LV_STYLE_CONTENT_SRC = 90 | LV_STYLE_PROP_EXT_DRAW,
|
||||
@@ -170,7 +183,8 @@ typedef enum {
|
||||
}lv_style_prop_t;
|
||||
|
||||
typedef struct {
|
||||
const lv_anim_path_cb_t * transition_path;
|
||||
lv_color_filter_cb_t color_filter_cb;
|
||||
const lv_anim_path_t * transition_path;
|
||||
const char * content_text;
|
||||
|
||||
uint16_t transition_time;
|
||||
@@ -189,6 +203,7 @@ typedef struct {
|
||||
lv_color_t line_color;
|
||||
|
||||
lv_opa_t opa;
|
||||
lv_opa_t color_filter_opa;
|
||||
lv_opa_t outline_opa;
|
||||
lv_opa_t img_recolor_opa;
|
||||
lv_opa_t shadow_opa;
|
||||
@@ -238,6 +253,8 @@ typedef struct {
|
||||
uint32_t has_transform_zoom :1;
|
||||
uint32_t has_transform_angle :1;
|
||||
uint32_t has_opa :1;
|
||||
uint32_t has_color_filter_cb :1;
|
||||
uint32_t has_color_filter_opa :1;
|
||||
|
||||
uint32_t has_margin_top :1;
|
||||
uint32_t has_margin_bottom :1;
|
||||
@@ -411,6 +428,12 @@ static inline void lv_style_set_transform_angle(lv_style_t * style, lv_coord_t v
|
||||
static inline void lv_style_set_opa(lv_style_t * style, lv_opa_t value) {
|
||||
lv_style_value_t v = {._int = value}; lv_style_set_prop(style, LV_STYLE_OPA, v); }
|
||||
|
||||
static inline void lv_style_set_color_filter_cb(lv_style_t * style, lv_color_filter_cb_t value) {
|
||||
lv_style_value_t v = {._func = (void(*)(void))value}; lv_style_set_prop(style, LV_STYLE_COLOR_FILTER_CB, v); }
|
||||
|
||||
static inline void lv_style_set_color_filter_opa(lv_style_t * style, lv_opa_t value) {
|
||||
lv_style_value_t v = {._int = value}; lv_style_set_prop(style, LV_STYLE_COLOR_FILTER_OPA, v); }
|
||||
|
||||
static inline void lv_style_set_pad_top(lv_style_t * style, lv_coord_t value) {
|
||||
lv_style_value_t v = {._int = value}; lv_style_set_prop(style, LV_STYLE_PAD_TOP, v); }
|
||||
|
||||
@@ -438,12 +461,18 @@ static inline void lv_style_set_margin_right(lv_style_t * style, lv_coord_t valu
|
||||
static inline void lv_style_set_bg_color(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_BG_COLOR, v); }
|
||||
|
||||
static inline void lv_style_set_bg_color_filtered(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_BG_COLOR_FILTERED, v); }
|
||||
|
||||
static inline void lv_style_set_bg_opa(lv_style_t * style, lv_opa_t value) {
|
||||
lv_style_value_t v = {._int = value}; lv_style_set_prop(style, LV_STYLE_BG_OPA, v); }
|
||||
|
||||
static inline void lv_style_set_bg_grad_color(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_BG_GRAD_COLOR, v); }
|
||||
|
||||
static inline void lv_style_set_bg_grad_color_filtered(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_BG_GRAD_COLOR_FILTERED, v); }
|
||||
|
||||
static inline void lv_style_set_bg_grad_dir(lv_style_t * style, lv_grad_dir_t value) {
|
||||
lv_style_value_t v = {._int = value}; lv_style_set_prop(style, LV_STYLE_BG_GRAD_DIR, v); }
|
||||
|
||||
@@ -459,6 +488,9 @@ static inline void lv_style_set_bg_grad_stop(lv_style_t * style, lv_coord_t valu
|
||||
static inline void lv_style_set_border_color(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_BORDER_COLOR, v); }
|
||||
|
||||
static inline void lv_style_set_border_color_filtered(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_BORDER_COLOR_FILTERED, v); }
|
||||
|
||||
static inline void lv_style_set_border_opa(lv_style_t * style, lv_opa_t value) {
|
||||
lv_style_value_t v = {._int = value}; lv_style_set_prop(style, LV_STYLE_BORDER_OPA, v); }
|
||||
|
||||
@@ -477,6 +509,9 @@ static inline void lv_style_set_border_blend_mode(lv_style_t * style, lv_blend_m
|
||||
static inline void lv_style_set_text_color(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_TEXT_COLOR, v); }
|
||||
|
||||
static inline void lv_style_set_text_color_filtered(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_TEXT_COLOR_FILTERED, v); }
|
||||
|
||||
static inline void lv_style_set_text_opa(lv_style_t * style, lv_opa_t value) {
|
||||
lv_style_value_t v = {._int = value}; lv_style_set_prop(style, LV_STYLE_TEXT_OPA, v); }
|
||||
|
||||
@@ -504,6 +539,9 @@ static inline void lv_style_set_img_blend_mode(lv_style_t * style, lv_blend_mode
|
||||
static inline void lv_style_set_img_recolor(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_IMG_RECOLOR, v); }
|
||||
|
||||
static inline void lv_style_set_img_recolor_filtered(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_IMG_RECOLOR_FILTERED, v); }
|
||||
|
||||
static inline void lv_style_set_img_recolor_opa(lv_style_t * style, lv_opa_t value) {
|
||||
lv_style_value_t v = {._int = value}; lv_style_set_prop(style, LV_STYLE_IMG_RECOLOR_OPA, v); }
|
||||
|
||||
@@ -540,6 +578,9 @@ static inline void lv_style_set_shadow_blend_mode(lv_style_t * style, lv_blend_m
|
||||
static inline void lv_style_set_shadow_color(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_SHADOW_COLOR, v); }
|
||||
|
||||
static inline void lv_style_set_shadow_color_filtered(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_SHADOW_COLOR_FILTERED, v); }
|
||||
|
||||
static inline void lv_style_set_shadow_opa(lv_style_t * style, lv_opa_t value) {
|
||||
lv_style_value_t v = {._int = value}; lv_style_set_prop(style, LV_STYLE_SHADOW_OPA, v); }
|
||||
|
||||
@@ -561,10 +602,13 @@ static inline void lv_style_set_line_rounded(lv_style_t * style, lv_coord_t valu
|
||||
static inline void lv_style_set_line_color(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_LINE_COLOR, v); }
|
||||
|
||||
static inline void lv_style_set_line_color_filtered(lv_style_t * style, lv_color_t value) {
|
||||
lv_style_value_t v = {._color = value}; lv_style_set_prop(style, LV_STYLE_LINE_COLOR_FILTERED, v); }
|
||||
|
||||
static inline void lv_style_set_line_opa(lv_style_t * style, lv_opa_t value) {
|
||||
lv_style_value_t v = {._int = value}; lv_style_set_prop(style, LV_STYLE_LINE_OPA, v); }
|
||||
|
||||
static inline void lv_style_set_content_text(lv_style_t * style, const char * value) {
|
||||
static inline void lv_style_set_content_src(lv_style_t * style, const char * value) {
|
||||
lv_style_value_t v = {._ptr = value}; lv_style_set_prop(style, LV_STYLE_CONTENT_SRC, v); }
|
||||
|
||||
static inline void lv_style_set_content_align(lv_style_t * style, lv_align_t value) {
|
||||
@@ -605,7 +649,6 @@ static inline void lv_style_set_transition_prop_6(lv_style_t * style, lv_style_p
|
||||
|
||||
|
||||
|
||||
|
||||
static inline void lv_style_set_pad_ver(lv_style_t * style, lv_coord_t value)
|
||||
{
|
||||
lv_style_set_pad_top(style, value);
|
||||
|
||||
@@ -139,6 +139,14 @@ lv_color_t lv_color_darken(lv_color_t c, lv_opa_t lvl)
|
||||
return lv_color_mix(LV_COLOR_BLACK, c, lvl);
|
||||
}
|
||||
|
||||
lv_color_t lv_color_change_lightness(lv_color_t c, lv_opa_t lvl)
|
||||
{
|
||||
/* It'd be better to convert the color to HSL, change L and convert back to RGB.*/
|
||||
if(lvl == LV_OPA_50) return c;
|
||||
else if(lvl < LV_OPA_50) return lv_color_darken(c, (LV_OPA_50 - lvl) * 2);
|
||||
else return lv_color_lighten(c, (lvl - LV_OPA_50) * 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a HSV color to RGB
|
||||
* @param h hue [0..359]
|
||||
|
||||
@@ -292,6 +292,9 @@ typedef struct {
|
||||
typedef uint8_t lv_opa_t;
|
||||
//! @endcond
|
||||
|
||||
|
||||
typedef lv_color_t (*lv_color_filter_cb_t)(lv_color_t, lv_opa_t);
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
@@ -673,6 +676,8 @@ lv_color_t lv_color_lighten(lv_color_t c, lv_opa_t lvl);
|
||||
|
||||
lv_color_t lv_color_darken(lv_color_t c, lv_opa_t lvl);
|
||||
|
||||
lv_color_t lv_color_change_lightness(lv_color_t c, lv_opa_t lvl);
|
||||
|
||||
/**
|
||||
* Convert a HSV color to RGB
|
||||
* @param h hue [0..359]
|
||||
|
||||
@@ -61,12 +61,12 @@
|
||||
#define COLOR_BG_TEXT_DIS (IS_LIGHT ? lv_color_hex3(0xaaa) : lv_color_hex3(0x999))
|
||||
|
||||
/*SECONDARY BACKGROUND*/
|
||||
#define COLOR_BG_SEC (IS_LIGHT ? lv_color_hex(0xd4d7d9) : lv_color_hex(0x45494d))
|
||||
#define COLOR_GRAY (IS_LIGHT ? lv_color_hex(0xd4d7d9) : lv_color_hex(0x45494d))
|
||||
#define COLOR_BG_SEC_BORDER (IS_LIGHT ? lv_color_hex(0xdfe7ed) : lv_color_hex(0x404040))
|
||||
#define COLOR_BG_SEC_TEXT (IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xa5a8ad))
|
||||
#define COLOR_BG_SEC_TEXT_DIS (IS_LIGHT ? lv_color_hex(0xaaaaaa) : lv_color_hex(0xa5a8ad))
|
||||
|
||||
#define TRANSITION_TIME ((theme.flags & LV_THEME_MATERIAL_FLAG_NO_TRANSITION) ? 0 : 100)
|
||||
#define TRANSITION_TIME ((theme.flags & LV_THEME_MATERIAL_FLAG_NO_TRANSITION) ? 0 : 150)
|
||||
#define BORDER_WIDTH LV_DPX(2)
|
||||
#define OUTLINE_WIDTH ((theme.flags & LV_THEME_MATERIAL_FLAG_NO_FOCUS) ? 0 : LV_DPX(2))
|
||||
#define IS_LIGHT (theme.flags & LV_THEME_MATERIAL_FLAG_LIGHT)
|
||||
@@ -82,17 +82,17 @@ typedef struct {
|
||||
lv_style_t scrollbar_scrolled;
|
||||
lv_style_t card;
|
||||
lv_style_t btn;
|
||||
lv_style_t btn_pressed;
|
||||
lv_style_t btn_disabled;
|
||||
lv_style_t btn_color;
|
||||
lv_style_t btn_color_disabled;
|
||||
lv_style_t btn_color_pressed;
|
||||
lv_style_t btn_color_checked;
|
||||
lv_style_t btn_color_pressed_checked;
|
||||
lv_style_t btn_color_checked_disabled;
|
||||
|
||||
/*Utility*/
|
||||
lv_style_t bg_color_primary;
|
||||
lv_style_t bg_color_gray;
|
||||
lv_style_t pressed;
|
||||
lv_style_t disabled;
|
||||
lv_style_t pad_small;
|
||||
lv_style_t pad_small_negative;
|
||||
lv_style_t focus_border;
|
||||
lv_style_t focus_outline;
|
||||
lv_style_t edit_outline;
|
||||
@@ -100,10 +100,10 @@ typedef struct {
|
||||
lv_style_t circle;
|
||||
lv_style_t no_radius;
|
||||
lv_style_t clip_corner;
|
||||
lv_style_t bg_color_primary;
|
||||
|
||||
/*Parts*/
|
||||
lv_style_t knob;
|
||||
lv_style_t indic;
|
||||
|
||||
|
||||
#if LV_USE_ARC
|
||||
@@ -246,16 +246,12 @@ static void basic_init(void)
|
||||
lv_style_set_img_recolor(&styles->btn, CARD_TEXT_COLOR);
|
||||
lv_style_set_pad_hor(&styles->btn, LV_DPX(40));
|
||||
lv_style_set_pad_ver(&styles->btn, LV_DPX(15));
|
||||
lv_style_set_transition_prop_5(&styles->btn, LV_STYLE_BG_COLOR);
|
||||
lv_style_set_transition_prop_6(&styles->btn, LV_STYLE_OUTLINE_OPA);
|
||||
lv_style_set_transition_prop_5(&styles->btn, LV_STYLE_COLOR_FILTER_OPA);
|
||||
lv_style_set_transition_time(&styles->btn, TRANSITION_TIME);
|
||||
lv_style_set_transition_delay(&styles->btn, TRANSITION_TIME);
|
||||
lv_style_set_color_filter_cb(&styles->btn, lv_color_change_lightness);
|
||||
lv_style_set_color_filter_opa(&styles->btn, LV_OPA_50);
|
||||
|
||||
style_init_reset(&styles->btn_pressed);
|
||||
lv_style_set_bg_color(&styles->btn_pressed, CARD_PR_COLOR);
|
||||
lv_style_set_text_color(&styles->btn_pressed, CARD_TEXT_PR_COLOR);
|
||||
lv_style_set_img_recolor(&styles->btn_pressed, CARD_TEXT_PR_COLOR);
|
||||
lv_style_set_transition_delay(&styles->btn_pressed, 0);
|
||||
|
||||
style_init_reset(&styles->btn_color);
|
||||
lv_style_set_border_width(&styles->btn_color, 0);
|
||||
@@ -263,26 +259,45 @@ static void basic_init(void)
|
||||
lv_style_set_text_color(&styles->btn_color, LV_COLOR_WHITE);
|
||||
lv_style_set_img_recolor(&styles->btn_color, LV_COLOR_WHITE);
|
||||
|
||||
style_init_reset(&styles->btn_color_pressed);
|
||||
lv_style_set_bg_color(&styles->btn_color_pressed, BTN_PR_COLOR);
|
||||
|
||||
style_init_reset(&styles->btn_color_checked);
|
||||
lv_style_set_bg_color(&styles->btn_color_checked, BTN_CHK_PR_COLOR);
|
||||
|
||||
style_init_reset(&styles->btn_color_disabled);
|
||||
lv_style_set_bg_color(&styles->btn_color_checked, BTN_DIS_COLOR);
|
||||
style_init_reset(&styles->pressed);
|
||||
lv_style_set_color_filter_opa(&styles->pressed, LV_OPA_40);
|
||||
lv_style_set_transition_delay(&styles->pressed, 0);
|
||||
|
||||
style_init_reset(&styles->btn_color_checked_disabled);
|
||||
lv_style_set_bg_color(&styles->btn_color_checked_disabled, BTN_CHK_DIS_COLOR);
|
||||
style_init_reset(&styles->disabled);
|
||||
lv_style_set_color_filter_opa(&styles->disabled, LV_OPA_70);
|
||||
lv_style_set_transition_time(&styles->disabled, 0);
|
||||
lv_style_set_transition_delay(&styles->disabled, 0);
|
||||
|
||||
style_init_reset(&styles->clip_corner);
|
||||
lv_style_set_clip_corner(&styles->clip_corner, BTN_CHK_DIS_COLOR);
|
||||
lv_style_set_clip_corner(&styles->clip_corner, true);
|
||||
|
||||
style_init_reset(&styles->pad_small);
|
||||
lv_coord_t pad_small_value = lv_disp_get_size_category(NULL) <= LV_DISP_MEDIUM_LIMIT ? LV_DPX(10) : LV_DPX(20);
|
||||
lv_style_set_pad_all(&styles->pad_small, pad_small_value);
|
||||
}
|
||||
|
||||
style_init_reset(&styles->pad_small_negative);
|
||||
lv_style_set_pad_all(&styles->pad_small_negative, - LV_DPX(2));
|
||||
|
||||
style_init_reset(&styles->bg_color_primary);
|
||||
lv_style_set_bg_color(&styles->bg_color_primary, theme.color_primary);
|
||||
lv_style_set_bg_opa(&styles->bg_color_primary, LV_OPA_COVER);
|
||||
|
||||
style_init_reset(&styles->bg_color_gray);
|
||||
lv_style_set_bg_color(&styles->bg_color_gray, COLOR_GRAY);
|
||||
lv_style_set_bg_opa(&styles->bg_color_gray, LV_OPA_COVER);
|
||||
|
||||
style_init_reset(&styles->circle);
|
||||
lv_style_set_radius(&styles->circle, LV_RADIUS_CIRCLE);
|
||||
|
||||
style_init_reset(&styles->knob);
|
||||
lv_style_set_bg_color(&styles->knob, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE);
|
||||
lv_style_set_bg_opa(&styles->knob, LV_OPA_COVER);
|
||||
lv_style_set_pad_all(&styles->knob, LV_DPX(5));
|
||||
lv_style_set_radius(&styles->knob, LV_RADIUS_CIRCLE);
|
||||
}
|
||||
|
||||
static void btn_init(void)
|
||||
{
|
||||
@@ -309,25 +324,25 @@ static void label_init(void)
|
||||
static void bar_init(void)
|
||||
{
|
||||
#if LV_USE_BAR
|
||||
style_init_reset(&styles->bar_bg);
|
||||
lv_style_set_radius(&styles->bar_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
lv_style_set_bg_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&styles->bar_bg, LV_STATE_DEFAULT, COLOR_BG_SEC);
|
||||
lv_style_set_value_color(&styles->bar_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE);
|
||||
lv_style_set_outline_color(&styles->bar_bg, LV_STATE_DEFAULT, theme.color_primary);
|
||||
lv_style_set_outline_color(&styles->bar_bg, LV_STATE_EDITED, theme.color_secondary);
|
||||
lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP);
|
||||
lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_FOCUSED, LV_OPA_50);
|
||||
lv_style_set_outline_width(&styles->bar_bg, LV_STATE_DEFAULT, OUTLINE_WIDTH);
|
||||
lv_style_set_transition_time(&styles->bar_bg, LV_STATE_DEFAULT, TRANSITION_TIME);
|
||||
lv_style_set_transition_prop_6(&styles->bar_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA);
|
||||
|
||||
style_init_reset(&styles->bar_indic);
|
||||
lv_style_set_bg_opa(&styles->bar_indic, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_radius(&styles->bar_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DEFAULT, theme.color_primary);
|
||||
lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DISABLED, lv_color_hex3(0x888));
|
||||
lv_style_set_value_color(&styles->bar_indic, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x41404f) : LV_COLOR_WHITE);
|
||||
// style_init_reset(&styles->bar_bg);
|
||||
// lv_style_set_radius(&styles->bar_bg, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
// lv_style_set_bg_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
// lv_style_set_bg_color(&styles->bar_bg, LV_STATE_DEFAULT, COLOR_BG_SEC);
|
||||
// lv_style_set_value_color(&styles->bar_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE);
|
||||
// lv_style_set_outline_color(&styles->bar_bg, LV_STATE_DEFAULT, theme.color_primary);
|
||||
// lv_style_set_outline_color(&styles->bar_bg, LV_STATE_EDITED, theme.color_secondary);
|
||||
// lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_DEFAULT, LV_OPA_TRANSP);
|
||||
// lv_style_set_outline_opa(&styles->bar_bg, LV_STATE_FOCUSED, LV_OPA_50);
|
||||
// lv_style_set_outline_width(&styles->bar_bg, LV_STATE_DEFAULT, OUTLINE_WIDTH);
|
||||
// lv_style_set_transition_time(&styles->bar_bg, LV_STATE_DEFAULT, TRANSITION_TIME);
|
||||
// lv_style_set_transition_prop_6(&styles->bar_bg, LV_STATE_DEFAULT, LV_STYLE_OUTLINE_OPA);
|
||||
//
|
||||
// style_init_reset(&styles->bar_indic);
|
||||
// lv_style_set_bg_opa(&styles->bar_indic, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
// lv_style_set_radius(&styles->bar_indic, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
// lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DEFAULT, theme.color_primary);
|
||||
// lv_style_set_bg_color(&styles->bar_indic, LV_STATE_DISABLED, lv_color_hex3(0x888));
|
||||
// lv_style_set_value_color(&styles->bar_indic, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x41404f) : LV_COLOR_WHITE);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -348,21 +363,21 @@ static void line_init(void)
|
||||
static void slider_init(void)
|
||||
{
|
||||
#if LV_USE_SLIDER != 0
|
||||
style_init_reset(&styles->slider_knob);
|
||||
lv_style_set_bg_opa(&styles->slider_knob, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
lv_style_set_bg_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE);
|
||||
lv_style_set_value_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE);
|
||||
lv_style_set_radius(&styles->slider_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
|
||||
lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
|
||||
lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
|
||||
lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
|
||||
|
||||
style_init_reset(&styles->slider_bg);
|
||||
lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
|
||||
lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
|
||||
lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
|
||||
lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
|
||||
// style_init_reset(&styles->slider_knob);
|
||||
// lv_style_set_bg_opa(&styles->slider_knob, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||
// lv_style_set_bg_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? theme.color_primary : LV_COLOR_WHITE);
|
||||
// lv_style_set_value_color(&styles->slider_knob, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0x31404f) : LV_COLOR_WHITE);
|
||||
// lv_style_set_radius(&styles->slider_knob, LV_STATE_DEFAULT, LV_RADIUS_CIRCLE);
|
||||
// lv_style_set_pad_left(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
|
||||
// lv_style_set_pad_right(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
|
||||
// lv_style_set_pad_top(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
|
||||
// lv_style_set_pad_bottom(&styles->slider_knob, LV_STATE_DEFAULT, LV_DPX(7));
|
||||
//
|
||||
// style_init_reset(&styles->slider_bg);
|
||||
// lv_style_set_margin_left(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
|
||||
// lv_style_set_margin_right(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
|
||||
// lv_style_set_margin_top(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
|
||||
// lv_style_set_margin_bottom(&styles->slider_bg, LV_STATE_DEFAULT, LV_DPX(10));
|
||||
|
||||
#endif
|
||||
}
|
||||
@@ -444,7 +459,7 @@ static void arc_init(void)
|
||||
lv_style_set_line_rounded(&styles->arc_indic, LV_STATE_DEFAULT, true);
|
||||
|
||||
style_init_reset(&styles->arc_bg);
|
||||
lv_style_set_line_color(&styles->arc_bg, LV_STATE_DEFAULT, COLOR_BG_SEC);
|
||||
lv_style_set_line_color(&styles->arc_bg, LV_STATE_DEFAULT, COLOR_GRAY);
|
||||
lv_style_set_line_width(&styles->arc_bg, LV_STATE_DEFAULT, LV_DPX(25));
|
||||
lv_style_set_line_rounded(&styles->arc_bg, LV_STATE_DEFAULT, true);
|
||||
|
||||
@@ -682,12 +697,25 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
||||
else if(lv_obj_check_type(obj, &lv_btn)) {
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_DEFAULT, &styles->btn);
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_DEFAULT, &styles->btn_color);
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_PRESSED, &styles->btn_pressed);
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_PRESSED, &styles->btn_color_pressed);
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_PRESSED, &styles->pressed);
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_CHECKED, &styles->btn_color_checked);
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_PRESSED | LV_STATE_CHECKED, &styles->btn_color_pressed_checked);
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_DISABLED, &styles->btn_color_disabled);
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_CHECKED | LV_STATE_DISABLED, &styles->btn_color_checked_disabled);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if LV_USE_BAR
|
||||
else if(lv_obj_check_type(obj, &lv_bar)) {
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_DEFAULT, &styles->bg_color_gray);
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_DEFAULT, &styles->circle);
|
||||
lv_obj_add_style(obj, LV_PART_INDICATOR, LV_STATE_DEFAULT, &styles->bg_color_primary);
|
||||
lv_obj_add_style(obj, LV_PART_INDICATOR, LV_STATE_DEFAULT, &styles->circle);
|
||||
}
|
||||
|
||||
else if(lv_obj_check_type(obj, &lv_slider)) {
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_DEFAULT, &styles->bg_color_gray);
|
||||
lv_obj_add_style(obj, LV_PART_MAIN, LV_STATE_DEFAULT, &styles->circle);
|
||||
lv_obj_add_style(obj, LV_PART_INDICATOR, LV_STATE_DEFAULT, &styles->bg_color_primary);
|
||||
lv_obj_add_style(obj, LV_PART_INDICATOR, LV_STATE_DEFAULT, &styles->circle);
|
||||
lv_obj_add_style(obj, LV_PART_KNOB, LV_STATE_DEFAULT, &styles->knob);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -709,15 +737,6 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if LV_USE_BAR
|
||||
case LV_THEME_BAR:
|
||||
list = _lv_obj_get_style_list(obj, LV_BAR_PART_MAIN);
|
||||
_lv_style_list_add_style(list, &styles->bar_bg);
|
||||
|
||||
list = _lv_obj_get_style_list(obj, LV_BAR_PART_INDIC);
|
||||
_lv_style_list_add_style(list, &styles->bar_indic);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if LV_USE_SWITCH
|
||||
case LV_THEME_SWITCH:
|
||||
@@ -770,17 +789,17 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
||||
#endif
|
||||
|
||||
#if LV_USE_SLIDER
|
||||
case LV_THEME_SLIDER:
|
||||
list = _lv_obj_get_style_list(obj, LV_SLIDER_PART_MAIN);
|
||||
_lv_style_list_add_style(list, &styles->bar_bg);
|
||||
_lv_style_list_add_style(list, &styles->slider_bg);
|
||||
|
||||
list = _lv_obj_get_style_list(obj, LV_SLIDER_PART_INDIC);
|
||||
_lv_style_list_add_style(list, &styles->bar_indic);
|
||||
|
||||
list = _lv_obj_get_style_list(obj, LV_SLIDER_PART_KNOB);
|
||||
_lv_style_list_add_style(list, &styles->slider_knob);
|
||||
break;
|
||||
// case LV_THEME_SLIDER:
|
||||
// list = _lv_obj_get_style_list(obj, LV_SLIDER_PART_MAIN);
|
||||
// _lv_style_list_add_style(list, &styles->bar_bg);
|
||||
// _lv_style_list_add_style(list, &styles->slider_bg);
|
||||
//
|
||||
// list = _lv_obj_get_style_list(obj, LV_SLIDER_PART_INDIC);
|
||||
// _lv_style_list_add_style(list, &styles->bar_indic);
|
||||
//
|
||||
// list = _lv_obj_get_style_list(obj, LV_SLIDER_PART_KNOB);
|
||||
// _lv_style_list_add_style(list, &styles->slider_knob);
|
||||
// break;
|
||||
#endif
|
||||
|
||||
#if LV_USE_CHECKBOX
|
||||
|
||||
@@ -324,7 +324,6 @@ static void lv_bar_constructor(lv_obj_t * obj, lv_obj_t * parent, const lv_obj_t
|
||||
bar->start_value = 0;
|
||||
bar->cur_value = 0;
|
||||
bar->type = LV_BAR_TYPE_NORMAL;
|
||||
lv_style_list_init(&bar->style_indic);
|
||||
|
||||
#if LV_USE_ANIMATION
|
||||
bar->anim_time = 200;
|
||||
@@ -353,15 +352,15 @@ static void lv_bar_constructor(lv_obj_t * obj, lv_obj_t * parent, const lv_obj_t
|
||||
|
||||
static void lv_bar_destructor(void * obj)
|
||||
{
|
||||
lv_bar_t * bar = obj;
|
||||
// lv_bar_t * bar = obj;
|
||||
//
|
||||
// _lv_obj_reset_style_list_no_refr(obj, LV_PART_INDICATOR);
|
||||
//#if LV_USE_ANIMATION
|
||||
// lv_anim_del(&bar->cur_value_anim, NULL);
|
||||
// lv_anim_del(&bar->start_value_anim, NULL);
|
||||
//#endif
|
||||
|
||||
_lv_obj_reset_style_list_no_refr(obj, LV_BAR_PART_INDIC);
|
||||
#if LV_USE_ANIMATION
|
||||
lv_anim_del(&bar->cur_value_anim, NULL);
|
||||
lv_anim_del(&bar->start_value_anim, NULL);
|
||||
#endif
|
||||
|
||||
bar->class_p->base_p->destructor(obj);
|
||||
// bar->class_p->base_p->destructor(obj);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -395,7 +394,7 @@ static lv_design_res_t lv_bar_design(lv_obj_t * obj, const lv_area_t * clip_area
|
||||
draw_dsc.shadow_opa = LV_OPA_TRANSP;
|
||||
draw_dsc.content_opa = LV_OPA_TRANSP;
|
||||
draw_dsc.outline_opa = LV_OPA_TRANSP;
|
||||
lv_obj_init_draw_rect_dsc(obj, LV_BAR_PART_MAIN, &draw_dsc);
|
||||
lv_obj_init_draw_rect_dsc(obj, LV_PART_MAIN, &draw_dsc);
|
||||
lv_draw_rect(&bar->coords, clip_area, &draw_dsc);
|
||||
}
|
||||
else if(mode == LV_DESIGN_DRAW_POST) {
|
||||
@@ -419,10 +418,10 @@ static void draw_indic(lv_obj_t * obj, const lv_area_t * clip_area)
|
||||
bar->start_value == bar->min_value) sym = true;
|
||||
|
||||
/*Calculate the indicator area*/
|
||||
lv_coord_t bg_left = lv_obj_get_style_pad_left(obj, LV_BAR_PART_MAIN);
|
||||
lv_coord_t bg_right = lv_obj_get_style_pad_right(obj, LV_BAR_PART_MAIN);
|
||||
lv_coord_t bg_top = lv_obj_get_style_pad_top(obj, LV_BAR_PART_MAIN);
|
||||
lv_coord_t bg_bottom = lv_obj_get_style_pad_bottom(obj, LV_BAR_PART_MAIN);
|
||||
lv_coord_t bg_left = lv_obj_get_style_pad_left(obj, LV_PART_MAIN);
|
||||
lv_coord_t bg_right = lv_obj_get_style_pad_right(obj, LV_PART_MAIN);
|
||||
lv_coord_t bg_top = lv_obj_get_style_pad_top(obj, LV_PART_MAIN);
|
||||
lv_coord_t bg_bottom = lv_obj_get_style_pad_bottom(obj, LV_PART_MAIN);
|
||||
|
||||
/*Respect padding and minimum width/height too*/
|
||||
lv_area_copy(&bar->indic_area, &bar->coords);
|
||||
@@ -532,13 +531,13 @@ static void draw_indic(lv_obj_t * obj, const lv_area_t * clip_area)
|
||||
/*Do not draw a zero length indicator*/
|
||||
if(!sym && indic_length_calc(&bar->indic_area) <= 1) return;
|
||||
|
||||
uint16_t bg_radius = lv_obj_get_style_radius(obj, LV_BAR_PART_MAIN);
|
||||
uint16_t bg_radius = lv_obj_get_style_radius(obj, LV_PART_MAIN);
|
||||
lv_coord_t short_side = LV_MATH_MIN(objw, objh);
|
||||
if(bg_radius > short_side >> 1) bg_radius = short_side >> 1;
|
||||
|
||||
lv_draw_rect_dsc_t draw_indic_dsc;
|
||||
lv_draw_rect_dsc_init(&draw_indic_dsc);
|
||||
lv_obj_init_draw_rect_dsc(obj, LV_BAR_PART_INDIC, &draw_indic_dsc);
|
||||
lv_obj_init_draw_rect_dsc(obj, LV_PART_INDICATOR, &draw_indic_dsc);
|
||||
|
||||
/* Draw only the shadow if the indicator is long enough.
|
||||
* The radius of the bg and the indicator can make a strange shape where
|
||||
@@ -631,7 +630,7 @@ static lv_res_t lv_bar_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
|
||||
|
||||
if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) {
|
||||
lv_coord_t indic_size;
|
||||
indic_size = _lv_obj_get_draw_rect_ext_pad_size(obj, LV_BAR_PART_INDIC);
|
||||
indic_size = _lv_obj_get_draw_rect_ext_pad_size(obj, LV_PART_INDICATOR);
|
||||
|
||||
/*Bg size is handled by lv_obj*/
|
||||
lv_coord_t * s = param;
|
||||
|
||||
@@ -81,7 +81,6 @@ LV_CLASS_DECLARE_START(lv_bar, lv_obj);
|
||||
lv_area_t indic_area; /*Save the indicator area. Might be used by derived types*/ \
|
||||
_lv_bar_anim_data \
|
||||
uint8_t type : 2; /*Type of bar*/ \
|
||||
lv_style_list_t style_indic; /*Style of the indicator*/
|
||||
|
||||
#define _lv_bar_class_dsc \
|
||||
_lv_obj_class_dsc \
|
||||
@@ -90,14 +89,6 @@ LV_CLASS_DECLARE_END(lv_bar, lv_obj);
|
||||
|
||||
extern lv_bar_class_t lv_bar;
|
||||
|
||||
/** Bar parts */
|
||||
enum {
|
||||
LV_BAR_PART_MAIN, /** Bar background style. */
|
||||
LV_BAR_PART_INDIC, /** Bar fill area style. */
|
||||
_LV_BAR_PART_VIRTUAL_LAST
|
||||
};
|
||||
typedef uint8_t lv_bar_part_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
@@ -37,7 +37,6 @@ static void lv_slider_desctructor(void * obj);
|
||||
static void lv_slider_constructor(lv_obj_t * obj, lv_obj_t * parent, const lv_obj_t * copy);
|
||||
static lv_design_res_t lv_slider_design(lv_obj_t * slider, const lv_area_t * clip_area, lv_design_mode_t mode);
|
||||
static lv_res_t lv_slider_signal(lv_obj_t * slider, lv_signal_t sign, void * param);
|
||||
static lv_style_list_t * lv_slider_get_style(lv_slider_t * slider, uint8_t part);
|
||||
static void lv_slider_position_knob(lv_obj_t * slider, lv_area_t * knob_area, lv_coord_t knob_size, bool hor);
|
||||
static void lv_slider_draw_knob(lv_obj_t * slider, const lv_area_t * knob_area, const lv_area_t * clip_area);
|
||||
|
||||
@@ -81,12 +80,12 @@ lv_obj_t * lv_slider_create(lv_obj_t * parent, const lv_obj_t * copy)
|
||||
|
||||
/*Init the new slider slider*/
|
||||
if(copy == NULL) {
|
||||
lv_theme_apply(obj, LV_THEME_SLIDER);
|
||||
lv_theme_apply(obj);
|
||||
} else {
|
||||
lv_slider_t * copy_slider = (lv_slider_t *) copy;
|
||||
lv_style_list_copy(&slider->style_knob, ©_slider->style_knob);
|
||||
|
||||
_lv_obj_refresh_style(obj, LV_OBJ_PART_ALL, LV_STYLE_PROP_ALL);
|
||||
// lv_slider_t * copy_slider = (lv_slider_t *) copy;
|
||||
// lv_style_list_copy(&slider->style_knob, ©_slider->style_knob);
|
||||
//
|
||||
// _lv_obj_refresh_style(obj, LV_OBJ_PART_ALL, LV_STYLE_PROP_ALL);
|
||||
}
|
||||
|
||||
LV_LOG_INFO("slider created");
|
||||
@@ -130,7 +129,6 @@ static void lv_slider_constructor(lv_obj_t * obj, lv_obj_t * parent, const lv_ob
|
||||
slider->value_to_set = NULL;
|
||||
slider->dragging = 0;
|
||||
slider->left_knob_focus = 0;
|
||||
lv_style_list_init(&slider->style_knob);
|
||||
|
||||
/*Init the new slider slider*/
|
||||
if(copy == NULL) {
|
||||
@@ -149,11 +147,11 @@ static void lv_slider_constructor(lv_obj_t * obj, lv_obj_t * parent, const lv_ob
|
||||
|
||||
static void lv_slider_desctructor(void * obj)
|
||||
{
|
||||
lv_slider_t * slider = obj;
|
||||
|
||||
_lv_obj_reset_style_list_no_refr(obj, LV_SLIDER_PART_KNOB);
|
||||
|
||||
slider->class_p->base_p->destructor(obj);
|
||||
// lv_slider_t * slider = obj;
|
||||
//
|
||||
// _lv_obj_reset_style_list_no_refr(obj, LV_PART_KNOB);
|
||||
//
|
||||
// slider->class_p->base_p->destructor(obj);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -257,12 +255,6 @@ static lv_res_t lv_slider_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
|
||||
lv_res_t res;
|
||||
|
||||
lv_slider_t * slider = (lv_slider_t *)obj;
|
||||
if(sign == LV_SIGNAL_GET_STYLE) {
|
||||
lv_get_style_info_t * info = param;
|
||||
info->result = lv_slider_get_style(slider, info->part);
|
||||
if(info->result != NULL) return LV_RES_OK;
|
||||
else return lv_slider.base_p->signal_cb(obj, sign, param);
|
||||
}
|
||||
|
||||
/* Include the ancient signal function */
|
||||
res = lv_slider.base_p->signal_cb(obj, sign, param);
|
||||
@@ -343,10 +335,10 @@ static lv_res_t lv_slider_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
|
||||
lv_coord_t w = lv_obj_get_width(obj);
|
||||
lv_coord_t h = lv_obj_get_height(obj);
|
||||
|
||||
lv_style_int_t bg_left = lv_obj_get_style_pad_left(obj, LV_SLIDER_PART_MAIN);
|
||||
lv_style_int_t bg_right = lv_obj_get_style_pad_right(obj, LV_SLIDER_PART_MAIN);
|
||||
lv_style_int_t bg_top = lv_obj_get_style_pad_top(obj, LV_SLIDER_PART_MAIN);
|
||||
lv_style_int_t bg_bottom = lv_obj_get_style_pad_bottom(obj, LV_SLIDER_PART_MAIN);
|
||||
lv_coord_t bg_left = lv_obj_get_style_pad_left(obj, LV_PART_MAIN);
|
||||
lv_coord_t bg_right = lv_obj_get_style_pad_right(obj, LV_PART_MAIN);
|
||||
lv_coord_t bg_top = lv_obj_get_style_pad_top(obj, LV_PART_MAIN);
|
||||
lv_coord_t bg_bottom = lv_obj_get_style_pad_bottom(obj, LV_PART_MAIN);
|
||||
|
||||
int32_t range = slider->max_value - slider->min_value;
|
||||
int16_t new_value = 0;
|
||||
@@ -428,17 +420,17 @@ static lv_res_t lv_slider_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
|
||||
}
|
||||
}
|
||||
else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) {
|
||||
lv_style_int_t knob_left = lv_obj_get_style_pad_left(obj, LV_SLIDER_PART_KNOB);
|
||||
lv_style_int_t knob_right = lv_obj_get_style_pad_right(obj,LV_SLIDER_PART_KNOB);
|
||||
lv_style_int_t knob_top = lv_obj_get_style_pad_top(obj, LV_SLIDER_PART_KNOB);
|
||||
lv_style_int_t knob_bottom = lv_obj_get_style_pad_bottom(obj, LV_SLIDER_PART_KNOB);
|
||||
lv_coord_t knob_left = lv_obj_get_style_pad_left(obj, LV_PART_KNOB);
|
||||
lv_coord_t knob_right = lv_obj_get_style_pad_right(obj,LV_PART_KNOB);
|
||||
lv_coord_t knob_top = lv_obj_get_style_pad_top(obj, LV_PART_KNOB);
|
||||
lv_coord_t knob_bottom = lv_obj_get_style_pad_bottom(obj, LV_PART_KNOB);
|
||||
|
||||
/* The smaller size is the knob diameter*/
|
||||
lv_coord_t knob_size = LV_MATH_MIN(lv_obj_get_width(obj), lv_obj_get_height(obj)) >> 1;
|
||||
knob_size += LV_MATH_MAX(LV_MATH_MAX(knob_left, knob_right), LV_MATH_MAX(knob_bottom, knob_top));
|
||||
knob_size += 2; /*For rounding error*/
|
||||
|
||||
knob_size += _lv_obj_get_draw_rect_ext_pad_size(obj, LV_SLIDER_PART_KNOB);
|
||||
knob_size += _lv_obj_get_draw_rect_ext_pad_size(obj, LV_PART_KNOB);
|
||||
|
||||
/*Indic. size is handled by bar*/
|
||||
lv_coord_t * s = param;
|
||||
@@ -475,28 +467,6 @@ static lv_res_t lv_slider_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
static lv_style_list_t * lv_slider_get_style(lv_slider_t * slider, uint8_t part)
|
||||
{
|
||||
lv_style_list_t * style_dsc_p;
|
||||
|
||||
switch(part) {
|
||||
case LV_SLIDER_PART_MAIN:
|
||||
style_dsc_p = &slider->style_list;
|
||||
break;
|
||||
case LV_SLIDER_PART_INDIC:
|
||||
style_dsc_p = &slider->style_indic;
|
||||
break;
|
||||
case LV_SLIDER_PART_KNOB:
|
||||
style_dsc_p = &slider->style_knob;
|
||||
break;
|
||||
default:
|
||||
style_dsc_p = NULL;
|
||||
}
|
||||
|
||||
return style_dsc_p;
|
||||
}
|
||||
|
||||
static void lv_slider_position_knob(lv_obj_t * slider, lv_area_t * knob_area, lv_coord_t knob_size, bool hor)
|
||||
{
|
||||
|
||||
@@ -513,10 +483,10 @@ static void lv_slider_position_knob(lv_obj_t * slider, lv_area_t * knob_area, lv
|
||||
knob_area->x2 = slider->coords.x2;
|
||||
}
|
||||
|
||||
lv_style_int_t knob_left = lv_obj_get_style_pad_left(slider, LV_SLIDER_PART_KNOB);
|
||||
lv_style_int_t knob_right = lv_obj_get_style_pad_right(slider, LV_SLIDER_PART_KNOB);
|
||||
lv_style_int_t knob_top = lv_obj_get_style_pad_top(slider, LV_SLIDER_PART_KNOB);
|
||||
lv_style_int_t knob_bottom = lv_obj_get_style_pad_bottom(slider, LV_SLIDER_PART_KNOB);
|
||||
lv_coord_t knob_left = lv_obj_get_style_pad_left(slider, LV_PART_KNOB);
|
||||
lv_coord_t knob_right = lv_obj_get_style_pad_right(slider, LV_PART_KNOB);
|
||||
lv_coord_t knob_top = lv_obj_get_style_pad_top(slider, LV_PART_KNOB);
|
||||
lv_coord_t knob_bottom = lv_obj_get_style_pad_bottom(slider, LV_PART_KNOB);
|
||||
|
||||
/*Apply the paddings on the knob area*/
|
||||
knob_area->x1 -= knob_left;
|
||||
@@ -529,7 +499,7 @@ static void lv_slider_draw_knob(lv_obj_t * slider, const lv_area_t * knob_area,
|
||||
{
|
||||
lv_draw_rect_dsc_t knob_rect_dsc;
|
||||
lv_draw_rect_dsc_init(&knob_rect_dsc);
|
||||
lv_obj_init_draw_rect_dsc(slider, LV_SLIDER_PART_KNOB, &knob_rect_dsc);
|
||||
lv_obj_init_draw_rect_dsc(slider, LV_PART_KNOB, &knob_rect_dsc);
|
||||
|
||||
lv_draw_rect(knob_area, clip_area, &knob_rect_dsc);
|
||||
}
|
||||
|
||||
@@ -46,7 +46,6 @@ LV_CLASS_DECLARE_START(lv_slider, lv_bar)
|
||||
|
||||
#define _lv_slider_data \
|
||||
_lv_bar_data \
|
||||
lv_style_list_t style_knob; /*Style of the knob*/ \
|
||||
lv_area_t left_knob_area; \
|
||||
lv_area_t right_knob_area; \
|
||||
int16_t * value_to_set; /* Which bar value to set */ \
|
||||
@@ -58,13 +57,7 @@ LV_CLASS_DECLARE_START(lv_slider, lv_bar)
|
||||
|
||||
LV_CLASS_DECLARE_END(lv_slider, lv_bar)
|
||||
|
||||
/** Built-in styles of slider*/
|
||||
enum {
|
||||
LV_SLIDER_PART_MAIN = LV_BAR_PART_MAIN, /** Slider background style. */
|
||||
LV_SLIDER_PART_INDIC = LV_BAR_PART_INDIC, /** Slider indicator (filled area) style. */
|
||||
LV_SLIDER_PART_KNOB = _LV_BAR_PART_VIRTUAL_LAST, /** Slider knob style. */
|
||||
_LV_SLIDER_PART_VIRTUAL_LAST
|
||||
};
|
||||
extern lv_slider_class_t lv_slider;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
|
||||
Reference in New Issue
Block a user