mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-14 06:42:58 +08:00
run formatter
This commit is contained in:
parent
a8b49faf6b
commit
bb0c5a968c
@ -23,4 +23,12 @@
|
|||||||
--suffix=none
|
--suffix=none
|
||||||
--preserve-date
|
--preserve-date
|
||||||
--formatted
|
--formatted
|
||||||
--exclude=lv_conf_internal.h
|
--exclude=lv_conf_internal.h
|
||||||
|
--exclude=../src/lv_font/lv_font_roboto_12.c
|
||||||
|
--exclude=../src/lv_font/lv_font_roboto_12_subpx.c
|
||||||
|
--exclude=../src/lv_font/lv_font_roboto_16.c
|
||||||
|
--exclude=../src/lv_font/lv_font_roboto_22.c
|
||||||
|
--exclude=../src/lv_font/lv_font_roboto_28.c
|
||||||
|
--exclude=../src/lv_font/lv_font_roboto_28_compressed.c
|
||||||
|
--exclude=../src/lv_font/lv_font_unscii_8.c
|
||||||
|
|
||||||
|
@ -399,9 +399,9 @@ lv_res_t lv_obj_del(lv_obj_t * obj)
|
|||||||
bool act_scr_del = false;
|
bool act_scr_del = false;
|
||||||
lv_obj_t * par = lv_obj_get_parent(obj);
|
lv_obj_t * par = lv_obj_get_parent(obj);
|
||||||
if(par == NULL) {
|
if(par == NULL) {
|
||||||
disp = lv_obj_get_disp(obj);
|
disp = lv_obj_get_disp(obj);
|
||||||
if(!disp) return LV_RES_INV; /*Shouldn't happen*/
|
if(!disp) return LV_RES_INV; /*Shouldn't happen*/
|
||||||
if(disp->act_scr == obj) act_scr_del = true;
|
if(disp->act_scr == obj) act_scr_del = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1290,9 +1290,10 @@ void lv_obj_refresh_style(lv_obj_t * obj, lv_style_property_t prop)
|
|||||||
lv_obj_invalidate(obj);
|
lv_obj_invalidate(obj);
|
||||||
|
|
||||||
if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK))
|
if(prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_INHERIT_MASK))
|
||||||
/*Send style change signals*/
|
/*Send style change signals*/
|
||||||
refresh_children_style(obj);
|
refresh_children_style(obj);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
lv_obj_invalidate(obj);
|
lv_obj_invalidate(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3040,7 +3041,7 @@ void lv_obj_init_draw_label_dsc(lv_obj_t * obj, uint8_t part, lv_draw_label_dsc_
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if LV_USE_BIDI
|
#if LV_USE_BIDI
|
||||||
draw_dsc->bidi_dir = lv_obj_get_base_dir(obj);
|
draw_dsc->bidi_dir = lv_obj_get_base_dir(obj);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3110,10 +3111,10 @@ lv_coord_t lv_obj_get_draw_rect_ext_pad_size(lv_obj_t * obj, uint8_t part)
|
|||||||
{
|
{
|
||||||
lv_coord_t s = 0;
|
lv_coord_t s = 0;
|
||||||
|
|
||||||
lv_coord_t sh_width = lv_obj_get_style_shadow_width(obj, part);
|
lv_coord_t sh_width = lv_obj_get_style_shadow_width(obj, part);
|
||||||
if(sh_width) {
|
if(sh_width) {
|
||||||
lv_opa_t sh_opa = lv_obj_get_style_shadow_opa(obj, part);
|
lv_opa_t sh_opa = lv_obj_get_style_shadow_opa(obj, part);
|
||||||
if(sh_opa > LV_OPA_MIN) {
|
if(sh_opa > LV_OPA_MIN) {
|
||||||
sh_width = sh_width / 2; /*THe blur adds only half width*/
|
sh_width = sh_width / 2; /*THe blur adds only half width*/
|
||||||
sh_width++;
|
sh_width++;
|
||||||
sh_width += lv_obj_get_style_shadow_spread(obj, part);
|
sh_width += lv_obj_get_style_shadow_spread(obj, part);
|
||||||
@ -3124,10 +3125,10 @@ lv_coord_t lv_obj_get_draw_rect_ext_pad_size(lv_obj_t * obj, uint8_t part)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char * value_str = lv_obj_get_style_value_str(obj, part);
|
const char * value_str = lv_obj_get_style_value_str(obj, part);
|
||||||
if(value_str) {
|
if(value_str) {
|
||||||
lv_opa_t value_opa = lv_obj_get_style_value_opa(obj, part);
|
lv_opa_t value_opa = lv_obj_get_style_value_opa(obj, part);
|
||||||
if(value_opa > LV_OPA_MIN) {
|
if(value_opa > LV_OPA_MIN) {
|
||||||
lv_style_int_t letter_space = lv_obj_get_style_value_letter_space(obj, part);
|
lv_style_int_t letter_space = lv_obj_get_style_value_letter_space(obj, part);
|
||||||
lv_style_int_t line_space = lv_obj_get_style_value_letter_space(obj, part);
|
lv_style_int_t line_space = lv_obj_get_style_value_letter_space(obj, part);
|
||||||
const lv_font_t * font = lv_obj_get_style_value_font(obj, part);
|
const lv_font_t * font = lv_obj_get_style_value_font(obj, part);
|
||||||
@ -3159,10 +3160,10 @@ lv_coord_t lv_obj_get_draw_rect_ext_pad_size(lv_obj_t * obj, uint8_t part)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lv_style_int_t outline_width = lv_obj_get_style_outline_width(obj, part);
|
lv_style_int_t outline_width = lv_obj_get_style_outline_width(obj, part);
|
||||||
if(outline_width) {
|
if(outline_width) {
|
||||||
lv_opa_t outline_opa = lv_obj_get_style_outline_opa(obj, part);
|
lv_opa_t outline_opa = lv_obj_get_style_outline_opa(obj, part);
|
||||||
if(outline_opa > LV_OPA_MIN) {
|
if(outline_opa > LV_OPA_MIN) {
|
||||||
lv_style_int_t outline_pad = lv_obj_get_style_outline_pad(obj, part);
|
lv_style_int_t outline_pad = lv_obj_get_style_outline_pad(obj, part);
|
||||||
s = LV_MATH_MAX(s, outline_pad + outline_width);
|
s = LV_MATH_MAX(s, outline_pad + outline_width);
|
||||||
}
|
}
|
||||||
|
@ -584,7 +584,8 @@ void _lv_obj_set_style_local_ptr(lv_obj_t * obj, uint8_t type, lv_style_property
|
|||||||
* For example: `lv_obj_style_get_trasition_path()`
|
* For example: `lv_obj_style_get_trasition_path()`
|
||||||
* @note for performance reasons it's not checked if the property really has pointer type
|
* @note for performance reasons it's not checked if the property really has pointer type
|
||||||
*/
|
*/
|
||||||
static inline void _lv_obj_set_style_local_func_ptr(lv_obj_t * obj, uint8_t type, lv_style_property_t prop, lv_style_prop_cb_t value)
|
static inline void _lv_obj_set_style_local_func_ptr(lv_obj_t * obj, uint8_t type, lv_style_property_t prop,
|
||||||
|
lv_style_prop_cb_t value)
|
||||||
{
|
{
|
||||||
lv_style_fptr_dptr_t fd;
|
lv_style_fptr_dptr_t fd;
|
||||||
fd.fptr = value;
|
fd.fptr = value;
|
||||||
@ -603,7 +604,8 @@ static inline void _lv_obj_set_style_local_func_ptr(lv_obj_t * obj, uint8_t type
|
|||||||
* For example: `lv_obj_style_get_text_font()`
|
* For example: `lv_obj_style_get_text_font()`
|
||||||
* @note for performance reasons it's not checked if the property really has pointer type
|
* @note for performance reasons it's not checked if the property really has pointer type
|
||||||
*/
|
*/
|
||||||
static inline void _lv_obj_set_style_local_data_ptr(lv_obj_t * obj, uint8_t type, lv_style_property_t prop, const void * value)
|
static inline void _lv_obj_set_style_local_data_ptr(lv_obj_t * obj, uint8_t type, lv_style_property_t prop,
|
||||||
|
const void * value)
|
||||||
{
|
{
|
||||||
lv_style_fptr_dptr_t fd;
|
lv_style_fptr_dptr_t fd;
|
||||||
fd.fptr = NULL;
|
fd.fptr = NULL;
|
||||||
@ -1089,7 +1091,8 @@ lv_style_fptr_dptr_t _lv_obj_get_style_ptr(const lv_obj_t * obj, uint8_t part, l
|
|||||||
* For example: `lv_obj_style_get_trasition_path()`
|
* For example: `lv_obj_style_get_trasition_path()`
|
||||||
* @note for performance reasons it's not checked if the property really has pointer type
|
* @note for performance reasons it's not checked if the property really has pointer type
|
||||||
*/
|
*/
|
||||||
static inline lv_style_prop_cb_t _lv_obj_get_style_func_ptr(const lv_obj_t * obj, uint8_t part, lv_style_property_t prop)
|
static inline lv_style_prop_cb_t _lv_obj_get_style_func_ptr(const lv_obj_t * obj, uint8_t part,
|
||||||
|
lv_style_property_t prop)
|
||||||
{
|
{
|
||||||
lv_style_fptr_dptr_t fd;
|
lv_style_fptr_dptr_t fd;
|
||||||
fd = _lv_obj_get_style_ptr(obj, part, prop);
|
fd = _lv_obj_get_style_ptr(obj, part, prop);
|
||||||
|
@ -101,22 +101,22 @@ extern "C" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define _OBJ_SET_STYLE_scalar(prop_name, func_name, value_type, style_type) \
|
#define _OBJ_SET_STYLE_scalar(prop_name, func_name, value_type, style_type) \
|
||||||
static inline void lv_style_set_##func_name (lv_style_t * style, lv_state_t state, value_type value) \
|
static inline void lv_style_set_##func_name (lv_style_t * style, lv_state_t state, value_type value) \
|
||||||
{ \
|
{ \
|
||||||
_lv_style_set##style_type (style, LV_STYLE_##prop_name | (state << LV_STYLE_STATE_POS), value); \
|
_lv_style_set##style_type (style, LV_STYLE_##prop_name | (state << LV_STYLE_STATE_POS), value); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define _OBJ_SET_STYLE_nonscalar(prop_name, func_name, value_type, style_type) \
|
#define _OBJ_SET_STYLE_nonscalar(prop_name, func_name, value_type, style_type) \
|
||||||
static inline void lv_style_set_##func_name (lv_style_t * style, lv_state_t state, value_type value) \
|
static inline void lv_style_set_##func_name (lv_style_t * style, lv_state_t state, value_type value) \
|
||||||
{ \
|
{ \
|
||||||
_lv_style_set##style_type (style, LV_STYLE_##prop_name | (state << LV_STYLE_STATE_POS), value); \
|
_lv_style_set##style_type (style, LV_STYLE_##prop_name | (state << LV_STYLE_STATE_POS), value); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define _OBJ_SET_STYLE_func_ptr(prop_name, func_name, value_type, style_type) \
|
#define _OBJ_SET_STYLE_func_ptr(prop_name, func_name, value_type, style_type) \
|
||||||
static inline void lv_style_set_##func_name (lv_style_t * style, lv_state_t state, value_type value) \
|
static inline void lv_style_set_##func_name (lv_style_t * style, lv_state_t state, value_type value) \
|
||||||
{ \
|
{ \
|
||||||
_lv_style_set##style_type (style, LV_STYLE_##prop_name | (state << LV_STYLE_STATE_POS), FUNC_PTR_CAST(value)); \
|
_lv_style_set##style_type (style, LV_STYLE_##prop_name | (state << LV_STYLE_STATE_POS), FUNC_PTR_CAST(value)); \
|
||||||
} \
|
} \
|
||||||
|
|
||||||
#define _LV_OBJ_STYLE_SET_GET_DECLARE(prop_name, func_name, value_type, style_type, scalar) \
|
#define _LV_OBJ_STYLE_SET_GET_DECLARE(prop_name, func_name, value_type, style_type, scalar) \
|
||||||
_OBJ_GET_STYLE_##scalar(prop_name, func_name, value_type, style_type) \
|
_OBJ_GET_STYLE_##scalar(prop_name, func_name, value_type, style_type) \
|
||||||
@ -217,7 +217,8 @@ _LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PROP_6, transition_prop_6, lv_style_int
|
|||||||
#if LV_USE_ANIMATION
|
#if LV_USE_ANIMATION
|
||||||
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, lv_anim_path_cb_t, _func_ptr, func_ptr)
|
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, lv_anim_path_cb_t, _func_ptr, func_ptr)
|
||||||
#else
|
#else
|
||||||
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path,lv_style_prop_cb_t, _func_ptr, func_ptr) /*For compatibility*/
|
_LV_OBJ_STYLE_SET_GET_DECLARE(TRANSITION_PATH, transition_path, lv_style_prop_cb_t, _func_ptr,
|
||||||
|
func_ptr) /*For compatibility*/
|
||||||
#endif
|
#endif
|
||||||
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar)
|
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_WIDTH, scale_width, lv_style_int_t, _int, scalar)
|
||||||
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_BORDER_WIDTH, scale_border_width, lv_style_int_t, _int, scalar)
|
_LV_OBJ_STYLE_SET_GET_DECLARE(SCALE_BORDER_WIDTH, scale_border_width, lv_style_int_t, _int, scalar)
|
||||||
|
@ -218,7 +218,7 @@ typedef void(*lv_style_prop_cb_t)(void);
|
|||||||
typedef union {
|
typedef union {
|
||||||
lv_style_prop_cb_t fptr;
|
lv_style_prop_cb_t fptr;
|
||||||
const void * dptr;
|
const void * dptr;
|
||||||
}lv_style_fptr_dptr_t;
|
} lv_style_fptr_dptr_t;
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -512,8 +512,8 @@ static inline int16_t _lv_style_get_data_ptr(const lv_style_t * style, lv_style_
|
|||||||
fd_res.fptr = NULL;
|
fd_res.fptr = NULL;
|
||||||
lv_res_t r = _lv_style_get_ptr(style, prop, &fd_res);
|
lv_res_t r = _lv_style_get_ptr(style, prop, &fd_res);
|
||||||
|
|
||||||
void** res2 = (void**)res;
|
void ** res2 = (void **)res;
|
||||||
*res2 = (void*)fd_res.dptr;
|
*res2 = (void *)fd_res.dptr;
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -587,7 +587,8 @@ void lv_style_list_set_local_ptr(lv_style_list_t * list, lv_style_property_t pro
|
|||||||
* @param value the value to set
|
* @param value the value to set
|
||||||
* @note for performance reasons it's not checked if the property really has pointer type
|
* @note for performance reasons it's not checked if the property really has pointer type
|
||||||
*/
|
*/
|
||||||
static inline void lv_style_list_set_local_func_ptr(lv_style_list_t * list, lv_style_property_t prop, lv_style_prop_cb_t value)
|
static inline void lv_style_list_set_local_func_ptr(lv_style_list_t * list, lv_style_property_t prop,
|
||||||
|
lv_style_prop_cb_t value)
|
||||||
{
|
{
|
||||||
lv_style_fptr_dptr_t fd;
|
lv_style_fptr_dptr_t fd;
|
||||||
fd.dptr = NULL;
|
fd.dptr = NULL;
|
||||||
@ -603,7 +604,8 @@ static inline void lv_style_list_set_local_func_ptr(lv_style_list_t * list, lv_s
|
|||||||
* @param value the value to set
|
* @param value the value to set
|
||||||
* @note for performance reasons it's not checked if the property really has pointer type
|
* @note for performance reasons it's not checked if the property really has pointer type
|
||||||
*/
|
*/
|
||||||
static inline void lv_style_list_set_local_data_ptr(lv_style_list_t * list, lv_style_property_t prop, const void * value)
|
static inline void lv_style_list_set_local_data_ptr(lv_style_list_t * list, lv_style_property_t prop,
|
||||||
|
const void * value)
|
||||||
{
|
{
|
||||||
lv_style_fptr_dptr_t fd;
|
lv_style_fptr_dptr_t fd;
|
||||||
fd.fptr = NULL;
|
fd.fptr = NULL;
|
||||||
|
@ -65,9 +65,9 @@ static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_co
|
|||||||
|
|
||||||
#define FILL_NORMAL_MASK_PX(out_x, color) \
|
#define FILL_NORMAL_MASK_PX(out_x, color) \
|
||||||
if(*mask_tmp_x) { \
|
if(*mask_tmp_x) { \
|
||||||
if(*mask_tmp_x == LV_OPA_COVER) disp_buf_tmp[out_x] = color; \
|
if(*mask_tmp_x == LV_OPA_COVER) disp_buf_tmp[out_x] = color; \
|
||||||
else if(disp_buf_tmp[out_x].full == color.full) disp_buf_tmp[out_x] = color; \
|
else if(disp_buf_tmp[out_x].full == color.full) disp_buf_tmp[out_x] = color; \
|
||||||
else disp_buf_tmp[out_x] = lv_color_mix(color, disp_buf_tmp[out_x], *mask_tmp_x); \
|
else disp_buf_tmp[out_x] = lv_color_mix(color, disp_buf_tmp[out_x], *mask_tmp_x); \
|
||||||
} \
|
} \
|
||||||
mask_tmp_x++;
|
mask_tmp_x++;
|
||||||
|
|
||||||
@ -75,18 +75,18 @@ static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_co
|
|||||||
#define FILL_NORMAL_MASK_PX_SCR_TRANSP(out_x, color) \
|
#define FILL_NORMAL_MASK_PX_SCR_TRANSP(out_x, color) \
|
||||||
if(*mask_tmp_x) { \
|
if(*mask_tmp_x) { \
|
||||||
if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_tmp[out_x].full) { \
|
if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_tmp[out_x].full) { \
|
||||||
if(disp->driver.screen_transp) { \
|
if(disp->driver.screen_transp) { \
|
||||||
lv_color_mix_with_alpha(disp_buf_tmp[x], disp_buf_tmp[out_x].ch.alpha, \
|
lv_color_mix_with_alpha(disp_buf_tmp[x], disp_buf_tmp[out_x].ch.alpha, \
|
||||||
color, *mask_tmp_x, &last_res_color, &last_res_color.ch.alpha); \
|
color, *mask_tmp_x, &last_res_color, &last_res_color.ch.alpha); \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
if(*mask_tmp_x == LV_OPA_COVER) last_res_color = color; \
|
if(*mask_tmp_x == LV_OPA_COVER) last_res_color = color; \
|
||||||
else if(disp_buf_tmp[out_x].full == color.full) last_res_color = color; \
|
else if(disp_buf_tmp[out_x].full == color.full) last_res_color = color; \
|
||||||
else last_res_color = lv_color_mix(color, disp_buf_tmp[out_x], *mask_tmp_x); \
|
else last_res_color = lv_color_mix(color, disp_buf_tmp[out_x], *mask_tmp_x); \
|
||||||
last_mask = *mask_tmp_x; \
|
last_mask = *mask_tmp_x; \
|
||||||
last_dest_color.full = disp_buf_tmp[out_x].full; \
|
last_dest_color.full = disp_buf_tmp[out_x].full; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
disp_buf_tmp[out_x] = last_res_color; \
|
disp_buf_tmp[out_x] = last_res_color; \
|
||||||
} \
|
} \
|
||||||
@ -379,30 +379,31 @@ static void fill_normal(const lv_area_t * disp_area, lv_color_t * disp_buf, con
|
|||||||
#else
|
#else
|
||||||
for(x = draw_area->x1; x <= draw_area->x2 && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) {
|
for(x = draw_area->x1; x <= draw_area->x2 && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) {
|
||||||
#if LV_COLOR_SCREEN_TRANSP
|
#if LV_COLOR_SCREEN_TRANSP
|
||||||
FILL_NORMAL_MASK_PX_SCR_TRANSP(x, color)
|
FILL_NORMAL_MASK_PX_SCR_TRANSP(x, color)
|
||||||
#else
|
#else
|
||||||
FILL_NORMAL_MASK_PX(x, color)
|
FILL_NORMAL_MASK_PX(x, color)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t * mask32 = (uint32_t *) mask_tmp_x;
|
uint32_t * mask32 = (uint32_t *) mask_tmp_x;
|
||||||
for(; x <= x_end4; x+= 4) {
|
for(; x <= x_end4; x += 4) {
|
||||||
if(*mask32) {
|
if(*mask32) {
|
||||||
if((*mask32) == 0xFFFFFFFF) {
|
if((*mask32) == 0xFFFFFFFF) {
|
||||||
disp_buf_tmp[x] = color;
|
disp_buf_tmp[x] = color;
|
||||||
disp_buf_tmp[x + 1] = color;
|
disp_buf_tmp[x + 1] = color;
|
||||||
disp_buf_tmp[x + 2] = color;
|
disp_buf_tmp[x + 2] = color;
|
||||||
disp_buf_tmp[x + 3] = color;
|
disp_buf_tmp[x + 3] = color;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
mask_tmp_x = (const lv_opa_t *)mask32;
|
mask_tmp_x = (const lv_opa_t *)mask32;
|
||||||
#if LV_COLOR_SCREEN_TRANSP
|
#if LV_COLOR_SCREEN_TRANSP
|
||||||
FILL_NORMAL_MASK_PX_SCR_TRANSP(x, color)
|
FILL_NORMAL_MASK_PX_SCR_TRANSP(x, color)
|
||||||
FILL_NORMAL_MASK_PX_SCR_TRANSP(x + 1 , color)
|
FILL_NORMAL_MASK_PX_SCR_TRANSP(x + 1, color)
|
||||||
FILL_NORMAL_MASK_PX_SCR_TRANSP(x + 2, color)
|
FILL_NORMAL_MASK_PX_SCR_TRANSP(x + 2, color)
|
||||||
FILL_NORMAL_MASK_PX_SCR_TRANSP(x + 3, color)
|
FILL_NORMAL_MASK_PX_SCR_TRANSP(x + 3, color)
|
||||||
#else
|
#else
|
||||||
FILL_NORMAL_MASK_PX(x, color)
|
FILL_NORMAL_MASK_PX(x, color)
|
||||||
FILL_NORMAL_MASK_PX(x + 1 , color)
|
FILL_NORMAL_MASK_PX(x + 1, color)
|
||||||
FILL_NORMAL_MASK_PX(x + 2, color)
|
FILL_NORMAL_MASK_PX(x + 2, color)
|
||||||
FILL_NORMAL_MASK_PX(x + 3, color)
|
FILL_NORMAL_MASK_PX(x + 3, color)
|
||||||
#endif
|
#endif
|
||||||
@ -414,7 +415,7 @@ static void fill_normal(const lv_area_t * disp_area, lv_color_t * disp_buf, con
|
|||||||
mask_tmp_x = (const lv_opa_t *)mask32;
|
mask_tmp_x = (const lv_opa_t *)mask32;
|
||||||
for(; x <= draw_area->x2 ; x++) {
|
for(; x <= draw_area->x2 ; x++) {
|
||||||
#if LV_COLOR_SCREEN_TRANSP
|
#if LV_COLOR_SCREEN_TRANSP
|
||||||
FILL_NORMAL_MASK_PX_SCR_TRANSP(x, color)
|
FILL_NORMAL_MASK_PX_SCR_TRANSP(x, color)
|
||||||
#else
|
#else
|
||||||
FILL_NORMAL_MASK_PX(x, color)
|
FILL_NORMAL_MASK_PX(x, color)
|
||||||
#endif
|
#endif
|
||||||
@ -431,12 +432,13 @@ static void fill_normal(const lv_area_t * disp_area, lv_color_t * disp_buf, con
|
|||||||
const lv_opa_t * mask_tmp_x = &mask_tmp[draw_area->x1];
|
const lv_opa_t * mask_tmp_x = &mask_tmp[draw_area->x1];
|
||||||
for(x = draw_area->x1; x <= draw_area->x2; x++) {
|
for(x = draw_area->x1; x <= draw_area->x2; x++) {
|
||||||
if(*mask_tmp_x) {
|
if(*mask_tmp_x) {
|
||||||
if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : (uint32_t)((uint32_t)(*mask_tmp_x) * opa) >> 8;
|
if(*mask_tmp_x != last_mask) opa_tmp = *mask_tmp_x == LV_OPA_COVER ? opa : (uint32_t)((uint32_t)(
|
||||||
|
*mask_tmp_x) * opa) >> 8;
|
||||||
if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_tmp[x].full) {
|
if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_tmp[x].full) {
|
||||||
#if LV_COLOR_SCREEN_TRANSP
|
#if LV_COLOR_SCREEN_TRANSP
|
||||||
if(disp->driver.screen_transp) {
|
if(disp->driver.screen_transp) {
|
||||||
lv_color_mix_with_alpha(disp_buf_tmp[x], disp_buf_tmp[x].ch.alpha, color, opa_tmp, &last_res_color,
|
lv_color_mix_with_alpha(disp_buf_tmp[x], disp_buf_tmp[x].ch.alpha, color, opa_tmp, &last_res_color,
|
||||||
&last_res_color.ch.alpha);
|
&last_res_color.ch.alpha);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
@ -682,14 +684,14 @@ static void map_normal(const lv_area_t * disp_area, lv_color_t * disp_buf, cons
|
|||||||
for(y = draw_area->y1; y <= draw_area->y2; y++) {
|
for(y = draw_area->y1; y <= draw_area->y2; y++) {
|
||||||
for(x = draw_area->x1; x <= draw_area->x2; x++) {
|
for(x = draw_area->x1; x <= draw_area->x2; x++) {
|
||||||
if(mask_tmp[x]) {
|
if(mask_tmp[x]) {
|
||||||
#if LV_COLOR_SCREEN_TRANSP
|
#if LV_COLOR_SCREEN_TRANSP
|
||||||
if(disp->driver.screen_transp) {
|
if(disp->driver.screen_transp) {
|
||||||
lv_color_mix_with_alpha(disp_buf_tmp[x], disp_buf_tmp[x].ch.alpha, map_buf_tmp[x], mask_tmp[x], &res_color,
|
lv_color_mix_with_alpha(disp_buf_tmp[x], disp_buf_tmp[x].ch.alpha, map_buf_tmp[x], mask_tmp[x], &res_color,
|
||||||
&opa_composed);
|
&opa_composed);
|
||||||
res_color.ch.alpha = opa_composed;
|
res_color.ch.alpha = opa_composed;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if(mask_tmp[x] > LV_OPA_MAX) res_color = map_buf_tmp[x];
|
if(mask_tmp[x] > LV_OPA_MAX) res_color = map_buf_tmp[x];
|
||||||
else res_color = lv_color_mix(map_buf_tmp[x], disp_buf_tmp[x], mask_tmp[x]);
|
else res_color = lv_color_mix(map_buf_tmp[x], disp_buf_tmp[x], mask_tmp[x]);
|
||||||
@ -709,13 +711,13 @@ static void map_normal(const lv_area_t * disp_area, lv_color_t * disp_buf, cons
|
|||||||
for(x = draw_area->x1; x <= draw_area->x2; x++) {
|
for(x = draw_area->x1; x <= draw_area->x2; x++) {
|
||||||
if(mask_tmp[x]) {
|
if(mask_tmp[x]) {
|
||||||
lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8);
|
lv_opa_t opa_tmp = mask_tmp[x] >= LV_OPA_MAX ? opa : ((opa * mask_tmp[x]) >> 8);
|
||||||
#if LV_COLOR_SCREEN_TRANSP
|
#if LV_COLOR_SCREEN_TRANSP
|
||||||
if(disp->driver.screen_transp) {
|
if(disp->driver.screen_transp) {
|
||||||
lv_color_mix_with_alpha(disp_buf_tmp[x], disp_buf_tmp[x].ch.alpha, map_buf_tmp[x], opa_tmp, &disp_buf_tmp[x],
|
lv_color_mix_with_alpha(disp_buf_tmp[x], disp_buf_tmp[x].ch.alpha, map_buf_tmp[x], opa_tmp, &disp_buf_tmp[x],
|
||||||
&disp_buf_tmp[x].ch.alpha);
|
&disp_buf_tmp[x].ch.alpha);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
disp_buf_tmp[x] = lv_color_mix(map_buf_tmp[x], disp_buf_tmp[x], opa_tmp);
|
disp_buf_tmp[x] = lv_color_mix(map_buf_tmp[x], disp_buf_tmp[x], opa_tmp);
|
||||||
}
|
}
|
||||||
|
@ -390,7 +390,7 @@ static void lv_draw_map(const lv_area_t * map_area, const lv_area_t * clip_area,
|
|||||||
|
|
||||||
/*Prepare the `mask_buf`if there are other masks*/
|
/*Prepare the `mask_buf`if there are other masks*/
|
||||||
if(other_mask_cnt) {
|
if(other_mask_cnt) {
|
||||||
lv_memset_ff(mask_buf,mask_buf_size);
|
lv_memset_ff(mask_buf, mask_buf_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
lv_coord_t draw_area_h = lv_area_get_height(&draw_area);
|
lv_coord_t draw_area_h = lv_area_get_height(&draw_area);
|
||||||
@ -405,26 +405,26 @@ static void lv_draw_map(const lv_area_t * map_area, const lv_area_t * clip_area,
|
|||||||
for(y = 0; y < draw_area_h; y++) {
|
for(y = 0; y < draw_area_h; y++) {
|
||||||
map_px = map_buf_tmp;
|
map_px = map_buf_tmp;
|
||||||
for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) {
|
for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) {
|
||||||
lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1];
|
lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1];
|
||||||
mask_buf[px_i] = px_opa;
|
mask_buf[px_i] = px_opa;
|
||||||
if(px_opa < LV_OPA_MIN) {
|
if(px_opa < LV_OPA_MIN) {
|
||||||
#if LV_COLOR_DEPTH == 32
|
#if LV_COLOR_DEPTH == 32
|
||||||
map2[px_i].ch.alpha = 0xFF;
|
map2[px_i].ch.alpha = 0xFF;
|
||||||
#endif
|
#endif
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LV_COLOR_DEPTH == 8
|
#if LV_COLOR_DEPTH == 8
|
||||||
c.full = map_px[0];
|
c.full = map_px[0];
|
||||||
#elif LV_COLOR_DEPTH == 16
|
#elif LV_COLOR_DEPTH == 16
|
||||||
c.full = map_px[0] + (map_px[1] << 8);
|
c.full = map_px[0] + (map_px[1] << 8);
|
||||||
#elif LV_COLOR_DEPTH == 32
|
#elif LV_COLOR_DEPTH == 32
|
||||||
c.full = *((uint32_t *)map_px);
|
c.full = *((uint32_t *)map_px);
|
||||||
#endif
|
#endif
|
||||||
map2[px_i].full = c.full;
|
map2[px_i].full = c.full;
|
||||||
}
|
}
|
||||||
|
|
||||||
map_buf_tmp += map_w * px_size_byte;
|
map_buf_tmp += map_w * px_size_byte;
|
||||||
if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) {
|
if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) {
|
||||||
blend_area.y2 ++;
|
blend_area.y2 ++;
|
||||||
}
|
}
|
||||||
@ -449,134 +449,133 @@ static void lv_draw_map(const lv_area_t * map_area, const lv_area_t * clip_area,
|
|||||||
/*Most complicated case: transform or other mask or chroma keyed*/
|
/*Most complicated case: transform or other mask or chroma keyed*/
|
||||||
else {
|
else {
|
||||||
|
|
||||||
lv_img_transform_dsc_t trans_dsc;
|
lv_img_transform_dsc_t trans_dsc;
|
||||||
lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t));
|
lv_memset_00(&trans_dsc, sizeof(lv_img_transform_dsc_t));
|
||||||
if(transform) {
|
if(transform) {
|
||||||
lv_img_cf_t cf = LV_IMG_CF_TRUE_COLOR;
|
lv_img_cf_t cf = LV_IMG_CF_TRUE_COLOR;
|
||||||
if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA;
|
if(alpha_byte) cf = LV_IMG_CF_TRUE_COLOR_ALPHA;
|
||||||
else if(chroma_key) cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED;
|
else if(chroma_key) cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED;
|
||||||
|
|
||||||
trans_dsc.cfg.angle = draw_dsc->angle;
|
trans_dsc.cfg.angle = draw_dsc->angle;
|
||||||
trans_dsc.cfg.zoom = draw_dsc->zoom;
|
trans_dsc.cfg.zoom = draw_dsc->zoom;
|
||||||
trans_dsc.cfg.src = map_p;
|
trans_dsc.cfg.src = map_p;
|
||||||
trans_dsc.cfg.src_w = map_w;
|
trans_dsc.cfg.src_w = map_w;
|
||||||
trans_dsc.cfg.src_h = map_h;
|
trans_dsc.cfg.src_h = map_h;
|
||||||
trans_dsc.cfg.cf = cf;
|
trans_dsc.cfg.cf = cf;
|
||||||
trans_dsc.cfg.pivot_x = draw_dsc->pivot.x;
|
trans_dsc.cfg.pivot_x = draw_dsc->pivot.x;
|
||||||
trans_dsc.cfg.pivot_y = draw_dsc->pivot.y;
|
trans_dsc.cfg.pivot_y = draw_dsc->pivot.y;
|
||||||
trans_dsc.cfg.color = draw_dsc->recolor;
|
trans_dsc.cfg.color = draw_dsc->recolor;
|
||||||
trans_dsc.cfg.antialias = draw_dsc->antialias;
|
trans_dsc.cfg.antialias = draw_dsc->antialias;
|
||||||
|
|
||||||
lv_img_buf_transform_init(&trans_dsc);
|
lv_img_buf_transform_init(&trans_dsc);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t recolor_premult[3] = {0};
|
uint16_t recolor_premult[3] = {0};
|
||||||
lv_opa_t recolor_opa_inv = 255 - draw_dsc->recolor_opa;
|
lv_opa_t recolor_opa_inv = 255 - draw_dsc->recolor_opa;
|
||||||
if(draw_dsc->recolor_opa != 0) {
|
if(draw_dsc->recolor_opa != 0) {
|
||||||
lv_color_premult(draw_dsc->recolor, draw_dsc->recolor_opa, recolor_premult);
|
lv_color_premult(draw_dsc->recolor, draw_dsc->recolor_opa, recolor_premult);
|
||||||
}
|
}
|
||||||
|
|
||||||
lv_draw_mask_res_t mask_res;
|
lv_draw_mask_res_t mask_res;
|
||||||
mask_res = (alpha_byte || chroma_key || draw_dsc->angle) ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER;
|
mask_res = (alpha_byte || chroma_key || draw_dsc->angle) ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER;
|
||||||
int32_t x;
|
int32_t x;
|
||||||
int32_t y;
|
int32_t y;
|
||||||
for(y = 0; y < draw_area_h; y++) {
|
for(y = 0; y < draw_area_h; y++) {
|
||||||
map_px = map_buf_tmp;
|
map_px = map_buf_tmp;
|
||||||
uint32_t px_i_start = px_i;
|
uint32_t px_i_start = px_i;
|
||||||
|
|
||||||
for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) {
|
for(x = 0; x < draw_area_w; x++, map_px += px_size_byte, px_i++) {
|
||||||
|
|
||||||
if(transform == false)
|
if(transform == false) {
|
||||||
{
|
if(alpha_byte) {
|
||||||
if(alpha_byte) {
|
lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1];
|
||||||
lv_opa_t px_opa = map_px[LV_IMG_PX_SIZE_ALPHA_BYTE - 1];
|
mask_buf[px_i] = px_opa;
|
||||||
mask_buf[px_i] = px_opa;
|
if(px_opa < LV_OPA_MIN) {
|
||||||
if(px_opa < LV_OPA_MIN) {
|
#if LV_COLOR_DEPTH == 32
|
||||||
#if LV_COLOR_DEPTH == 32
|
map2[px_i].ch.alpha = 0xFF;
|
||||||
map2[px_i].ch.alpha = 0xFF;
|
#endif
|
||||||
#endif
|
continue;
|
||||||
continue;
|
}
|
||||||
}
|
}
|
||||||
}
|
else {
|
||||||
else {
|
mask_buf[px_i] = LV_OPA_COVER;
|
||||||
mask_buf[px_i] = LV_OPA_COVER;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
#if LV_COLOR_DEPTH == 8
|
#if LV_COLOR_DEPTH == 8
|
||||||
c.full = map_px[0];
|
c.full = map_px[0];
|
||||||
#elif LV_COLOR_DEPTH == 16
|
#elif LV_COLOR_DEPTH == 16
|
||||||
c.full = map_px[0] + (map_px[1] << 8);
|
c.full = map_px[0] + (map_px[1] << 8);
|
||||||
#elif LV_COLOR_DEPTH == 32
|
#elif LV_COLOR_DEPTH == 32
|
||||||
c.full = *((uint32_t *)map_px);
|
c.full = *((uint32_t *)map_px);
|
||||||
#endif
|
#endif
|
||||||
if(chroma_key) {
|
if(chroma_key) {
|
||||||
if(c.full == chroma_keyed_color.full) {
|
if(c.full == chroma_keyed_color.full) {
|
||||||
mask_buf[px_i] = LV_OPA_TRANSP;
|
mask_buf[px_i] = LV_OPA_TRANSP;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/*Rotate*/
|
/*Rotate*/
|
||||||
bool ret;
|
bool ret;
|
||||||
int32_t rot_x = x + (disp_area->x1 + draw_area.x1) - map_area->x1;
|
int32_t rot_x = x + (disp_area->x1 + draw_area.x1) - map_area->x1;
|
||||||
int32_t rot_y = y + (disp_area->y1 + draw_area.y1) - map_area->y1;
|
int32_t rot_y = y + (disp_area->y1 + draw_area.y1) - map_area->y1;
|
||||||
ret = lv_img_buf_transform(&trans_dsc, rot_x, rot_y);
|
ret = lv_img_buf_transform(&trans_dsc, rot_x, rot_y);
|
||||||
if(ret == false) {
|
if(ret == false) {
|
||||||
mask_buf[px_i] = LV_OPA_TRANSP;
|
mask_buf[px_i] = LV_OPA_TRANSP;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
mask_buf[px_i] = trans_dsc.res.opa;
|
mask_buf[px_i] = trans_dsc.res.opa;
|
||||||
c.full = trans_dsc.res.color.full;
|
c.full = trans_dsc.res.color.full;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(draw_dsc->recolor_opa != 0) {
|
if(draw_dsc->recolor_opa != 0) {
|
||||||
c = lv_color_mix_premult(recolor_premult, c, recolor_opa_inv);
|
c = lv_color_mix_premult(recolor_premult, c, recolor_opa_inv);
|
||||||
}
|
}
|
||||||
|
|
||||||
map2[px_i].full = c.full;
|
map2[px_i].full = c.full;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*Apply the masks if any*/
|
/*Apply the masks if any*/
|
||||||
if(other_mask_cnt) {
|
if(other_mask_cnt) {
|
||||||
lv_draw_mask_res_t mask_res_sub;
|
lv_draw_mask_res_t mask_res_sub;
|
||||||
mask_res_sub = lv_draw_mask_apply(mask_buf + px_i_start, draw_area.x1 + vdb->area.x1, y + draw_area.y1 + vdb->area.y1,
|
mask_res_sub = lv_draw_mask_apply(mask_buf + px_i_start, draw_area.x1 + vdb->area.x1, y + draw_area.y1 + vdb->area.y1,
|
||||||
lv_area_get_width(&draw_area));
|
lv_area_get_width(&draw_area));
|
||||||
if(mask_res_sub == LV_DRAW_MASK_RES_FULL_TRANSP) {
|
if(mask_res_sub == LV_DRAW_MASK_RES_FULL_TRANSP) {
|
||||||
lv_memset_00(mask_buf + px_i_start, lv_area_get_width(&draw_area));
|
lv_memset_00(mask_buf + px_i_start, lv_area_get_width(&draw_area));
|
||||||
mask_res = LV_DRAW_MASK_RES_CHANGED;
|
mask_res = LV_DRAW_MASK_RES_CHANGED;
|
||||||
}
|
}
|
||||||
else if(mask_res_sub == LV_DRAW_MASK_RES_CHANGED) {
|
else if(mask_res_sub == LV_DRAW_MASK_RES_CHANGED) {
|
||||||
mask_res = LV_DRAW_MASK_RES_CHANGED;
|
mask_res = LV_DRAW_MASK_RES_CHANGED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
map_buf_tmp += map_w * px_size_byte;
|
map_buf_tmp += map_w * px_size_byte;
|
||||||
if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) {
|
if(px_i + lv_area_get_width(&draw_area) < mask_buf_size) {
|
||||||
blend_area.y2 ++;
|
blend_area.y2 ++;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode);
|
lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode);
|
||||||
|
|
||||||
blend_area.y1 = blend_area.y2 + 1;
|
blend_area.y1 = blend_area.y2 + 1;
|
||||||
blend_area.y2 = blend_area.y1;
|
blend_area.y2 = blend_area.y1;
|
||||||
|
|
||||||
px_i = 0;
|
px_i = 0;
|
||||||
mask_res = (alpha_byte || chroma_key || draw_dsc->angle) ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER;
|
mask_res = (alpha_byte || chroma_key || draw_dsc->angle) ? LV_DRAW_MASK_RES_CHANGED : LV_DRAW_MASK_RES_FULL_COVER;
|
||||||
|
|
||||||
/*Prepare the `mask_buf`if there are other masks*/
|
/*Prepare the `mask_buf`if there are other masks*/
|
||||||
if(other_mask_cnt) {
|
if(other_mask_cnt) {
|
||||||
lv_memset_ff(mask_buf, mask_buf_size);
|
lv_memset_ff(mask_buf, mask_buf_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*Flush the last part*/
|
/*Flush the last part*/
|
||||||
if(blend_area.y1 != blend_area.y2) {
|
if(blend_area.y1 != blend_area.y2) {
|
||||||
blend_area.y2--;
|
blend_area.y2--;
|
||||||
lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode);
|
lv_blend_map(clip_area, &blend_area, map2, mask_buf, mask_res, draw_dsc->opa, draw_dsc->blend_mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lv_mem_buf_release(mask_buf);
|
lv_mem_buf_release(mask_buf);
|
||||||
|
@ -52,7 +52,8 @@ static const uint8_t bpp2_opa_table[4] = {0, 85, 170, 255}; /*Opacity mapping w
|
|||||||
static const uint8_t bpp4_opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/
|
static const uint8_t bpp4_opa_table[16] = {0, 17, 34, 51, /*Opacity mapping with bpp = 4*/
|
||||||
68, 85, 102, 119,
|
68, 85, 102, 119,
|
||||||
136, 153, 170, 187,
|
136, 153, 170, 187,
|
||||||
204, 221, 238, 255};
|
204, 221, 238, 255
|
||||||
|
};
|
||||||
static const uint8_t bpp8_opa_table[256] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
static const uint8_t bpp8_opa_table[256] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||||||
@ -68,7 +69,8 @@ static const uint8_t bpp8_opa_table[256] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
|
|||||||
192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
|
192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
|
||||||
208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
|
208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
|
||||||
224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
|
224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
|
||||||
240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255};
|
240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255
|
||||||
|
};
|
||||||
/*clang-format on*/
|
/*clang-format on*/
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
@ -518,42 +520,42 @@ static void draw_letter_normal(lv_coord_t pos_x, lv_coord_t pos_y, lv_font_glyph
|
|||||||
uint8_t other_mask_cnt = lv_draw_mask_get_cnt();
|
uint8_t other_mask_cnt = lv_draw_mask_get_cnt();
|
||||||
|
|
||||||
uint32_t col_bit_max = 8 - bpp;
|
uint32_t col_bit_max = 8 - bpp;
|
||||||
uint32_t col_bit_row_ofs = (box_w + col_start- col_end) * bpp;
|
uint32_t col_bit_row_ofs = (box_w + col_start - col_end) * bpp;
|
||||||
|
|
||||||
for(row = row_start ; row < row_end; row++) {
|
for(row = row_start ; row < row_end; row++) {
|
||||||
int32_t mask_p_start = mask_p;
|
int32_t mask_p_start = mask_p;
|
||||||
|
|
||||||
bitmask = bitmask_init >> col_bit;
|
bitmask = bitmask_init >> col_bit;
|
||||||
for(col = col_start; col < col_end; col++) {
|
for(col = col_start; col < col_end; col++) {
|
||||||
/*Load the pixel's opacity into the mask*/
|
/*Load the pixel's opacity into the mask*/
|
||||||
letter_px = (*map_p & bitmask) >> (col_bit_max - col_bit);
|
letter_px = (*map_p & bitmask) >> (col_bit_max - col_bit);
|
||||||
if(letter_px) {
|
if(letter_px) {
|
||||||
mask_buf[mask_p] = bpp_opa_table_p[letter_px];
|
mask_buf[mask_p] = bpp_opa_table_p[letter_px];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
mask_buf[mask_p] = 0;
|
mask_buf[mask_p] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*Go to the next column*/
|
/*Go to the next column*/
|
||||||
if(col_bit < col_bit_max) {
|
if(col_bit < col_bit_max) {
|
||||||
col_bit += bpp;
|
col_bit += bpp;
|
||||||
bitmask = bitmask >> bpp;
|
bitmask = bitmask >> bpp;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
col_bit = 0;
|
col_bit = 0;
|
||||||
bitmask = bitmask_init;
|
bitmask = bitmask_init;
|
||||||
map_p++;
|
map_p++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*Next mask byte*/
|
/*Next mask byte*/
|
||||||
mask_p++;
|
mask_p++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*Apply masks if any*/
|
/*Apply masks if any*/
|
||||||
if(other_mask_cnt) {
|
if(other_mask_cnt) {
|
||||||
lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, fill_area.x1, fill_area.y2,
|
lv_draw_mask_res_t mask_res = lv_draw_mask_apply(mask_buf + mask_p_start, fill_area.x1, fill_area.y2,
|
||||||
lv_area_get_width(&fill_area));
|
lv_area_get_width(&fill_area));
|
||||||
if(mask_res == LV_DRAW_MASK_RES_FULL_TRANSP) {
|
if(mask_res == LV_DRAW_MASK_RES_FULL_TRANSP) {
|
||||||
lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&fill_area));
|
lv_memset_00(mask_buf + mask_p_start, lv_area_get_width(&fill_area));
|
||||||
}
|
}
|
||||||
@ -564,8 +566,8 @@ static void draw_letter_normal(lv_coord_t pos_x, lv_coord_t pos_y, lv_font_glyph
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lv_blend_fill(clip_area, &fill_area,
|
lv_blend_fill(clip_area, &fill_area,
|
||||||
color, mask_buf, LV_DRAW_MASK_RES_CHANGED, LV_OPA_COVER,
|
color, mask_buf, LV_DRAW_MASK_RES_CHANGED, LV_OPA_COVER,
|
||||||
LV_BLEND_MODE_NORMAL);
|
LV_BLEND_MODE_NORMAL);
|
||||||
|
|
||||||
fill_area.y1 = fill_area.y2 + 1;
|
fill_area.y1 = fill_area.y2 + 1;
|
||||||
fill_area.y2 = fill_area.y1;
|
fill_area.y2 = fill_area.y1;
|
||||||
|
@ -651,7 +651,7 @@ static lv_draw_mask_res_t line_mask_steep(lv_opa_t * mask_buf, lv_coord_t abs_x,
|
|||||||
if(k >= len) {
|
if(k >= len) {
|
||||||
return LV_DRAW_MASK_RES_FULL_TRANSP;
|
return LV_DRAW_MASK_RES_FULL_TRANSP;
|
||||||
}
|
}
|
||||||
if(k >= 0) lv_memset_00(&mask_buf[0],k);
|
if(k >= 0) lv_memset_00(&mask_buf[0], k);
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -979,7 +979,7 @@ static lv_draw_mask_res_t lv_draw_mask_radius(lv_opa_t * mask_buf, lv_coord_t ab
|
|||||||
return LV_DRAW_MASK_RES_FULL_TRANSP;
|
return LV_DRAW_MASK_RES_FULL_TRANSP;
|
||||||
}
|
}
|
||||||
if(kr <= len) {
|
if(kr <= len) {
|
||||||
lv_memset_00(&mask_buf[kr],len - kr);
|
lv_memset_00(&mask_buf[kr], len - kr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
*********************/
|
*********************/
|
||||||
#define SHADOW_UPSACALE_SHIFT 6
|
#define SHADOW_UPSACALE_SHIFT 6
|
||||||
#define SHADOW_ENHANCE 1
|
#define SHADOW_ENHANCE 1
|
||||||
#define SPLIT_LIMIT 50
|
#define SPLIT_LIMIT 50
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* TYPEDEFS
|
* TYPEDEFS
|
||||||
|
@ -379,15 +379,26 @@ static inline void decompress_line(uint8_t * out, lv_coord_t w)
|
|||||||
*/
|
*/
|
||||||
static inline uint8_t get_bits(const uint8_t * in, uint32_t bit_pos, uint8_t len)
|
static inline uint8_t get_bits(const uint8_t * in, uint32_t bit_pos, uint8_t len)
|
||||||
{
|
{
|
||||||
uint8_t bit_mask;
|
uint8_t bit_mask;
|
||||||
switch(len) {
|
switch(len) {
|
||||||
case 1: bit_mask = 0x1; break;
|
case 1:
|
||||||
case 2: bit_mask = 0x3; break;
|
bit_mask = 0x1;
|
||||||
case 3: bit_mask = 0x7; break;
|
break;
|
||||||
case 4: bit_mask = 0xF; break;
|
case 2:
|
||||||
case 8: bit_mask = 0xFF; break;
|
bit_mask = 0x3;
|
||||||
default: bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
|
break;
|
||||||
}
|
case 3:
|
||||||
|
bit_mask = 0x7;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
bit_mask = 0xF;
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
bit_mask = 0xFF;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
bit_mask = (uint16_t)((uint16_t) 1 << len) - 1;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t byte_pos = bit_pos >> 3;
|
uint32_t byte_pos = bit_pos >> 3;
|
||||||
bit_pos = bit_pos & 0x7;
|
bit_pos = bit_pos & 0x7;
|
||||||
|
@ -447,14 +447,14 @@ static inline lv_color_t lv_color_mix(lv_color_t c1, lv_color_t c2, uint8_t mix)
|
|||||||
static inline void lv_color_premult(lv_color_t c, uint8_t mix, uint16_t * out)
|
static inline void lv_color_premult(lv_color_t c, uint8_t mix, uint16_t * out)
|
||||||
{
|
{
|
||||||
#if LV_COLOR_DEPTH != 1
|
#if LV_COLOR_DEPTH != 1
|
||||||
out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix;
|
out[0] = (uint16_t) LV_COLOR_GET_R(c) * mix;
|
||||||
out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix;
|
out[1] = (uint16_t) LV_COLOR_GET_G(c) * mix;
|
||||||
out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix;
|
out[2] = (uint16_t) LV_COLOR_GET_B(c) * mix;
|
||||||
#else
|
#else
|
||||||
/*Pre-multiplication can't be used with 1 bpp*/
|
/*Pre-multiplication can't be used with 1 bpp*/
|
||||||
out[0] = LV_COLOR_GET_R(c);
|
out[0] = LV_COLOR_GET_R(c);
|
||||||
out[1] = LV_COLOR_GET_G(c);
|
out[1] = LV_COLOR_GET_G(c);
|
||||||
out[2] = LV_COLOR_GET_B(c);
|
out[2] = LV_COLOR_GET_B(c);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -468,7 +468,7 @@ static inline void lv_color_premult(lv_color_t c, uint8_t mix, uint16_t * out)
|
|||||||
* @return the mixed color
|
* @return the mixed color
|
||||||
* @note 255 won't give clearly `c1`.
|
* @note 255 won't give clearly `c1`.
|
||||||
*/
|
*/
|
||||||
static inline lv_color_t lv_color_mix_premult(uint16_t * premult_c1 , lv_color_t c2, uint8_t mix)
|
static inline lv_color_t lv_color_mix_premult(uint16_t * premult_c1, lv_color_t c2, uint8_t mix)
|
||||||
{
|
{
|
||||||
lv_color_t ret;
|
lv_color_t ret;
|
||||||
#if LV_COLOR_DEPTH != 1
|
#if LV_COLOR_DEPTH != 1
|
||||||
|
@ -85,7 +85,7 @@ void lv_log_add(lv_log_level_t level, const char * file, int line, const char *
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const char * lvl_prefix[] = {"Trace", "Info", "Warn", "Error", "User"};
|
static const char * lvl_prefix[] = {"Trace", "Info", "Warn", "Error", "User"};
|
||||||
printf("%s: %s \t(%s #%d %s())\n", lvl_prefix[level], buf, &file[p], line ,func);
|
printf("%s: %s \t(%s #%d %s())\n", lvl_prefix[level], buf, &file[p], line, func);
|
||||||
#else
|
#else
|
||||||
if(custom_print_cb) custom_print_cb(level, file, line, func, buf);
|
if(custom_print_cb) custom_print_cb(level, file, line, func, buf);
|
||||||
#endif
|
#endif
|
||||||
|
@ -57,9 +57,9 @@ typedef struct {
|
|||||||
#endif /* LV_ENABLE_GC */
|
#endif /* LV_ENABLE_GC */
|
||||||
|
|
||||||
#ifdef LV_ARCH_64
|
#ifdef LV_ARCH_64
|
||||||
#define ALIGN_MASK 0x7
|
#define ALIGN_MASK 0x7
|
||||||
#else
|
#else
|
||||||
#define ALIGN_MASK 0x3
|
#define ALIGN_MASK 0x3
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
@ -519,59 +519,59 @@ void lv_mem_buf_free_all(void)
|
|||||||
*/
|
*/
|
||||||
void * lv_memcpy(void * dst, const void * src, size_t len)
|
void * lv_memcpy(void * dst, const void * src, size_t len)
|
||||||
{
|
{
|
||||||
uint8_t * d8 = dst;
|
uint8_t * d8 = dst;
|
||||||
const uint8_t * s8 = src;
|
const uint8_t * s8 = src;
|
||||||
|
|
||||||
lv_uintptr_t d_align = (lv_uintptr_t)d8 & ALIGN_MASK;
|
lv_uintptr_t d_align = (lv_uintptr_t)d8 & ALIGN_MASK;
|
||||||
lv_uintptr_t s_align = (lv_uintptr_t)s8 & ALIGN_MASK;
|
lv_uintptr_t s_align = (lv_uintptr_t)s8 & ALIGN_MASK;
|
||||||
|
|
||||||
/*Byte copy for unaligned memories*/
|
/*Byte copy for unaligned memories*/
|
||||||
if(s_align != d_align) {
|
if(s_align != d_align) {
|
||||||
while(len > 32) {
|
while(len > 32) {
|
||||||
REPEAT8(COPY8);
|
|
||||||
REPEAT8(COPY8);
|
REPEAT8(COPY8);
|
||||||
REPEAT8(COPY8);
|
REPEAT8(COPY8);
|
||||||
REPEAT8(COPY8);
|
REPEAT8(COPY8);
|
||||||
len -= 32;
|
REPEAT8(COPY8);
|
||||||
}
|
len -= 32;
|
||||||
while(len) {
|
}
|
||||||
COPY8
|
while(len) {
|
||||||
len--;
|
COPY8
|
||||||
}
|
len--;
|
||||||
return dst;
|
}
|
||||||
}
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*Make the memories aligned*/
|
/*Make the memories aligned*/
|
||||||
if(d_align) {
|
if(d_align) {
|
||||||
d_align = ALIGN_MASK + 1 - d_align;
|
d_align = ALIGN_MASK + 1 - d_align;
|
||||||
while(d_align && len) {
|
while(d_align && len) {
|
||||||
COPY8;
|
COPY8;
|
||||||
d_align--;
|
d_align--;
|
||||||
len--;
|
len--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t * d32 = (uint32_t*)d8;
|
uint32_t * d32 = (uint32_t *)d8;
|
||||||
const uint32_t * s32 = (uint32_t*)s8;
|
const uint32_t * s32 = (uint32_t *)s8;
|
||||||
while(len > 32) {
|
while(len > 32) {
|
||||||
REPEAT8(COPY32)
|
REPEAT8(COPY32)
|
||||||
len -= 32;
|
len -= 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
while(len > 4) {
|
while(len > 4) {
|
||||||
COPY32;
|
COPY32;
|
||||||
len -= 4;
|
len -= 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
d8 = (uint8_t *)d32;
|
d8 = (uint8_t *)d32;
|
||||||
s8 = (const uint8_t *)s32;
|
s8 = (const uint8_t *)s32;
|
||||||
while(len) {
|
while(len) {
|
||||||
COPY8
|
COPY8
|
||||||
len--;
|
len--;
|
||||||
}
|
}
|
||||||
|
|
||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -585,11 +585,11 @@ void * lv_memcpy(void * dst, const void * src, size_t len)
|
|||||||
void lv_memset(void * dst, uint8_t v, size_t len)
|
void lv_memset(void * dst, uint8_t v, size_t len)
|
||||||
{
|
{
|
||||||
|
|
||||||
uint8_t * d8 = (uint8_t *) dst;
|
uint8_t * d8 = (uint8_t *) dst;
|
||||||
|
|
||||||
uintptr_t d_align = (lv_uintptr_t) d8 & ALIGN_MASK;
|
uintptr_t d_align = (lv_uintptr_t) d8 & ALIGN_MASK;
|
||||||
|
|
||||||
/*Make the address aligned*/
|
/*Make the address aligned*/
|
||||||
if(d_align) {
|
if(d_align) {
|
||||||
d_align = ALIGN_MASK + 1 - d_align;
|
d_align = ALIGN_MASK + 1 - d_align;
|
||||||
while(d_align && len) {
|
while(d_align && len) {
|
||||||
@ -600,34 +600,34 @@ void lv_memset(void * dst, uint8_t v, size_t len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t v32 = v + (v << 8) + (v << 16) + (v << 24);
|
uint32_t v32 = v + (v << 8) + (v << 16) + (v << 24);
|
||||||
|
|
||||||
uint32_t * d32 = (uint32_t*)d8;
|
uint32_t * d32 = (uint32_t *)d8;
|
||||||
|
|
||||||
while(len > 32) {
|
while(len > 32) {
|
||||||
SET32(v32);
|
SET32(v32);
|
||||||
SET32(v32);
|
SET32(v32);
|
||||||
SET32(v32);
|
SET32(v32);
|
||||||
SET32(v32);
|
SET32(v32);
|
||||||
SET32(v32);
|
SET32(v32);
|
||||||
SET32(v32);
|
SET32(v32);
|
||||||
SET32(v32);
|
SET32(v32);
|
||||||
SET32(v32);
|
SET32(v32);
|
||||||
len -= 32;
|
len -= 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
while(len > 4) {
|
while(len > 4) {
|
||||||
SET32(v32);
|
SET32(v32);
|
||||||
len -= 4;
|
len -= 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
d8 = (uint8_t *)d32;
|
d8 = (uint8_t *)d32;
|
||||||
while(len) {
|
while(len) {
|
||||||
*d8 = v;
|
*d8 = v;
|
||||||
d8++;
|
d8++;
|
||||||
len--;
|
len--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -638,7 +638,7 @@ void lv_memset(void * dst, uint8_t v, size_t len)
|
|||||||
*/
|
*/
|
||||||
void lv_memset_00(void * dst, size_t len)
|
void lv_memset_00(void * dst, size_t len)
|
||||||
{
|
{
|
||||||
uint8_t * d8 = (uint8_t*) dst;
|
uint8_t * d8 = (uint8_t *) dst;
|
||||||
uintptr_t d_align = (lv_uintptr_t) d8 & ALIGN_MASK;
|
uintptr_t d_align = (lv_uintptr_t) d8 & ALIGN_MASK;
|
||||||
|
|
||||||
|
|
||||||
@ -653,31 +653,31 @@ void lv_memset_00(void * dst, size_t len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t * d32 = (uint32_t*)d8;
|
uint32_t * d32 = (uint32_t *)d8;
|
||||||
while(len > 32) {
|
while(len > 32) {
|
||||||
SET32(0);
|
SET32(0);
|
||||||
SET32(0);
|
SET32(0);
|
||||||
SET32(0);
|
SET32(0);
|
||||||
SET32(0);
|
SET32(0);
|
||||||
SET32(0);
|
SET32(0);
|
||||||
SET32(0);
|
SET32(0);
|
||||||
SET32(0);
|
SET32(0);
|
||||||
SET32(0);
|
SET32(0);
|
||||||
len -= 32;
|
len -= 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
while(len > 4) {
|
while(len > 4) {
|
||||||
SET32(0);
|
SET32(0);
|
||||||
len -= 4;
|
len -= 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
d8 = (uint8_t *)d32;
|
d8 = (uint8_t *)d32;
|
||||||
while(len) {
|
while(len) {
|
||||||
*d8 = 0;
|
*d8 = 0;
|
||||||
d8++;
|
d8++;
|
||||||
len--;
|
len--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -688,7 +688,7 @@ void lv_memset_00(void * dst, size_t len)
|
|||||||
*/
|
*/
|
||||||
void lv_memset_ff(void * dst, size_t len)
|
void lv_memset_ff(void * dst, size_t len)
|
||||||
{
|
{
|
||||||
uint8_t * d8 = (uint8_t*) dst;
|
uint8_t * d8 = (uint8_t *) dst;
|
||||||
uintptr_t d_align = (lv_uintptr_t) d8 & ALIGN_MASK;
|
uintptr_t d_align = (lv_uintptr_t) d8 & ALIGN_MASK;
|
||||||
|
|
||||||
|
|
||||||
@ -703,31 +703,31 @@ void lv_memset_ff(void * dst, size_t len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t * d32 = (uint32_t*)d8;
|
uint32_t * d32 = (uint32_t *)d8;
|
||||||
while(len > 32) {
|
while(len > 32) {
|
||||||
SET32(0xFFFFFFFF);
|
SET32(0xFFFFFFFF);
|
||||||
SET32(0xFFFFFFFF);
|
SET32(0xFFFFFFFF);
|
||||||
SET32(0xFFFFFFFF);
|
SET32(0xFFFFFFFF);
|
||||||
SET32(0xFFFFFFFF);
|
SET32(0xFFFFFFFF);
|
||||||
SET32(0xFFFFFFFF);
|
SET32(0xFFFFFFFF);
|
||||||
SET32(0xFFFFFFFF);
|
SET32(0xFFFFFFFF);
|
||||||
SET32(0xFFFFFFFF);
|
SET32(0xFFFFFFFF);
|
||||||
SET32(0xFFFFFFFF);
|
SET32(0xFFFFFFFF);
|
||||||
len -= 32;
|
len -= 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
while(len > 4) {
|
while(len > 4) {
|
||||||
SET32(0xFFFFFFFF);
|
SET32(0xFFFFFFFF);
|
||||||
len -= 4;
|
len -= 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
d8 = (uint8_t *)d32;
|
d8 = (uint8_t *)d32;
|
||||||
while(len) {
|
while(len) {
|
||||||
*d8 = 0xFF;
|
*d8 = 0xFF;
|
||||||
d8++;
|
d8++;
|
||||||
len--;
|
len--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -760,7 +760,8 @@ static void tabview_init(void)
|
|||||||
lv_style_init(&tabview_btns_bg);
|
lv_style_init(&tabview_btns_bg);
|
||||||
lv_style_set_bg_opa(&tabview_btns_bg, LV_STATE_DEFAULT, LV_OPA_COVER);
|
lv_style_set_bg_opa(&tabview_btns_bg, LV_STATE_DEFAULT, LV_OPA_COVER);
|
||||||
lv_style_set_bg_color(&tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG);
|
lv_style_set_bg_color(&tabview_btns_bg, LV_STATE_DEFAULT, COLOR_BG);
|
||||||
lv_style_set_border_color(&tabview_btns_bg, LV_STATE_DEFAULT, IS_LIGHT ? lv_color_hex(0xe4eaf0) : lv_color_hex(0x3b3e42));
|
lv_style_set_border_color(&tabview_btns_bg, LV_STATE_DEFAULT,
|
||||||
|
IS_LIGHT ? lv_color_hex(0xe4eaf0) : lv_color_hex(0x3b3e42));
|
||||||
lv_style_set_border_width(&tabview_btns_bg, LV_STATE_DEFAULT, LV_DPI / 30 > 0 ? LV_DPI / 30 : 1);
|
lv_style_set_border_width(&tabview_btns_bg, LV_STATE_DEFAULT, LV_DPI / 30 > 0 ? LV_DPI / 30 : 1);
|
||||||
lv_style_set_border_side(&tabview_btns_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM);
|
lv_style_set_border_side(&tabview_btns_bg, LV_STATE_DEFAULT, LV_BORDER_SIDE_BOTTOM);
|
||||||
lv_style_set_text_color(&tabview_btns_bg, LV_STATE_DEFAULT, COLOR_SCR_TEXT);
|
lv_style_set_text_color(&tabview_btns_bg, LV_STATE_DEFAULT, COLOR_SCR_TEXT);
|
||||||
|
@ -28,7 +28,7 @@ extern "C" {
|
|||||||
typedef enum {
|
typedef enum {
|
||||||
LV_THEME_MATERIAL_PALETTE_LIGHT,
|
LV_THEME_MATERIAL_PALETTE_LIGHT,
|
||||||
LV_THEME_MATERIAL_PALETTE_DARK,
|
LV_THEME_MATERIAL_PALETTE_DARK,
|
||||||
}lv_theme_material_palette_t;
|
} lv_theme_material_palette_t;
|
||||||
|
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
|
@ -382,7 +382,8 @@ static lv_design_res_t lv_arc_design(lv_obj_t * arc, const lv_area_t * clip_area
|
|||||||
lv_coord_t right_bg = lv_obj_get_style_pad_right(arc, LV_ARC_PART_BG);
|
lv_coord_t right_bg = lv_obj_get_style_pad_right(arc, LV_ARC_PART_BG);
|
||||||
lv_coord_t top_bg = lv_obj_get_style_pad_top(arc, LV_ARC_PART_BG);
|
lv_coord_t top_bg = lv_obj_get_style_pad_top(arc, LV_ARC_PART_BG);
|
||||||
lv_coord_t bottom_bg = lv_obj_get_style_pad_bottom(arc, LV_ARC_PART_BG);
|
lv_coord_t bottom_bg = lv_obj_get_style_pad_bottom(arc, LV_ARC_PART_BG);
|
||||||
lv_coord_t r = (LV_MATH_MIN(lv_obj_get_width(arc) - left_bg - right_bg, lv_obj_get_height(arc) - top_bg - bottom_bg)) / 2;
|
lv_coord_t r = (LV_MATH_MIN(lv_obj_get_width(arc) - left_bg - right_bg,
|
||||||
|
lv_obj_get_height(arc) - top_bg - bottom_bg)) / 2;
|
||||||
lv_coord_t x = arc->coords.x1 + r + left_bg;
|
lv_coord_t x = arc->coords.x1 + r + left_bg;
|
||||||
lv_coord_t y = arc->coords.y1 + r + top_bg;
|
lv_coord_t y = arc->coords.y1 + r + top_bg;
|
||||||
|
|
||||||
@ -400,7 +401,7 @@ static lv_design_res_t lv_arc_design(lv_obj_t * arc, const lv_area_t * clip_area
|
|||||||
lv_coord_t right_indic = lv_obj_get_style_pad_right(arc, LV_ARC_PART_INDIC);
|
lv_coord_t right_indic = lv_obj_get_style_pad_right(arc, LV_ARC_PART_INDIC);
|
||||||
lv_coord_t top_indic = lv_obj_get_style_pad_top(arc, LV_ARC_PART_INDIC);
|
lv_coord_t top_indic = lv_obj_get_style_pad_top(arc, LV_ARC_PART_INDIC);
|
||||||
lv_coord_t bottom_indic = lv_obj_get_style_pad_bottom(arc, LV_ARC_PART_INDIC);
|
lv_coord_t bottom_indic = lv_obj_get_style_pad_bottom(arc, LV_ARC_PART_INDIC);
|
||||||
r-= LV_MATH_MAX4(left_indic, right_indic, top_indic, bottom_indic);
|
r -= LV_MATH_MAX4(left_indic, right_indic, top_indic, bottom_indic);
|
||||||
|
|
||||||
lv_draw_arc(x, y, r, ext->arc_angle_start, ext->arc_angle_end, clip_area, &arc_dsc);
|
lv_draw_arc(x, y, r, ext->arc_angle_start, ext->arc_angle_end, clip_area, &arc_dsc);
|
||||||
}
|
}
|
||||||
|
@ -485,8 +485,9 @@ static void draw_indic(lv_obj_t * bar, const lv_area_t * clip_area)
|
|||||||
lv_coord_t anim_cur_value_end_x =
|
lv_coord_t anim_cur_value_end_x =
|
||||||
(int32_t)((int32_t)anim_length * (ext->cur_value_anim.anim_end - ext->min_value)) / range;
|
(int32_t)((int32_t)anim_length * (ext->cur_value_anim.anim_end - ext->min_value)) / range;
|
||||||
|
|
||||||
anim_cur_value_x = anim_cur_value_start_x + (((anim_cur_value_end_x - anim_cur_value_start_x) * ext->cur_value_anim.anim_state) /
|
anim_cur_value_x = anim_cur_value_start_x + (((anim_cur_value_end_x - anim_cur_value_start_x) *
|
||||||
LV_BAR_ANIM_STATE_END);
|
ext->cur_value_anim.anim_state) /
|
||||||
|
LV_BAR_ANIM_STATE_END);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
@ -233,7 +233,8 @@ void lv_btnmatrix_set_map(lv_obj_t * btnm, const char * map[])
|
|||||||
/* Set the button's area.
|
/* Set the button's area.
|
||||||
* If inner padding is zero then use the prev. button x2 as x1 to avoid rounding
|
* If inner padding is zero then use the prev. button x2 as x1 to avoid rounding
|
||||||
* errors*/
|
* errors*/
|
||||||
if(btn_i != 0 && inner == 0 && ((act_x == left && base_dir != LV_BIDI_DIR_RTL) || (act_x + act_unit_w == max_w - right && base_dir == LV_BIDI_DIR_RTL))) {
|
if(btn_i != 0 && inner == 0 && ((act_x == left && base_dir != LV_BIDI_DIR_RTL) ||
|
||||||
|
(act_x + act_unit_w == max_w - right && base_dir == LV_BIDI_DIR_RTL))) {
|
||||||
lv_area_set(&ext->button_areas[btn_i], ext->button_areas[btn_i - 1].x2, act_y, act_x + act_unit_w,
|
lv_area_set(&ext->button_areas[btn_i], ext->button_areas[btn_i - 1].x2, act_y, act_x + act_unit_w,
|
||||||
act_y + btn_h);
|
act_y + btn_h);
|
||||||
}
|
}
|
||||||
|
@ -136,8 +136,8 @@ lv_obj_t * lv_dropdown_create(lv_obj_t * par, const lv_obj_t * copy)
|
|||||||
lv_dropdown_ext_t * copy_ext = lv_obj_get_ext_attr(copy);
|
lv_dropdown_ext_t * copy_ext = lv_obj_get_ext_attr(copy);
|
||||||
if(copy_ext->static_txt == 0)
|
if(copy_ext->static_txt == 0)
|
||||||
lv_dropdown_set_options(ddlist, lv_dropdown_get_options(copy));
|
lv_dropdown_set_options(ddlist, lv_dropdown_get_options(copy));
|
||||||
else
|
else
|
||||||
lv_dropdown_set_static_options(ddlist, lv_dropdown_get_options(copy));
|
lv_dropdown_set_static_options(ddlist, lv_dropdown_get_options(copy));
|
||||||
ext->option_cnt = copy_ext->option_cnt;
|
ext->option_cnt = copy_ext->option_cnt;
|
||||||
ext->sel_opt_id = copy_ext->sel_opt_id;
|
ext->sel_opt_id = copy_ext->sel_opt_id;
|
||||||
ext->sel_opt_id_orig = copy_ext->sel_opt_id;
|
ext->sel_opt_id_orig = copy_ext->sel_opt_id;
|
||||||
@ -219,7 +219,7 @@ void lv_dropdown_set_options(lv_obj_t * ddlist, const char * options)
|
|||||||
ext->option_cnt++; /*Last option has no `\n`*/
|
ext->option_cnt++; /*Last option has no `\n`*/
|
||||||
ext->sel_opt_id = 0;
|
ext->sel_opt_id = 0;
|
||||||
ext->sel_opt_id_orig = 0;
|
ext->sel_opt_id_orig = 0;
|
||||||
|
|
||||||
/*Allocate space for the new text*/
|
/*Allocate space for the new text*/
|
||||||
size_t len = strlen(options) + 1;
|
size_t len = strlen(options) + 1;
|
||||||
if(ext->options != NULL && ext->static_txt == 0) {
|
if(ext->options != NULL && ext->static_txt == 0) {
|
||||||
@ -297,11 +297,11 @@ void lv_dropdown_add_option(lv_obj_t * ddlist, const char * option, uint16_t pos
|
|||||||
|
|
||||||
/*Allocate space for the new option*/
|
/*Allocate space for the new option*/
|
||||||
size_t old_len = (ext->options == NULL) ? 0 : strlen(ext->options);
|
size_t old_len = (ext->options == NULL) ? 0 : strlen(ext->options);
|
||||||
size_t ins_len = strlen(option);
|
size_t ins_len = strlen(option);
|
||||||
size_t new_len = ins_len + old_len + 2; /* +2 for terminating NULL and possible \n */
|
size_t new_len = ins_len + old_len + 2; /* +2 for terminating NULL and possible \n */
|
||||||
ext->options = lv_mem_realloc(ext->options, new_len + 1);
|
ext->options = lv_mem_realloc(ext->options, new_len + 1);
|
||||||
LV_ASSERT_MEM(ext->options);
|
LV_ASSERT_MEM(ext->options);
|
||||||
if(ext->options == NULL) return;
|
if(ext->options == NULL) return;
|
||||||
|
|
||||||
ext->options[old_len] = 0;
|
ext->options[old_len] = 0;
|
||||||
|
|
||||||
@ -325,7 +325,7 @@ void lv_dropdown_add_option(lv_obj_t * ddlist, const char * option, uint16_t pos
|
|||||||
char * ins_buf = lv_mem_buf_get(ins_len + 2); /* + 2 for terminating NULL and possible \n */
|
char * ins_buf = lv_mem_buf_get(ins_len + 2); /* + 2 for terminating NULL and possible \n */
|
||||||
LV_ASSERT_MEM(ins_buf);
|
LV_ASSERT_MEM(ins_buf);
|
||||||
if(ins_buf == NULL) return;
|
if(ins_buf == NULL) return;
|
||||||
strcpy(ins_buf, option);
|
strcpy(ins_buf, option);
|
||||||
if(pos < ext->option_cnt)
|
if(pos < ext->option_cnt)
|
||||||
strcat(ins_buf, "\n");
|
strcat(ins_buf, "\n");
|
||||||
lv_txt_ins(ext->options, insert_pos, ins_buf);
|
lv_txt_ins(ext->options, insert_pos, ins_buf);
|
||||||
@ -592,13 +592,13 @@ bool lv_dropdown_get_show_selected(lv_obj_t * ddlist)
|
|||||||
* @param ddlist pointer to a drop down list
|
* @param ddlist pointer to a drop down list
|
||||||
* @return open/close animation time [ms]
|
* @return open/close animation time [ms]
|
||||||
*/
|
*/
|
||||||
uint16_t lv_dropdown_get_anim_time(const lv_obj_t * ddlist)
|
uint16_t lv_dropdown_get_anim_time(const lv_obj_t * ddlist)
|
||||||
{
|
{
|
||||||
LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);
|
LV_ASSERT_OBJ(ddlist, LV_OBJX_NAME);
|
||||||
|
|
||||||
lv_dropdown_ext_t * ext = lv_obj_get_ext_attr(ddlist);
|
lv_dropdown_ext_t * ext = lv_obj_get_ext_attr(ddlist);
|
||||||
|
|
||||||
return ext->anim_time;
|
return ext->anim_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*=====================
|
/*=====================
|
||||||
@ -937,7 +937,7 @@ static lv_res_t lv_dropdown_signal(lv_obj_t * ddlist, lv_signal_t sign, void * p
|
|||||||
lv_mem_free(ext->options);
|
lv_mem_free(ext->options);
|
||||||
ext->options = NULL;
|
ext->options = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*`lv_obj_clean_style_list` is not required because these styles are only copied to the page
|
/*`lv_obj_clean_style_list` is not required because these styles are only copied to the page
|
||||||
* so they can have transitions or other object related things. */
|
* so they can have transitions or other object related things. */
|
||||||
lv_style_list_reset(&ext->style_page);
|
lv_style_list_reset(&ext->style_page);
|
||||||
|
@ -33,7 +33,7 @@ extern "C" {
|
|||||||
* DEFINES
|
* DEFINES
|
||||||
*********************/
|
*********************/
|
||||||
#define LV_DROPDOWN_POS_LAST 0xFFFF
|
#define LV_DROPDOWN_POS_LAST 0xFFFF
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* TYPEDEFS
|
* TYPEDEFS
|
||||||
**********************/
|
**********************/
|
||||||
@ -127,7 +127,7 @@ void lv_dropdown_set_static_options(lv_obj_t * ddlist, const char * options);
|
|||||||
* @param pos the insert position, indexed from 0, LV_DROPDOWN_POS_LAST = end of string
|
* @param pos the insert position, indexed from 0, LV_DROPDOWN_POS_LAST = end of string
|
||||||
*/
|
*/
|
||||||
void lv_dropdown_add_option(lv_obj_t * ddlist, const char * option, uint16_t pos);
|
void lv_dropdown_add_option(lv_obj_t * ddlist, const char * option, uint16_t pos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the selected option
|
* Set the selected option
|
||||||
* @param ddlist pointer to drop down list object
|
* @param ddlist pointer to drop down list object
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @file lv_gauge.c
|
* @file lv_gauge.c
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*********************
|
/*********************
|
||||||
* INCLUDES
|
* INCLUDES
|
||||||
|
@ -146,7 +146,7 @@ void lv_imgbtn_set_src(lv_obj_t * imgbtn, lv_btn_state_t state, const void * src
|
|||||||
* to a file)
|
* to a file)
|
||||||
*/
|
*/
|
||||||
void lv_imgbtn_set_src_tiled(lv_obj_t * imgbtn, lv_btn_state_t state, const void * src_left, const void * src_mid,
|
void lv_imgbtn_set_src_tiled(lv_obj_t * imgbtn, lv_btn_state_t state, const void * src_left, const void * src_mid,
|
||||||
const void * src_right)
|
const void * src_right)
|
||||||
{
|
{
|
||||||
LV_ASSERT_OBJ(imgbtn, LV_OBJX_NAME);
|
LV_ASSERT_OBJ(imgbtn, LV_OBJX_NAME);
|
||||||
|
|
||||||
@ -293,7 +293,8 @@ static lv_design_res_t lv_imgbtn_design(lv_obj_t * imgbtn, const lv_area_t * cli
|
|||||||
lv_obj_init_draw_img_dsc(imgbtn, LV_IMGBTN_PART_MAIN, &img_dsc);
|
lv_obj_init_draw_img_dsc(imgbtn, LV_IMGBTN_PART_MAIN, &img_dsc);
|
||||||
lv_draw_img(&imgbtn->coords, clip_area, src, &img_dsc);
|
lv_draw_img(&imgbtn->coords, clip_area, src, &img_dsc);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
#if LV_IMGBTN_TILED
|
#if LV_IMGBTN_TILED
|
||||||
const void * src = ext->img_src_left[state];
|
const void * src = ext->img_src_left[state];
|
||||||
if(lv_img_src_get_type(src) == LV_IMG_SRC_SYMBOL) {
|
if(lv_img_src_get_type(src) == LV_IMG_SRC_SYMBOL) {
|
||||||
|
@ -43,7 +43,7 @@ typedef struct {
|
|||||||
const void * img_src_right[_LV_BTN_STATE_LAST]; /*Store right side images to each state*/
|
const void * img_src_right[_LV_BTN_STATE_LAST]; /*Store right side images to each state*/
|
||||||
#endif
|
#endif
|
||||||
lv_img_cf_t act_cf; /*Color format of the currently active image*/
|
lv_img_cf_t act_cf; /*Color format of the currently active image*/
|
||||||
uint8_t tiled :1; /*1: the middle src will be repeated to fill the user defined width*/
|
uint8_t tiled : 1; /*1: the middle src will be repeated to fill the user defined width*/
|
||||||
} lv_imgbtn_ext_t;
|
} lv_imgbtn_ext_t;
|
||||||
|
|
||||||
/*Parts of the image button*/
|
/*Parts of the image button*/
|
||||||
@ -94,7 +94,7 @@ void lv_imgbtn_set_src(lv_obj_t * imgbtn, lv_btn_state_t state, const void * src
|
|||||||
* to a file)
|
* to a file)
|
||||||
*/
|
*/
|
||||||
void lv_imgbtn_set_src_tiled(lv_obj_t * imgbtn, lv_btn_state_t state, const void * src_left, const void * src_mid,
|
void lv_imgbtn_set_src_tiled(lv_obj_t * imgbtn, lv_btn_state_t state, const void * src_left, const void * src_mid,
|
||||||
const void * src_right);
|
const void * src_right);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -298,17 +298,17 @@ void lv_linemeter_draw_scale(lv_obj_t * lmeter, const lv_area_t * clip_area, uin
|
|||||||
|
|
||||||
lv_area_t mask_area;
|
lv_area_t mask_area;
|
||||||
mask_area.x1 = x_ofs - r_in;
|
mask_area.x1 = x_ofs - r_in;
|
||||||
mask_area.x2 = x_ofs + r_in-1;
|
mask_area.x2 = x_ofs + r_in - 1;
|
||||||
mask_area.y1 = y_ofs - r_in;
|
mask_area.y1 = y_ofs - r_in;
|
||||||
mask_area.y2 = y_ofs + r_in-1;
|
mask_area.y2 = y_ofs + r_in - 1;
|
||||||
lv_draw_mask_radius_param_t mask_in_param;
|
lv_draw_mask_radius_param_t mask_in_param;
|
||||||
lv_draw_mask_radius_init(&mask_in_param, &mask_area, LV_RADIUS_CIRCLE, true);
|
lv_draw_mask_radius_init(&mask_in_param, &mask_area, LV_RADIUS_CIRCLE, true);
|
||||||
int16_t mask_in_id = lv_draw_mask_add(&mask_in_param, 0);
|
int16_t mask_in_id = lv_draw_mask_add(&mask_in_param, 0);
|
||||||
|
|
||||||
mask_area.x1 = x_ofs - r_out;
|
mask_area.x1 = x_ofs - r_out;
|
||||||
mask_area.x2 = x_ofs + r_out-1;
|
mask_area.x2 = x_ofs + r_out - 1;
|
||||||
mask_area.y1 = y_ofs - r_out;
|
mask_area.y1 = y_ofs - r_out;
|
||||||
mask_area.y2 = y_ofs + r_out-1;
|
mask_area.y2 = y_ofs + r_out - 1;
|
||||||
lv_draw_mask_radius_param_t mask_out_param;
|
lv_draw_mask_radius_param_t mask_out_param;
|
||||||
lv_draw_mask_radius_init(&mask_out_param, &mask_area, LV_RADIUS_CIRCLE, false);
|
lv_draw_mask_radius_init(&mask_out_param, &mask_area, LV_RADIUS_CIRCLE, false);
|
||||||
int16_t mask_out_id = lv_draw_mask_add(&mask_out_param, 0);
|
int16_t mask_out_id = lv_draw_mask_add(&mask_out_param, 0);
|
||||||
@ -327,11 +327,11 @@ void lv_linemeter_draw_scale(lv_obj_t * lmeter, const lv_area_t * clip_area, uin
|
|||||||
/*Interpolate sine and cos*/
|
/*Interpolate sine and cos*/
|
||||||
int32_t sin_low = lv_trigo_sin(angle_low + angle_ofs);
|
int32_t sin_low = lv_trigo_sin(angle_low + angle_ofs);
|
||||||
int32_t sin_high = lv_trigo_sin(angle_high + angle_ofs);
|
int32_t sin_high = lv_trigo_sin(angle_high + angle_ofs);
|
||||||
int32_t sin_mid = (sin_low * (256 - angle_rem) + sin_high * angle_rem) >> 8;
|
int32_t sin_mid = (sin_low * (256 - angle_rem) + sin_high * angle_rem) >> 8;
|
||||||
|
|
||||||
int32_t cos_low = lv_trigo_sin(angle_low + 90 + angle_ofs);
|
int32_t cos_low = lv_trigo_sin(angle_low + 90 + angle_ofs);
|
||||||
int32_t cos_high = lv_trigo_sin(angle_high + 90 + angle_ofs);
|
int32_t cos_high = lv_trigo_sin(angle_high + 90 + angle_ofs);
|
||||||
int32_t cos_mid = (cos_low * (256 - angle_rem) + cos_high * angle_rem) >> 8;
|
int32_t cos_mid = (cos_low * (256 - angle_rem) + cos_high * angle_rem) >> 8;
|
||||||
|
|
||||||
/*Use the interpolated values to get x and y coordinates*/
|
/*Use the interpolated values to get x and y coordinates*/
|
||||||
int32_t y_out = (int32_t)((int32_t)sin_mid * r_out_extra) >> (LV_TRIGO_SHIFT - 8);
|
int32_t y_out = (int32_t)((int32_t)sin_mid * r_out_extra) >> (LV_TRIGO_SHIFT - 8);
|
||||||
|
@ -986,7 +986,8 @@ static lv_res_t lv_page_scrollable_signal(lv_obj_t * scrl, lv_signal_t sign, voi
|
|||||||
#if LV_USE_GROUP
|
#if LV_USE_GROUP
|
||||||
if(lv_obj_get_group(page)) {
|
if(lv_obj_get_group(page)) {
|
||||||
lv_group_focus_obj(page);
|
lv_group_focus_obj(page);
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
res = lv_signal_send(page, LV_SIGNAL_FOCUS, NULL);
|
res = lv_signal_send(page, LV_SIGNAL_FOCUS, NULL);
|
||||||
|
@ -764,7 +764,7 @@ static lv_res_t release_handler(lv_obj_t * roller)
|
|||||||
|
|
||||||
lv_obj_t * label = get_label(roller);
|
lv_obj_t * label = get_label(roller);
|
||||||
if(label == NULL) return LV_RES_OK;
|
if(label == NULL) return LV_RES_OK;
|
||||||
|
|
||||||
if(lv_indev_get_type(indev) == LV_INDEV_TYPE_POINTER || lv_indev_get_type(indev) == LV_INDEV_TYPE_BUTTON) {
|
if(lv_indev_get_type(indev) == LV_INDEV_TYPE_POINTER || lv_indev_get_type(indev) == LV_INDEV_TYPE_BUTTON) {
|
||||||
/*Search the clicked option (For KEYPAD and ENCODER the new value should be already set)*/
|
/*Search the clicked option (For KEYPAD and ENCODER the new value should be already set)*/
|
||||||
uint16_t new_opt = 0;
|
uint16_t new_opt = 0;
|
||||||
|
@ -273,10 +273,12 @@ static lv_res_t lv_slider_signal(lv_obj_t * slider, lv_signal_t sign, void * par
|
|||||||
|
|
||||||
lv_coord_t dist_left, dist_right;
|
lv_coord_t dist_left, dist_right;
|
||||||
if(hor) {
|
if(hor) {
|
||||||
if((base_dir != LV_BIDI_DIR_RTL && p.x > ext->right_knob_area.x2) || (base_dir == LV_BIDI_DIR_RTL && p.x < ext->right_knob_area.x1)) {
|
if((base_dir != LV_BIDI_DIR_RTL && p.x > ext->right_knob_area.x2) || (base_dir == LV_BIDI_DIR_RTL &&
|
||||||
|
p.x < ext->right_knob_area.x1)) {
|
||||||
ext->value_to_set = &ext->bar.cur_value;
|
ext->value_to_set = &ext->bar.cur_value;
|
||||||
}
|
}
|
||||||
else if((base_dir != LV_BIDI_DIR_RTL && p.x < ext->left_knob_area.x1) || (base_dir == LV_BIDI_DIR_RTL && p.x > ext->left_knob_area.x2)) {
|
else if((base_dir != LV_BIDI_DIR_RTL && p.x < ext->left_knob_area.x1) || (base_dir == LV_BIDI_DIR_RTL &&
|
||||||
|
p.x > ext->left_knob_area.x2)) {
|
||||||
ext->value_to_set = &ext->bar.start_value;
|
ext->value_to_set = &ext->bar.start_value;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -219,7 +219,8 @@ static lv_design_res_t lv_switch_design(lv_obj_t * sw, const lv_area_t * clip_ar
|
|||||||
if(base_dir != LV_BIDI_DIR_RTL) {
|
if(base_dir != LV_BIDI_DIR_RTL) {
|
||||||
knob_area.x1 = ext->bar.indic_area.x2 - ((act_indic_w * knob_size) / max_indic_w);
|
knob_area.x1 = ext->bar.indic_area.x2 - ((act_indic_w * knob_size) / max_indic_w);
|
||||||
knob_area.x2 = knob_area.x1 + knob_size;
|
knob_area.x2 = knob_area.x1 + knob_size;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
knob_area.x2 = ext->bar.indic_area.x1 + ((act_indic_w * knob_size) / max_indic_w);
|
knob_area.x2 = ext->bar.indic_area.x1 + ((act_indic_w * knob_size) / max_indic_w);
|
||||||
knob_area.x1 = knob_area.x2 - knob_size;
|
knob_area.x1 = knob_area.x2 - knob_size;
|
||||||
}
|
}
|
||||||
|
@ -350,7 +350,7 @@ void lv_table_set_cell_crop(lv_obj_t * table, uint16_t row, uint16_t col, bool c
|
|||||||
LV_ASSERT_OBJ(table, LV_OBJX_NAME);
|
LV_ASSERT_OBJ(table, LV_OBJX_NAME);
|
||||||
|
|
||||||
lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
|
lv_table_ext_t * ext = lv_obj_get_ext_attr(table);
|
||||||
if( col >= ext->col_cnt) {
|
if(col >= ext->col_cnt) {
|
||||||
LV_LOG_WARN("lv_table_set_cell_crop: invalid column");
|
LV_LOG_WARN("lv_table_set_cell_crop: invalid column");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user