Lines Matching +full:- +full:m

26 #define circle_cache_mutex              LV_GLOBAL_DEFAULT()->draw_info.circle_cache_mutex
27 #define _circle_cache LV_GLOBAL_DEFAULT()->sw_circle_cache
102 res = dsc->cb(mask_buf, abs_x, abs_y, len, masks[i]); in lv_draw_sw_mask_apply()
114 if(pdsc->type == LV_DRAW_SW_MASK_TYPE_RADIUS) { in lv_draw_sw_mask_free_param()
116 if(radius_p->circle) { in lv_draw_sw_mask_free_param()
117 if(radius_p->circle->life < 0) { in lv_draw_sw_mask_free_param()
118 lv_free(radius_p->circle->cir_opa); in lv_draw_sw_mask_free_param()
119 lv_free(radius_p->circle); in lv_draw_sw_mask_free_param()
122 radius_p->circle->used_cnt--; in lv_draw_sw_mask_free_param()
148 p1y--; in lv_draw_sw_mask_line_points_init()
149 p2y--; in lv_draw_sw_mask_line_points_init()
163 lv_point_set(&param->cfg.p1, p1x, p1y); in lv_draw_sw_mask_line_points_init()
164 lv_point_set(&param->cfg.p2, p2x, p2y); in lv_draw_sw_mask_line_points_init()
165 param->cfg.side = side; in lv_draw_sw_mask_line_points_init()
167 lv_point_set(&param->origo, p1x, p1y); in lv_draw_sw_mask_line_points_init()
168 param->flat = (LV_ABS(p2x - p1x) > LV_ABS(p2y - p1y)) ? 1 : 0; in lv_draw_sw_mask_line_points_init()
169 param->yx_steep = 0; in lv_draw_sw_mask_line_points_init()
170 param->xy_steep = 0; in lv_draw_sw_mask_line_points_init()
171 param->dsc.cb = (lv_draw_sw_mask_xcb_t)lv_draw_mask_line; in lv_draw_sw_mask_line_points_init()
172 param->dsc.type = LV_DRAW_SW_MASK_TYPE_LINE; in lv_draw_sw_mask_line_points_init()
174 int32_t dx = p2x - p1x; in lv_draw_sw_mask_line_points_init()
175 int32_t dy = p2y - p1y; in lv_draw_sw_mask_line_points_init()
177 if(param->flat) { in lv_draw_sw_mask_line_points_init()
179 int32_t m; in lv_draw_sw_mask_line_points_init() local
182 m = (1L << 20) / dx; /*m is multiplier to normalize y (upscaled by 1024)*/ in lv_draw_sw_mask_line_points_init()
183 param->yx_steep = (m * dy) >> 10; in lv_draw_sw_mask_line_points_init()
187 m = (1L << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ in lv_draw_sw_mask_line_points_init()
188 param->xy_steep = (m * dx) >> 10; in lv_draw_sw_mask_line_points_init()
190 param->steep = param->yx_steep; in lv_draw_sw_mask_line_points_init()
194 int32_t m; in lv_draw_sw_mask_line_points_init() local
197 m = (1L << 20) / dy; /*m is multiplier to normalize x (upscaled by 1024)*/ in lv_draw_sw_mask_line_points_init()
198 param->xy_steep = (m * dx) >> 10; in lv_draw_sw_mask_line_points_init()
202 m = (1L << 20) / dx; /*m is multiplier to normalize x (upscaled by 1024)*/ in lv_draw_sw_mask_line_points_init()
203 param->yx_steep = (m * dy) >> 10; in lv_draw_sw_mask_line_points_init()
205 param->steep = param->xy_steep; in lv_draw_sw_mask_line_points_init()
208 if(param->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_LEFT) param->inv = 0; in lv_draw_sw_mask_line_points_init()
209 else if(param->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_RIGHT) param->inv = 1; in lv_draw_sw_mask_line_points_init()
210 else if(param->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_TOP) { in lv_draw_sw_mask_line_points_init()
211 if(param->steep > 0) param->inv = 1; in lv_draw_sw_mask_line_points_init()
212 else param->inv = 0; in lv_draw_sw_mask_line_points_init()
214 else if(param->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_BOTTOM) { in lv_draw_sw_mask_line_points_init()
215 if(param->steep > 0) param->inv = 0; in lv_draw_sw_mask_line_points_init()
216 else param->inv = 1; in lv_draw_sw_mask_line_points_init()
219 param->spx = param->steep >> 2; in lv_draw_sw_mask_line_points_init()
220 if(param->steep < 0) param->spx = -param->spx; in lv_draw_sw_mask_line_points_init()
230 if(angle > 180) angle -= 180; /*> 180 will swap the origo*/ in lv_draw_sw_mask_line_angle_init()
259 param->delta_deg = 360 - start_angle + end_angle; in lv_draw_sw_mask_angle_init()
262 param->delta_deg = LV_ABS(end_angle - start_angle); in lv_draw_sw_mask_angle_init()
265 param->cfg.start_angle = start_angle; in lv_draw_sw_mask_angle_init()
266 param->cfg.end_angle = end_angle; in lv_draw_sw_mask_angle_init()
267 lv_point_set(&param->cfg.vertex_p, vertex_x, vertex_y); in lv_draw_sw_mask_angle_init()
268 param->dsc.cb = (lv_draw_sw_mask_xcb_t)lv_draw_mask_angle; in lv_draw_sw_mask_angle_init()
269 param->dsc.type = LV_DRAW_SW_MASK_TYPE_ANGLE; in lv_draw_sw_mask_angle_init()
290 … lv_draw_sw_mask_line_angle_init(&param->start_line, vertex_x, vertex_y, start_angle, start_side); in lv_draw_sw_mask_angle_init()
291 lv_draw_sw_mask_line_angle_init(&param->end_line, vertex_x, vertex_y, end_angle, end_side); in lv_draw_sw_mask_angle_init()
303 lv_area_copy(&param->cfg.rect, rect); in lv_draw_sw_mask_radius_init()
304 param->cfg.radius = radius; in lv_draw_sw_mask_radius_init()
305 param->cfg.outer = inv ? 1 : 0; in lv_draw_sw_mask_radius_init()
306 param->dsc.cb = (lv_draw_sw_mask_xcb_t)lv_draw_mask_radius; in lv_draw_sw_mask_radius_init()
307 param->dsc.type = LV_DRAW_SW_MASK_TYPE_RADIUS; in lv_draw_sw_mask_radius_init()
310 param->circle = NULL; in lv_draw_sw_mask_radius_init()
323 param->circle = &(_circle_cache[i]); in lv_draw_sw_mask_radius_init()
334 else if(_circle_cache[i].life < entry->life) entry = &(_circle_cache[i]); in lv_draw_sw_mask_radius_init()
342 entry->life = -1; in lv_draw_sw_mask_radius_init()
345 entry->used_cnt++; in lv_draw_sw_mask_radius_init()
346 entry->life = 0; in lv_draw_sw_mask_radius_init()
347 CIRCLE_CACHE_AGING(entry->life, radius); in lv_draw_sw_mask_radius_init()
350 param->circle = entry; in lv_draw_sw_mask_radius_init()
352 circ_calc_aa4(param->circle, radius); in lv_draw_sw_mask_radius_init()
361 lv_area_copy(&param->cfg.coords, coords); in lv_draw_sw_mask_fade_init()
362 param->cfg.opa_top = opa_top; in lv_draw_sw_mask_fade_init()
363 param->cfg.opa_bottom = opa_bottom; in lv_draw_sw_mask_fade_init()
364 param->cfg.y_top = y_top; in lv_draw_sw_mask_fade_init()
365 param->cfg.y_bottom = y_bottom; in lv_draw_sw_mask_fade_init()
366 param->dsc.cb = (lv_draw_sw_mask_xcb_t)lv_draw_mask_fade; in lv_draw_sw_mask_fade_init()
367 param->dsc.type = LV_DRAW_SW_MASK_TYPE_FADE; in lv_draw_sw_mask_fade_init()
372 lv_area_copy(&param->cfg.coords, coords); in lv_draw_sw_mask_map_init()
373 param->cfg.map = map; in lv_draw_sw_mask_map_init()
374 param->dsc.cb = (lv_draw_sw_mask_xcb_t)lv_draw_mask_map; in lv_draw_sw_mask_map_init()
375 param->dsc.type = LV_DRAW_SW_MASK_TYPE_MAP; in lv_draw_sw_mask_map_init()
387 abs_y -= p->origo.y; in lv_draw_mask_line()
388 abs_x -= p->origo.x; in lv_draw_mask_line()
391 if(p->steep == 0) { in lv_draw_mask_line()
393 if(p->flat) { in lv_draw_mask_line()
395 if(p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_LEFT || in lv_draw_mask_line()
396 … p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_RIGHT) return LV_DRAW_SW_MASK_RES_FULL_COVER; in lv_draw_mask_line()
397 …else if(p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_TOP && abs_y < 0) return LV_DRAW_SW_MASK_RES_FULL… in lv_draw_mask_line()
398 …else if(p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_BOTTOM && abs_y > 0) return LV_DRAW_SW_MASK_RES_F… in lv_draw_mask_line()
406 if(p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_TOP || in lv_draw_mask_line()
407 … p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_BOTTOM) return LV_DRAW_SW_MASK_RES_FULL_COVER; in lv_draw_mask_line()
408 …else if(p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_RIGHT && abs_x > 0) return LV_DRAW_SW_MASK_RES_FU… in lv_draw_mask_line()
409 else if(p->cfg.side == LV_DRAW_SW_MASK_LINE_SIDE_LEFT) { in lv_draw_mask_line()
412 int32_t k = - abs_x; in lv_draw_mask_line()
414 if(k >= 0 && k < len) lv_memzero(&mask_buf[k], len - k); in lv_draw_mask_line()
421 int32_t k = - abs_x; in lv_draw_mask_line()
432 if(p->flat) { in lv_draw_mask_line()
449 y_at_x = (int32_t)((int32_t)p->yx_steep * abs_x) >> 10; in line_mask_flat()
451 if(p->yx_steep > 0) { in line_mask_flat()
453 if(p->inv) { in line_mask_flat()
463 if(p->inv) { in line_mask_flat()
474 y_at_x = (int32_t)((int32_t)p->yx_steep * (abs_x + len)) >> 10; in line_mask_flat()
475 if(p->yx_steep > 0) { in line_mask_flat()
477 if(p->inv) { in line_mask_flat()
487 if(p->inv) { in line_mask_flat()
497 if(p->yx_steep > 0) xe = ((abs_y * 256) * p->xy_steep) >> 10; in line_mask_flat()
498 else xe = (((abs_y + 1) * 256) * p->xy_steep) >> 10; in line_mask_flat()
505 else px_h = 255 - (((255 - xef) * p->spx) >> 8); in line_mask_flat()
506 int32_t k = xei - abs_x; in line_mask_flat()
507 lv_opa_t m; in line_mask_flat() local
511 m = 255 - (((255 - xef) * (255 - px_h)) >> 9); in line_mask_flat()
512 if(p->inv) m = 255 - m; in line_mask_flat()
513 mask_buf[k] = mask_mix(mask_buf[k], m); in line_mask_flat()
518 while(px_h > p->spx) { in line_mask_flat()
520 m = px_h - (p->spx >> 1); in line_mask_flat()
521 if(p->inv) m = 255 - m; in line_mask_flat()
522 mask_buf[k] = mask_mix(mask_buf[k], m); in line_mask_flat()
524 px_h -= p->spx; in line_mask_flat()
530 int32_t x_inters = (px_h * p->xy_steep) >> 10; in line_mask_flat()
531 m = (x_inters * px_h) >> 9; in line_mask_flat()
532 if(p->yx_steep < 0) m = 255 - m; in line_mask_flat()
533 if(p->inv) m = 255 - m; in line_mask_flat()
534 mask_buf[k] = mask_mix(mask_buf[k], m); in line_mask_flat()
537 if(p->inv) { in line_mask_flat()
538 k = xei - abs_x; in line_mask_flat()
552 lv_memzero(&mask_buf[k], len - k); in line_mask_flat()
568 x_at_y = (int32_t)((int32_t)p->xy_steep * abs_y) >> 10; in line_mask_steep()
569 if(p->xy_steep > 0) x_at_y++; in line_mask_steep()
571 if(p->inv) { in line_mask_steep()
581 x_at_y = (int32_t)((int32_t)p->xy_steep * (abs_y)) >> 10; in line_mask_steep()
583 if(p->inv) { in line_mask_steep()
592 int32_t xs = ((abs_y * 256) * p->xy_steep) >> 10; in line_mask_steep()
597 int32_t xe = (((abs_y + 1) * 256) * p->xy_steep) >> 10; in line_mask_steep()
601 lv_opa_t m; in line_mask_steep() local
603 k = xsi - abs_x; in line_mask_steep()
604 if(xsi != xei && (p->xy_steep < 0 && xsf == 0)) { in line_mask_steep()
607 k--; in line_mask_steep()
612 m = (xsf + xef) >> 1; in line_mask_steep()
613 if(p->inv) m = 255 - m; in line_mask_steep()
614 mask_buf[k] = mask_mix(mask_buf[k], m); in line_mask_steep()
618 if(p->inv) { in line_mask_steep()
619 k = xsi - abs_x; in line_mask_steep()
629 else if(k > 0) lv_memzero(&mask_buf[k], len - k); in line_mask_steep()
635 if(p->xy_steep < 0) { in line_mask_steep()
636 y_inters = (xsf * (-p->yx_steep)) >> 10; in line_mask_steep()
638 m = (y_inters * xsf) >> 9; in line_mask_steep()
639 if(p->inv) m = 255 - m; in line_mask_steep()
640 mask_buf[k] = mask_mix(mask_buf[k], m); in line_mask_steep()
642 k--; in line_mask_steep()
644 int32_t x_inters = ((255 - y_inters) * (-p->xy_steep)) >> 10; in line_mask_steep()
647 m = 255 - (((255 - y_inters) * x_inters) >> 9); in line_mask_steep()
648 if(p->inv) m = 255 - m; in line_mask_steep()
649 mask_buf[k] = mask_mix(mask_buf[k], m); in line_mask_steep()
654 if(p->inv) { in line_mask_steep()
655 k = xsi - abs_x - 1; in line_mask_steep()
663 if(k >= 0) lv_memzero(&mask_buf[k], len - k); in line_mask_steep()
668 y_inters = ((255 - xsf) * p->yx_steep) >> 10; in line_mask_steep()
670 m = 255 - ((y_inters * (255 - xsf)) >> 9); in line_mask_steep()
671 if(p->inv) m = 255 - m; in line_mask_steep()
672 mask_buf[k] = mask_mix(mask_buf[k], m); in line_mask_steep()
677 int32_t x_inters = ((255 - y_inters) * p->xy_steep) >> 10; in line_mask_steep()
679 m = ((255 - y_inters) * x_inters) >> 9; in line_mask_steep()
680 if(p->inv) m = 255 - m; in line_mask_steep()
681 mask_buf[k] = mask_mix(mask_buf[k], m); in line_mask_steep()
685 if(p->inv) { in line_mask_steep()
686 k = xsi - abs_x; in line_mask_steep()
694 else if(k > 0) lv_memzero(&mask_buf[k], len - k); in line_mask_steep()
706 int32_t rel_y = abs_y - p->cfg.vertex_p.y; in lv_draw_mask_angle()
707 int32_t rel_x = abs_x - p->cfg.vertex_p.x; in lv_draw_mask_angle()
709 if(p->cfg.start_angle < 180 && p->cfg.end_angle < 180 && in lv_draw_mask_angle()
710 p->cfg.start_angle != 0 && p->cfg.end_angle != 0 && in lv_draw_mask_angle()
711 p->cfg.start_angle > p->cfg.end_angle) { in lv_draw_mask_angle()
713 if(abs_y < p->cfg.vertex_p.y) { in lv_draw_mask_angle()
718 int32_t end_angle_first = (rel_y * p->end_line.xy_steep) >> 10; in lv_draw_mask_angle()
719 int32_t start_angle_last = ((rel_y + 1) * p->start_line.xy_steep) >> 10; in lv_draw_mask_angle()
722 …if(p->cfg.start_angle > 270 && p->cfg.start_angle <= 359 && start_angle_last < 0) start_angle_last… in lv_draw_mask_angle()
723 …else if(p->cfg.start_angle > 0 && p->cfg.start_angle <= 90 && start_angle_last < 0) start_angle_la… in lv_draw_mask_angle()
724 …else if(p->cfg.start_angle > 90 && p->cfg.start_angle < 270 && start_angle_last > 0) start_angle_l… in lv_draw_mask_angle()
726 …if(p->cfg.end_angle > 270 && p->cfg.end_angle <= 359 && start_angle_last < 0) start_angle_last = 0; in lv_draw_mask_angle()
727 …else if(p->cfg.end_angle > 0 && p->cfg.end_angle <= 90 && start_angle_last < 0) start_angle_last… in lv_draw_mask_angle()
728 …else if(p->cfg.end_angle > 90 && p->cfg.end_angle < 270 && start_angle_last > 0) start_angle_last… in lv_draw_mask_angle()
730 int32_t dist = (end_angle_first - start_angle_last) >> 1; in lv_draw_mask_angle()
735 int32_t tmp = start_angle_last + dist - rel_x; in lv_draw_mask_angle()
738 res1 = lv_draw_mask_line(&mask_buf[0], abs_x, abs_y, tmp, &p->start_line); in lv_draw_mask_angle()
746 res2 = lv_draw_mask_line(&mask_buf[tmp], abs_x + tmp, abs_y, len - tmp, &p->end_line); in lv_draw_mask_angle()
748 lv_memzero(&mask_buf[tmp], len - tmp); in lv_draw_mask_angle()
753 …else if(p->cfg.start_angle > 180 && p->cfg.end_angle > 180 && p->cfg.start_angle > p->cfg.end_angl… in lv_draw_mask_angle()
755 if(abs_y > p->cfg.vertex_p.y) { in lv_draw_mask_angle()
760 int32_t end_angle_first = (rel_y * p->end_line.xy_steep) >> 10; in lv_draw_mask_angle()
761 int32_t start_angle_last = ((rel_y + 1) * p->start_line.xy_steep) >> 10; in lv_draw_mask_angle()
764 …if(p->cfg.start_angle > 270 && p->cfg.start_angle <= 359 && start_angle_last < 0) start_angle_last… in lv_draw_mask_angle()
765 …else if(p->cfg.start_angle > 0 && p->cfg.start_angle <= 90 && start_angle_last < 0) start_angle_la… in lv_draw_mask_angle()
766 …else if(p->cfg.start_angle > 90 && p->cfg.start_angle < 270 && start_angle_last > 0) start_angle_l… in lv_draw_mask_angle()
768 …if(p->cfg.end_angle > 270 && p->cfg.end_angle <= 359 && start_angle_last < 0) start_angle_last = 0; in lv_draw_mask_angle()
769 …else if(p->cfg.end_angle > 0 && p->cfg.end_angle <= 90 && start_angle_last < 0) start_angle_last… in lv_draw_mask_angle()
770 …else if(p->cfg.end_angle > 90 && p->cfg.end_angle < 270 && start_angle_last > 0) start_angle_last… in lv_draw_mask_angle()
772 int32_t dist = (end_angle_first - start_angle_last) >> 1; in lv_draw_mask_angle()
777 int32_t tmp = start_angle_last + dist - rel_x; in lv_draw_mask_angle()
780 …= lv_draw_mask_line(&mask_buf[0], abs_x, abs_y, tmp, (lv_draw_sw_mask_line_param_t *)&p->end_line); in lv_draw_mask_angle()
788 …draw_mask_line(&mask_buf[tmp], abs_x + tmp, abs_y, len - tmp, (lv_draw_sw_mask_line_param_t *)&p->… in lv_draw_mask_angle()
790 lv_memzero(&mask_buf[tmp], len - tmp); in lv_draw_mask_angle()
800 if(p->cfg.start_angle == 180) { in lv_draw_mask_angle()
801 if(abs_y < p->cfg.vertex_p.y) res1 = LV_DRAW_SW_MASK_RES_FULL_COVER; in lv_draw_mask_angle()
804 else if(p->cfg.start_angle == 0) { in lv_draw_mask_angle()
805 if(abs_y < p->cfg.vertex_p.y) res1 = LV_DRAW_SW_MASK_RES_UNKNOWN; in lv_draw_mask_angle()
808 else if((p->cfg.start_angle < 180 && abs_y < p->cfg.vertex_p.y) || in lv_draw_mask_angle()
809 (p->cfg.start_angle > 180 && abs_y >= p->cfg.vertex_p.y)) { in lv_draw_mask_angle()
813 res1 = lv_draw_mask_line(mask_buf, abs_x, abs_y, len, &p->start_line); in lv_draw_mask_angle()
816 if(p->cfg.end_angle == 180) { in lv_draw_mask_angle()
817 if(abs_y < p->cfg.vertex_p.y) res2 = LV_DRAW_SW_MASK_RES_UNKNOWN; in lv_draw_mask_angle()
820 else if(p->cfg.end_angle == 0) { in lv_draw_mask_angle()
821 if(abs_y < p->cfg.vertex_p.y) res2 = LV_DRAW_SW_MASK_RES_FULL_COVER; in lv_draw_mask_angle()
824 else if((p->cfg.end_angle < 180 && abs_y < p->cfg.vertex_p.y) || in lv_draw_mask_angle()
825 (p->cfg.end_angle > 180 && abs_y >= p->cfg.vertex_p.y)) { in lv_draw_mask_angle()
829 res2 = lv_draw_mask_line(mask_buf, abs_x, abs_y, len, &p->end_line); in lv_draw_mask_angle()
844 bool outer = p->cfg.outer; in lv_draw_mask_radius()
845 int32_t radius = p->cfg.radius; in lv_draw_mask_radius()
847 lv_area_copy(&rect, &p->cfg.rect); in lv_draw_mask_radius()
860 if((abs_x >= rect.x1 + radius && abs_x + len <= rect.x2 - radius) || in lv_draw_mask_radius()
861 (abs_y >= rect.y1 + radius && abs_y <= rect.y2 - radius)) { in lv_draw_mask_radius()
864 int32_t last = rect.x1 - abs_x; in lv_draw_mask_radius()
870 int32_t first = rect.x2 - abs_x + 1; in lv_draw_mask_radius()
873 lv_memzero(&mask_buf[first], len - first); in lv_draw_mask_radius()
879 int32_t first = rect.x1 - abs_x; in lv_draw_mask_radius()
882 int32_t last = rect.x2 - abs_x - first + 1; in lv_draw_mask_radius()
883 if(first + last > len) last = len - first; in lv_draw_mask_radius()
892 int32_t k = rect.x1 - abs_x; /*First relevant coordinate on the of the mask*/ in lv_draw_mask_radius()
895 abs_x -= rect.x1; in lv_draw_mask_radius()
896 abs_y -= rect.y1; in lv_draw_mask_radius()
902 cir_y = radius - abs_y - 1; in lv_draw_mask_radius()
905 cir_y = abs_y - (h - radius); in lv_draw_mask_radius()
907 lv_opa_t * aa_opa = get_next_line(p->circle, cir_y, &aa_len, &x_start); in lv_draw_mask_radius()
908 int32_t cir_x_right = k + w - radius + x_start; in lv_draw_mask_radius()
909 int32_t cir_x_left = k + radius - x_start - 1; in lv_draw_mask_radius()
914 lv_opa_t opa = aa_opa[aa_len - i - 1]; in lv_draw_mask_radius()
918 if(cir_x_left - i >= 0 && cir_x_left - i < len) { in lv_draw_mask_radius()
919 mask_buf[cir_x_left - i] = mask_mix(opa, mask_buf[cir_x_left - i]); in lv_draw_mask_radius()
925 lv_memzero(&mask_buf[cir_x_right], len - cir_x_right); in lv_draw_mask_radius()
928 cir_x_left = LV_CLAMP(0, cir_x_left - aa_len + 1, len); in lv_draw_mask_radius()
933 lv_opa_t opa = 255 - (aa_opa[aa_len - 1 - i]); in lv_draw_mask_radius()
937 if(cir_x_left - i >= 0 && cir_x_left - i < len) { in lv_draw_mask_radius()
938 mask_buf[cir_x_left - i] = mask_mix(opa, mask_buf[cir_x_left - i]); in lv_draw_mask_radius()
943 int32_t clr_len = LV_CLAMP(0, cir_x_right - clr_start, len - clr_start); in lv_draw_mask_radius()
954 if(abs_y < p->cfg.coords.y1) return LV_DRAW_SW_MASK_RES_FULL_COVER; in lv_draw_mask_fade()
955 if(abs_y > p->cfg.coords.y2) return LV_DRAW_SW_MASK_RES_FULL_COVER; in lv_draw_mask_fade()
956 if(abs_x + len < p->cfg.coords.x1) return LV_DRAW_SW_MASK_RES_FULL_COVER; in lv_draw_mask_fade()
957 if(abs_x > p->cfg.coords.x2) return LV_DRAW_SW_MASK_RES_FULL_COVER; in lv_draw_mask_fade()
959 if(abs_x + len > p->cfg.coords.x2) len -= abs_x + len - p->cfg.coords.x2 - 1; in lv_draw_mask_fade()
961 if(abs_x < p->cfg.coords.x1) { in lv_draw_mask_fade()
963 x_ofs = p->cfg.coords.x1 - abs_x; in lv_draw_mask_fade()
964 len -= x_ofs; in lv_draw_mask_fade()
970 if(abs_y <= p->cfg.y_top) { in lv_draw_mask_fade()
972 mask_buf[i] = mask_mix(mask_buf[i], p->cfg.opa_top); in lv_draw_mask_fade()
976 else if(abs_y >= p->cfg.y_bottom) { in lv_draw_mask_fade()
978 mask_buf[i] = mask_mix(mask_buf[i], p->cfg.opa_bottom); in lv_draw_mask_fade()
984 int16_t opa_diff = p->cfg.opa_bottom - p->cfg.opa_top; in lv_draw_mask_fade()
985 int32_t y_diff = p->cfg.y_bottom - p->cfg.y_top + 1; in lv_draw_mask_fade()
986 lv_opa_t opa_act = LV_OPA_MIX2(abs_y - p->cfg.y_top, opa_diff) / y_diff; in lv_draw_mask_fade()
987 opa_act += p->cfg.opa_top; in lv_draw_mask_fade()
1001 if(abs_y < p->cfg.coords.y1) return LV_DRAW_SW_MASK_RES_FULL_COVER; in lv_draw_mask_map()
1002 if(abs_y > p->cfg.coords.y2) return LV_DRAW_SW_MASK_RES_FULL_COVER; in lv_draw_mask_map()
1003 if(abs_x + len < p->cfg.coords.x1) return LV_DRAW_SW_MASK_RES_FULL_COVER; in lv_draw_mask_map()
1004 if(abs_x > p->cfg.coords.x2) return LV_DRAW_SW_MASK_RES_FULL_COVER; in lv_draw_mask_map()
1007 const lv_opa_t * map_tmp = p->cfg.map; in lv_draw_mask_map()
1008 map_tmp += (abs_y - p->cfg.coords.y1) * lv_area_get_width(&p->cfg.coords); in lv_draw_mask_map()
1010 if(abs_x + len > p->cfg.coords.x2) len -= abs_x + len - p->cfg.coords.x2 - 1; in lv_draw_mask_map()
1012 if(abs_x < p->cfg.coords.x1) { in lv_draw_mask_map()
1014 x_ofs = p->cfg.coords.x1 - abs_x; in lv_draw_mask_map()
1015 len -= x_ofs; in lv_draw_mask_map()
1019 map_tmp += (abs_x - p->cfg.coords.x1); in lv_draw_mask_map()
1038 c->x = radius; in circ_init()
1039 c->y = 0; in circ_init()
1040 *tmp = 1 - radius; in circ_init()
1050 return c->y <= c->x; in circ_cont()
1062 (*tmp) += 2 * c->y + 3; /*Change in decision criterion for y -> y+1*/ in circ_next()
1065 (*tmp) += 2 * (c->y - c->x) + 5; /*Change for y -> y+1, x -> x-1*/ in circ_next()
1066 c->x--; in circ_next()
1068 c->y++; in circ_next()
1074 c->radius = radius; in circ_calc_aa4()
1077 if(c->buf) lv_free(c->buf); in circ_calc_aa4()
1079 c->buf = lv_malloc(radius * 6 + 6); /*Use uint16_t for opa_start_on_y and x_start_on_y*/ in circ_calc_aa4()
1080 LV_ASSERT_MALLOC(c->buf); in circ_calc_aa4()
1081 c->cir_opa = c->buf; in circ_calc_aa4()
1082 c->opa_start_on_y = (uint16_t *)(c->buf + 2 * radius + 2); in circ_calc_aa4()
1083 c->x_start_on_y = (uint16_t *)(c->buf + 4 * radius + 4); in circ_calc_aa4()
1087 c->cir_opa[0] = 180; in circ_calc_aa4()
1088 c->opa_start_on_y[0] = 0; in circ_calc_aa4()
1089 c->opa_start_on_y[1] = 1; in circ_calc_aa4()
1090 c->x_start_on_y[0] = 0; in circ_calc_aa4()
1125 c->cir_opa[cir_size] = x_fract[0] + x_fract[1] + x_fract[2] + x_fract[3]; in circ_calc_aa4()
1126 c->cir_opa[cir_size] *= 16; in circ_calc_aa4()
1133 c->cir_opa[cir_size] = x_fract[0]; in circ_calc_aa4()
1134 c->cir_opa[cir_size] *= 16; in circ_calc_aa4()
1137 cir_x[cir_size] = x_int[0] - 1; in circ_calc_aa4()
1139 c->cir_opa[cir_size] = 1 * 4 + x_fract[1] + x_fract[2] + x_fract[3];; in circ_calc_aa4()
1140 c->cir_opa[cir_size] *= 16; in circ_calc_aa4()
1147 c->cir_opa[cir_size] = x_fract[0] + x_fract[1]; in circ_calc_aa4()
1148 c->cir_opa[cir_size] *= 16; in circ_calc_aa4()
1151 cir_x[cir_size] = x_int[0] - 1; in circ_calc_aa4()
1153 c->cir_opa[cir_size] = 2 * 4 + x_fract[2] + x_fract[3];; in circ_calc_aa4()
1154 c->cir_opa[cir_size] *= 16; in circ_calc_aa4()
1161 c->cir_opa[cir_size] = x_fract[0] + x_fract[1] + x_fract[2]; in circ_calc_aa4()
1162 c->cir_opa[cir_size] *= 16; in circ_calc_aa4()
1165 cir_x[cir_size] = x_int[0] - 1; in circ_calc_aa4()
1167 c->cir_opa[cir_size] = 3 * 4 + x_fract[3];; in circ_calc_aa4()
1168 c->cir_opa[cir_size] *= 16; in circ_calc_aa4()
1178 if(cir_x[cir_size - 1] != mid_int || cir_y[cir_size - 1] != mid_int) { in circ_calc_aa4()
1179 int32_t tmp_val = mid - (mid_int << 10); in circ_calc_aa4()
1185 tmp_val = 1024 - tmp_val; in circ_calc_aa4()
1188 tmp_val = 15 - tmp_val; in circ_calc_aa4()
1193 c->cir_opa[cir_size] = tmp_val; in circ_calc_aa4()
1194 c->cir_opa[cir_size] *= 16; in circ_calc_aa4()
1199 for(i = cir_size - 2; i >= 0; i--, cir_size++) { in circ_calc_aa4()
1202 c->cir_opa[cir_size] = c->cir_opa[i]; in circ_calc_aa4()
1207 c->opa_start_on_y[0] = 0; in circ_calc_aa4()
1209 c->opa_start_on_y[y] = i; in circ_calc_aa4()
1210 c->x_start_on_y[y] = cir_x[i]; in circ_calc_aa4()
1212 c->x_start_on_y[y] = LV_MIN(c->x_start_on_y[y], cir_x[i]); in circ_calc_aa4()
1223 *len = c->opa_start_on_y[y + 1] - c->opa_start_on_y[y]; in get_next_line()
1224 *x_start = c->x_start_on_y[y]; in get_next_line()
1225 return &c->cir_opa[c->opa_start_on_y[y]]; in get_next_line()