From: Keith Packard Date: Mon, 27 Feb 2023 02:46:40 +0000 (-0800) Subject: altos/draw: Check for horiz/vert line when clipping X-Git-Tag: 1.9.16~1^2~30 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;ds=sidebyside;h=9a79e8d8903b63f3f630d7f6455ee09715f55615;p=fw%2Faltos altos/draw: Check for horiz/vert line when clipping Horizontal or vertical lines won't step along the minor axis while clipping. Signed-off-by: Keith Packard --- diff --git a/src/draw/ao_line.c b/src/draw/ao_line.c index 832a916c..7aa3662d 100644 --- a/src/draw/ao_line.c +++ b/src/draw/ao_line.c @@ -211,16 +211,20 @@ ao_clip_line(struct ao_cc *c, struct ao_cbox *b) */ int32_t adj_min; - if (!c->first) - adj_min = div_ceil(c->e + adjust_major * c->e1, -c->e3); - else - adj_min = div_floor_plus_one(c->e + adjust_major * c->e1, -c->e3); + if (c->e3) { + if (!c->first) + adj_min = div_ceil(c->e + adjust_major * c->e1, -c->e3); + else + adj_min = div_floor_plus_one(c->e + adjust_major * c->e1, -c->e3); + } if (adj_min < adjust_minor) { - if (c->first) - adjust_major = div_ceil(c->e - adjust_minor * c->e3, c->e1); - else - adjust_major = div_floor_plus_one(c->e - adjust_minor * c->e3, c->e1); + if (c->e1) { + if (c->first) + adjust_major = div_ceil(c->e - adjust_minor * c->e3, c->e1); + else + adjust_major = div_floor_plus_one(c->e - adjust_minor * c->e3, c->e1); + } } else { adjust_minor = adj_min; }