mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
belnding fixes with transparent screen
This commit is contained in:
parent
ba1639848d
commit
c0c1ccec1d
@ -73,24 +73,14 @@ 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) \
|
||||
if(*mask_tmp_x) { \
|
||||
if(*mask_tmp_x != last_mask || last_dest_color.full != disp_buf_tmp[out_x].full) { \
|
||||
if(disp->driver.screen_transp) { \
|
||||
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); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
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 last_res_color = lv_color_mix(color, disp_buf_tmp[out_x], *mask_tmp_x); \
|
||||
last_mask = *mask_tmp_x; \
|
||||
last_dest_color.full = disp_buf_tmp[out_x].full; \
|
||||
} \
|
||||
} \
|
||||
disp_buf_tmp[out_x] = last_res_color; \
|
||||
} \
|
||||
mask_tmp_x++;
|
||||
if(*mask_tmp_x) { \
|
||||
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->driver.screen_transp) lv_color_mix_with_alpha(disp_buf_tmp[out_x], disp_buf_tmp[out_x].ch.alpha, \
|
||||
color, *mask_tmp_x, &disp_buf_tmp[out_x], &disp_buf_tmp[out_x].ch.alpha); \
|
||||
else disp_buf_tmp[out_x] = lv_color_mix(color, disp_buf_tmp[out_x], *mask_tmp_x); \
|
||||
} \
|
||||
mask_tmp_x++;
|
||||
|
||||
|
||||
/**********************
|
||||
@ -374,7 +364,11 @@ 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];
|
||||
#if 0
|
||||
for(x = draw_area->x1; x <= draw_area->x2; x++) {
|
||||
#if LV_COLOR_SCREEN_TRANSP
|
||||
FILL_NORMAL_MASK_PX_SCR_TRANSP(x, color)
|
||||
#else
|
||||
FILL_NORMAL_MASK_PX(x, color)
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
for(x = draw_area->x1; x <= draw_area->x2 && ((lv_uintptr_t)mask_tmp_x & 0x3); x++) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user