diff --git a/box-drawing.c b/box-drawing.c index 96de8775..87da54d6 100644 --- a/box-drawing.c +++ b/box-drawing.c @@ -17,87 +17,96 @@ #pragma GCC optimize("Os") +struct buf { + uint8_t *data; + int width; + int height; + int stride; + int dpi; +}; + static int -thickness(float pts, int dpi) +_thickness(struct buf *buf, float pts) { - return max(pts * (float)dpi / 72.0, 1); + return max(pts * buf->dpi / 72.0, 1); } +#define thickness(pts) _thickness(buf, pts) -static void -_hline(uint8_t *buf, int x1, int x2, int y, int thick, int width, int height, int stride) +static void __attribute__((noinline)) +_hline(struct buf *buf, int x1, int x2, int y, int thick) { - x1 = min(max(x1, 0), width); - x2 = min(max(x2, 0), width); + x1 = min(max(x1, 0), buf->width); + x2 = min(max(x2, 0), buf->width); - for (size_t row = max(y, 0); row < min(y + thick, height); row++) { + for (size_t row = max(y, 0); row < min(y + thick, buf->height); row++) { for (size_t col = x1; col < x2; col++) { size_t idx = col / 8; size_t bit_no = col % 8; - buf[row * stride + idx] |= 1 << bit_no; + buf->data[row * buf->stride + idx] |= 1 << bit_no; } } } -#define hline(x1, x2, y, thick) _hline(buf, x1, x2, y, thick, width, height, stride) +#define hline(x1, x2, y, thick) _hline(buf, x1, x2, y, thick) -static void -_vline(uint8_t *buf, int y1, int y2, int x, int thick, int width, int height, int stride) +static void __attribute__((noinline)) +_vline(struct buf *buf, int y1, int y2, int x, int thick) { - y1 = min(max(y1, 0), height); - y2 = min(max(y2, 0), height); + y1 = min(max(y1, 0), buf->height); + y2 = min(max(y2, 0), buf->height); for (size_t row = y1; row < y2; row++) { - for (size_t col = max(x, 0); col < min(x + thick, width); col++) { + for (size_t col = max(x, 0); col < min(x + thick, buf->width); col++) { size_t idx = col / 8; size_t bit_no = col % 8; - buf[row * stride + idx] |= 1 << bit_no; + buf->data[row * buf->stride + idx] |= 1 << bit_no; } } } -#define vline(y1, y2, x, thick) _vline(buf, y1, y2, x, thick, width, height, stride) +#define vline(y1, y2, x, thick) _vline(buf, y1, y2, x, thick) -static void -_rect(uint8_t *buf, int x1, int y1, int x2, int y2, int width, int height, int stride) +static void __attribute__((noinline)) +_rect(struct buf *buf, int x1, int y1, int x2, int y2) { - for (size_t row = max(y1, 0); row < min(y2, height); row++) { - for (size_t col = max(x1, 0); col < min(x2, width); col++) { + for (size_t row = max(y1, 0); row < min(y2, buf->height); row++) { + for (size_t col = max(x1, 0); col < min(x2, buf->width); col++) { size_t idx = col / 8; size_t bit_no = col % 8; - buf[row * stride + idx] |= 1 << bit_no; + buf->data[row * buf->stride + idx] |= 1 << bit_no; } } } -#define rect(x1, y1, x2, y2) _rect(buf, x1, y1, x2, y2, width, height, stride) +#define rect(x1, y1, x2, y2) _rect(buf, x1, y1, x2, y2) #define _hline_middle_left(_vthick, _hthick) \ do { \ - int vthick = thickness(_vthick, dpi); \ - int hthick = thickness(_hthick, dpi); \ - hline(0, (width + vthick) / 2, (height - hthick) / 2, hthick); \ + int vthick = thickness(_vthick); \ + int hthick = thickness(_hthick); \ + hline(0, (buf->width + vthick) / 2, (buf->height - hthick) / 2, hthick); \ } while (0) #define _hline_middle_right(_vthick, _hthick) \ do { \ - int vthick = thickness(_vthick, dpi); \ - int hthick = thickness(_hthick, dpi); \ - hline((width - vthick) / 2, width, (height - hthick) / 2, hthick); \ + int vthick = thickness(_vthick); \ + int hthick = thickness(_hthick); \ + hline((buf->width - vthick) / 2, buf->width, (buf->height - hthick) / 2, hthick); \ } while (0) #define _vline_middle_up(_vthick, _hthick) \ do { \ - int vthick = thickness(_vthick, dpi); \ - int hthick = thickness(_hthick, dpi); \ - vline(0, (height + hthick) / 2, (width - vthick) / 2, vthick); \ + int vthick = thickness(_vthick); \ + int hthick = thickness(_hthick); \ + vline(0, (buf->height + hthick) / 2, (buf->width - vthick) / 2, vthick); \ } while (0) #define _vline_middle_down(_vthick, _hthick) \ do { \ - int vthick = thickness(_vthick, dpi); \ - int hthick = thickness(_hthick, dpi); \ - vline((height - hthick) / 2, height, (width - vthick) / 2, vthick); \ + int vthick = thickness(_vthick); \ + int hthick = thickness(_hthick); \ + vline((buf->height - hthick) / 2, buf->height, (buf->width - vthick) / 2, vthick); \ } while (0) #define hline_middle_left(thick) _hline_middle_left(thick, thick) @@ -105,42 +114,45 @@ _rect(uint8_t *buf, int x1, int y1, int x2, int y2, int width, int height, int s #define vline_middle_up(thick) _vline_middle_up(thick, thick) #define vline_middle_down(thick) _vline_middle_down(thick, thick) -#define quad_upper_left() rect(0, 0, ceil(width / 2.), ceil(height / 2.)) -#define quad_upper_right() rect(floor(width / 2.), 0, width, ceil(height / 2.)) -#define quad_lower_left() rect(0, floor(height / 2.), ceil(width / 2.), height) -#define quad_lower_right() rect(floor(width / 2.), floor(height / 2.), width, height) +#define quad_upper_left() rect(0, 0, ceil(buf->width / 2.), ceil(buf->height / 2.)) +#define quad_upper_right() rect(floor(buf->width / 2.), 0, buf->width, ceil(buf->height / 2.)) +#define quad_lower_left() rect(0, floor(buf->height / 2.), ceil(buf->width / 2.), buf->height) +#define quad_lower_right() rect(floor(buf->width / 2.), floor(buf->height / 2.), buf->width, buf->height) static void -draw_box_drawings_light_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_horizontal(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(LIGHT); } static void -draw_box_drawings_heavy_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_horizontal(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(HEAVY); } static void -draw_box_drawings_light_vertical(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_vertical(struct buf *buf) { vline_middle_up(LIGHT); vline_middle_down(LIGHT); } static void -draw_box_drawings_heavy_vertical(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_vertical(struct buf *buf) { vline_middle_up(HEAVY); vline_middle_down(HEAVY); } static void -draw_box_drawings_dash_horizontal(uint8_t *buf, int width, int height, int stride, int dpi, int count, int thick, int gap) +draw_box_drawings_dash_horizontal(struct buf *buf, int count, int thick, int gap) { + int width = buf->width; + int height = buf->height; + assert(count >= 2 && count <= 4); const int gap_count = count - 1; @@ -195,8 +207,11 @@ draw_box_drawings_dash_horizontal(uint8_t *buf, int width, int height, int strid } static void -draw_box_drawings_dash_vertical(uint8_t *buf, int width, int height, int stride, int dpi, int count, int thick, int gap) +draw_box_drawings_dash_vertical(struct buf *buf, int count, int thick, int gap) { + int width = buf->width; + int height = buf->height; + assert(count >= 2 && count <= 4); const int gap_count = count - 1; @@ -251,175 +266,167 @@ draw_box_drawings_dash_vertical(uint8_t *buf, int width, int height, int stride, } static void -draw_box_drawings_light_triple_dash_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_triple_dash_horizontal(struct buf *buf) { - draw_box_drawings_dash_horizontal( - buf, width, height, stride, dpi, 3, thickness(LIGHT, dpi), thickness(LIGHT, dpi)); + draw_box_drawings_dash_horizontal(buf, 3, thickness(LIGHT), thickness(LIGHT)); } static void -draw_box_drawings_heavy_triple_dash_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_triple_dash_horizontal(struct buf *buf) { - draw_box_drawings_dash_horizontal( - buf, width, height, stride, dpi, 3, thickness(HEAVY, dpi), thickness(LIGHT, dpi)); + draw_box_drawings_dash_horizontal(buf, 3, thickness(HEAVY), thickness(LIGHT)); } static void -draw_box_drawings_light_triple_dash_vertical(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_triple_dash_vertical(struct buf *buf) { - draw_box_drawings_dash_vertical( - buf, width, height, stride, dpi, 3, thickness(LIGHT, dpi), thickness(HEAVY, dpi)); + draw_box_drawings_dash_vertical(buf, 3, thickness(LIGHT), thickness(HEAVY)); } static void -draw_box_drawings_heavy_triple_dash_vertical(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_triple_dash_vertical(struct buf *buf) { - draw_box_drawings_dash_vertical( - buf, width, height, stride, dpi, 3, thickness(HEAVY, dpi), thickness(HEAVY, dpi)); + draw_box_drawings_dash_vertical(buf, 3, thickness(HEAVY), thickness(HEAVY)); } static void -draw_box_drawings_light_quadruple_dash_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_quadruple_dash_horizontal(struct buf *buf) { - draw_box_drawings_dash_horizontal( - buf, width, height, stride, dpi, 4, thickness(LIGHT, dpi), thickness(LIGHT, dpi)); + draw_box_drawings_dash_horizontal(buf, 4, thickness(LIGHT), thickness(LIGHT)); } static void -draw_box_drawings_heavy_quadruple_dash_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_quadruple_dash_horizontal(struct buf *buf) { - draw_box_drawings_dash_horizontal( - buf, width, height, stride, dpi, 4, thickness(HEAVY, dpi), thickness(LIGHT, dpi)); + draw_box_drawings_dash_horizontal(buf, 4, thickness(HEAVY), thickness(LIGHT)); } static void -draw_box_drawings_light_quadruple_dash_vertical(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_quadruple_dash_vertical(struct buf *buf) { - draw_box_drawings_dash_vertical( - buf, width, height, stride, dpi, 4, thickness(LIGHT, dpi), thickness(LIGHT, dpi)); + draw_box_drawings_dash_vertical(buf, 4, thickness(LIGHT), thickness(LIGHT)); } static void -draw_box_drawings_heavy_quadruple_dash_vertical(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_quadruple_dash_vertical(struct buf *buf) { - draw_box_drawings_dash_vertical( - buf, width, height, stride, dpi, 4, thickness(HEAVY, dpi), thickness(LIGHT, dpi)); + draw_box_drawings_dash_vertical(buf, 4, thickness(HEAVY), thickness(LIGHT)); } static void -draw_box_drawings_light_down_and_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_down_and_right(struct buf *buf) { hline_middle_right(LIGHT); vline_middle_down(LIGHT); } static void -draw_box_drawings_down_light_and_right_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_light_and_right_heavy(struct buf *buf) { _hline_middle_right(LIGHT, HEAVY); vline_middle_down(LIGHT); } static void -draw_box_drawings_down_heavy_and_right_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_heavy_and_right_light(struct buf *buf) { hline_middle_right(LIGHT); _vline_middle_down(HEAVY, LIGHT); } static void -draw_box_drawings_heavy_down_and_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_down_and_right(struct buf *buf) { hline_middle_right(HEAVY); vline_middle_down(HEAVY); } static void -draw_box_drawings_light_down_and_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_down_and_left(struct buf *buf) { hline_middle_left(LIGHT); vline_middle_down(LIGHT); } static void -draw_box_drawings_down_light_and_left_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_light_and_left_heavy(struct buf *buf) { _hline_middle_left(LIGHT, HEAVY); vline_middle_down(LIGHT); } static void -draw_box_drawings_down_heavy_and_left_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_heavy_and_left_light(struct buf *buf) { hline_middle_left(LIGHT); _vline_middle_down(HEAVY, LIGHT); } static void -draw_box_drawings_heavy_down_and_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_down_and_left(struct buf *buf) { hline_middle_left(HEAVY); vline_middle_down(HEAVY); } static void -draw_box_drawings_light_up_and_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_up_and_right(struct buf *buf) { hline_middle_right(LIGHT); vline_middle_up(LIGHT); } static void -draw_box_drawings_up_light_and_right_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_light_and_right_heavy(struct buf *buf) { _hline_middle_right(LIGHT, HEAVY); vline_middle_up(LIGHT); } static void -draw_box_drawings_up_heavy_and_right_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_heavy_and_right_light(struct buf *buf) { hline_middle_right(LIGHT); _vline_middle_up(HEAVY, LIGHT); } static void -draw_box_drawings_heavy_up_and_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_up_and_right(struct buf *buf) { hline_middle_right(HEAVY); vline_middle_up(HEAVY); } static void -draw_box_drawings_light_up_and_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_up_and_left(struct buf *buf) { hline_middle_left(LIGHT); vline_middle_up(LIGHT); } static void -draw_box_drawings_up_light_and_left_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_light_and_left_heavy(struct buf *buf) { _hline_middle_left(LIGHT, HEAVY); vline_middle_up(LIGHT); } static void -draw_box_drawings_up_heavy_and_left_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_heavy_and_left_light(struct buf *buf) { hline_middle_left(LIGHT); _vline_middle_up(HEAVY, LIGHT); } static void -draw_box_drawings_heavy_up_and_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_up_and_left(struct buf *buf) { hline_middle_left(HEAVY); vline_middle_up(HEAVY); } static void -draw_box_drawings_light_vertical_and_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_vertical_and_right(struct buf *buf) { hline_middle_right(LIGHT); vline_middle_up(LIGHT); @@ -427,7 +434,7 @@ draw_box_drawings_light_vertical_and_right(uint8_t *buf, int width, int height, } static void -draw_box_drawings_vertical_light_and_right_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_vertical_light_and_right_heavy(struct buf *buf) { _hline_middle_right(LIGHT, HEAVY); vline_middle_up(LIGHT); @@ -435,7 +442,7 @@ draw_box_drawings_vertical_light_and_right_heavy(uint8_t *buf, int width, int he } static void -draw_box_drawings_up_heavy_and_right_down_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_heavy_and_right_down_light(struct buf *buf) { hline_middle_right(LIGHT); _vline_middle_up(HEAVY, LIGHT); @@ -443,7 +450,7 @@ draw_box_drawings_up_heavy_and_right_down_light(uint8_t *buf, int width, int hei } static void -draw_box_drawings_down_heavy_and_right_up_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_heavy_and_right_up_light(struct buf *buf) { hline_middle_right(LIGHT); vline_middle_up(LIGHT); @@ -451,7 +458,7 @@ draw_box_drawings_down_heavy_and_right_up_light(uint8_t *buf, int width, int hei } static void -draw_box_drawings_vertical_heavy_and_right_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_vertical_heavy_and_right_light(struct buf *buf) { hline_middle_right(LIGHT); vline_middle_up(HEAVY); @@ -459,7 +466,7 @@ draw_box_drawings_vertical_heavy_and_right_light(uint8_t *buf, int width, int he } static void -draw_box_drawings_down_light_and_right_up_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_light_and_right_up_heavy(struct buf *buf) { hline_middle_right(HEAVY); vline_middle_up(HEAVY); @@ -467,7 +474,7 @@ draw_box_drawings_down_light_and_right_up_heavy(uint8_t *buf, int width, int hei } static void -draw_box_drawings_up_light_and_right_down_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_light_and_right_down_heavy(struct buf *buf) { hline_middle_right(HEAVY); vline_middle_up(LIGHT); @@ -475,7 +482,7 @@ draw_box_drawings_up_light_and_right_down_heavy(uint8_t *buf, int width, int hei } static void -draw_box_drawings_heavy_vertical_and_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_vertical_and_right(struct buf *buf) { hline_middle_right(HEAVY); vline_middle_up(HEAVY); @@ -483,7 +490,7 @@ draw_box_drawings_heavy_vertical_and_right(uint8_t *buf, int width, int height, } static void -draw_box_drawings_light_vertical_and_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_vertical_and_left(struct buf *buf) { hline_middle_left(LIGHT); vline_middle_up(LIGHT); @@ -491,7 +498,7 @@ draw_box_drawings_light_vertical_and_left(uint8_t *buf, int width, int height, i } static void -draw_box_drawings_vertical_light_and_left_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_vertical_light_and_left_heavy(struct buf *buf) { _hline_middle_left(LIGHT, HEAVY); vline_middle_up(LIGHT); @@ -499,7 +506,7 @@ draw_box_drawings_vertical_light_and_left_heavy(uint8_t *buf, int width, int hei } static void -draw_box_drawings_up_heavy_and_left_down_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_heavy_and_left_down_light(struct buf *buf) { hline_middle_left(LIGHT); _vline_middle_up(HEAVY, LIGHT); @@ -507,7 +514,7 @@ draw_box_drawings_up_heavy_and_left_down_light(uint8_t *buf, int width, int heig } static void -draw_box_drawings_down_heavy_and_left_up_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_heavy_and_left_up_light(struct buf *buf) { hline_middle_left(LIGHT); vline_middle_up(LIGHT); @@ -515,7 +522,7 @@ draw_box_drawings_down_heavy_and_left_up_light(uint8_t *buf, int width, int heig } static void -draw_box_drawings_vertical_heavy_and_left_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_vertical_heavy_and_left_light(struct buf *buf) { hline_middle_left(LIGHT); vline_middle_up(HEAVY); @@ -523,7 +530,7 @@ draw_box_drawings_vertical_heavy_and_left_light(uint8_t *buf, int width, int hei } static void -draw_box_drawings_down_light_and_left_up_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_light_and_left_up_heavy(struct buf *buf) { hline_middle_left(HEAVY); vline_middle_up(HEAVY); @@ -531,7 +538,7 @@ draw_box_drawings_down_light_and_left_up_heavy(uint8_t *buf, int width, int heig } static void -draw_box_drawings_up_light_and_left_down_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_light_and_left_down_heavy(struct buf *buf) { hline_middle_left(HEAVY); vline_middle_up(LIGHT); @@ -539,7 +546,7 @@ draw_box_drawings_up_light_and_left_down_heavy(uint8_t *buf, int width, int heig } static void -draw_box_drawings_heavy_vertical_and_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_vertical_and_left(struct buf *buf) { hline_middle_left(HEAVY); vline_middle_up(HEAVY); @@ -547,7 +554,7 @@ draw_box_drawings_heavy_vertical_and_left(uint8_t *buf, int width, int height, i } static void -draw_box_drawings_light_down_and_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_down_and_horizontal(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(LIGHT); @@ -555,7 +562,7 @@ draw_box_drawings_light_down_and_horizontal(uint8_t *buf, int width, int height, } static void -draw_box_drawings_left_heavy_and_right_down_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_left_heavy_and_right_down_light(struct buf *buf) { _hline_middle_left(LIGHT, HEAVY); hline_middle_right(LIGHT); @@ -563,7 +570,7 @@ draw_box_drawings_left_heavy_and_right_down_light(uint8_t *buf, int width, int h } static void -draw_box_drawings_right_heavy_and_left_down_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_right_heavy_and_left_down_light(struct buf *buf) { hline_middle_left(LIGHT); _hline_middle_right(LIGHT, HEAVY); @@ -571,7 +578,7 @@ draw_box_drawings_right_heavy_and_left_down_light(uint8_t *buf, int width, int h } static void -draw_box_drawings_down_light_and_horizontal_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_light_and_horizontal_heavy(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(HEAVY); @@ -579,7 +586,7 @@ draw_box_drawings_down_light_and_horizontal_heavy(uint8_t *buf, int width, int h } static void -draw_box_drawings_down_heavy_and_horizontal_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_heavy_and_horizontal_light(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(LIGHT); @@ -587,7 +594,7 @@ draw_box_drawings_down_heavy_and_horizontal_light(uint8_t *buf, int width, int h } static void -draw_box_drawings_right_light_and_left_down_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_right_light_and_left_down_heavy(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(LIGHT); @@ -595,7 +602,7 @@ draw_box_drawings_right_light_and_left_down_heavy(uint8_t *buf, int width, int h } static void -draw_box_drawings_left_light_and_right_down_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_left_light_and_right_down_heavy(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(HEAVY); @@ -603,7 +610,7 @@ draw_box_drawings_left_light_and_right_down_heavy(uint8_t *buf, int width, int h } static void -draw_box_drawings_heavy_down_and_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_down_and_horizontal(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(HEAVY); @@ -611,7 +618,7 @@ draw_box_drawings_heavy_down_and_horizontal(uint8_t *buf, int width, int height, } static void -draw_box_drawings_light_up_and_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_up_and_horizontal(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(LIGHT); @@ -619,7 +626,7 @@ draw_box_drawings_light_up_and_horizontal(uint8_t *buf, int width, int height, i } static void -draw_box_drawings_left_heavy_and_right_up_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_left_heavy_and_right_up_light(struct buf *buf) { _hline_middle_left(LIGHT, HEAVY); hline_middle_right(LIGHT); @@ -627,7 +634,7 @@ draw_box_drawings_left_heavy_and_right_up_light(uint8_t *buf, int width, int hei } static void -draw_box_drawings_right_heavy_and_left_up_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_right_heavy_and_left_up_light(struct buf *buf) { hline_middle_left(LIGHT); _hline_middle_right(LIGHT, HEAVY); @@ -635,7 +642,7 @@ draw_box_drawings_right_heavy_and_left_up_light(uint8_t *buf, int width, int hei } static void -draw_box_drawings_up_light_and_horizontal_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_light_and_horizontal_heavy(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(HEAVY); @@ -643,7 +650,7 @@ draw_box_drawings_up_light_and_horizontal_heavy(uint8_t *buf, int width, int hei } static void -draw_box_drawings_up_heavy_and_horizontal_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_heavy_and_horizontal_light(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(LIGHT); @@ -651,7 +658,7 @@ draw_box_drawings_up_heavy_and_horizontal_light(uint8_t *buf, int width, int hei } static void -draw_box_drawings_right_light_and_left_up_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_right_light_and_left_up_heavy(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(LIGHT); @@ -659,7 +666,7 @@ draw_box_drawings_right_light_and_left_up_heavy(uint8_t *buf, int width, int hei } static void -draw_box_drawings_left_light_and_right_up_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_left_light_and_right_up_heavy(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(HEAVY); @@ -667,7 +674,7 @@ draw_box_drawings_left_light_and_right_up_heavy(uint8_t *buf, int width, int hei } static void -draw_box_drawings_heavy_up_and_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_up_and_horizontal(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(HEAVY); @@ -675,7 +682,7 @@ draw_box_drawings_heavy_up_and_horizontal(uint8_t *buf, int width, int height, i } static void -draw_box_drawings_light_vertical_and_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_vertical_and_horizontal(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(LIGHT); @@ -684,7 +691,7 @@ draw_box_drawings_light_vertical_and_horizontal(uint8_t *buf, int width, int hei } static void -draw_box_drawings_left_heavy_and_right_vertical_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_left_heavy_and_right_vertical_light(struct buf *buf) { _hline_middle_left(LIGHT, HEAVY); hline_middle_right(LIGHT); @@ -693,7 +700,7 @@ draw_box_drawings_left_heavy_and_right_vertical_light(uint8_t *buf, int width, i } static void -draw_box_drawings_right_heavy_and_left_vertical_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_right_heavy_and_left_vertical_light(struct buf *buf) { hline_middle_left(LIGHT); _hline_middle_right(LIGHT, HEAVY); @@ -702,7 +709,7 @@ draw_box_drawings_right_heavy_and_left_vertical_light(uint8_t *buf, int width, i } static void -draw_box_drawings_vertical_light_and_horizontal_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_vertical_light_and_horizontal_heavy(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(HEAVY); @@ -711,7 +718,7 @@ draw_box_drawings_vertical_light_and_horizontal_heavy(uint8_t *buf, int width, i } static void -draw_box_drawings_up_heavy_and_down_horizontal_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_heavy_and_down_horizontal_light(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(LIGHT); @@ -720,7 +727,7 @@ draw_box_drawings_up_heavy_and_down_horizontal_light(uint8_t *buf, int width, in } static void -draw_box_drawings_down_heavy_and_up_horizontal_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_heavy_and_up_horizontal_light(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(LIGHT); @@ -729,7 +736,7 @@ draw_box_drawings_down_heavy_and_up_horizontal_light(uint8_t *buf, int width, in } static void -draw_box_drawings_vertical_heavy_and_horizontal_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_vertical_heavy_and_horizontal_light(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(LIGHT); @@ -738,7 +745,7 @@ draw_box_drawings_vertical_heavy_and_horizontal_light(uint8_t *buf, int width, i } static void -draw_box_drawings_left_up_heavy_and_right_down_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_left_up_heavy_and_right_down_light(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(LIGHT); @@ -747,7 +754,7 @@ draw_box_drawings_left_up_heavy_and_right_down_light(uint8_t *buf, int width, in } static void -draw_box_drawings_right_up_heavy_and_left_down_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_right_up_heavy_and_left_down_light(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(HEAVY); @@ -756,7 +763,7 @@ draw_box_drawings_right_up_heavy_and_left_down_light(uint8_t *buf, int width, in } static void -draw_box_drawings_left_down_heavy_and_right_up_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_left_down_heavy_and_right_up_light(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(LIGHT); @@ -765,7 +772,7 @@ draw_box_drawings_left_down_heavy_and_right_up_light(uint8_t *buf, int width, in } static void -draw_box_drawings_right_down_heavy_and_left_up_light(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_right_down_heavy_and_left_up_light(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(HEAVY); @@ -774,7 +781,7 @@ draw_box_drawings_right_down_heavy_and_left_up_light(uint8_t *buf, int width, in } static void -draw_box_drawings_down_light_and_up_horizontal_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_light_and_up_horizontal_heavy(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(HEAVY); @@ -783,7 +790,7 @@ draw_box_drawings_down_light_and_up_horizontal_heavy(uint8_t *buf, int width, in } static void -draw_box_drawings_up_light_and_down_horizontal_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_light_and_down_horizontal_heavy(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(HEAVY); @@ -792,7 +799,7 @@ draw_box_drawings_up_light_and_down_horizontal_heavy(uint8_t *buf, int width, in } static void -draw_box_drawings_right_light_and_left_vertical_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_right_light_and_left_vertical_heavy(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(LIGHT); @@ -801,7 +808,7 @@ draw_box_drawings_right_light_and_left_vertical_heavy(uint8_t *buf, int width, i } static void -draw_box_drawings_left_light_and_right_vertical_heavy(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_left_light_and_right_vertical_heavy(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(HEAVY); @@ -810,7 +817,7 @@ draw_box_drawings_left_light_and_right_vertical_heavy(uint8_t *buf, int width, i } static void -draw_box_drawings_heavy_vertical_and_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_vertical_and_horizontal(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(HEAVY); @@ -819,99 +826,95 @@ draw_box_drawings_heavy_vertical_and_horizontal(uint8_t *buf, int width, int hei } static void -draw_box_drawings_light_double_dash_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_double_dash_horizontal(struct buf *buf) { - draw_box_drawings_dash_horizontal( - buf, width, height, stride, dpi, 2, thickness(LIGHT, dpi), thickness(LIGHT, dpi)); + draw_box_drawings_dash_horizontal(buf, 2, thickness(LIGHT), thickness(LIGHT)); } static void -draw_box_drawings_heavy_double_dash_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_double_dash_horizontal(struct buf *buf) { - draw_box_drawings_dash_horizontal( - buf, width, height, stride, dpi, 2, thickness(HEAVY, dpi), thickness(LIGHT, dpi)); + draw_box_drawings_dash_horizontal(buf, 2, thickness(HEAVY), thickness(LIGHT)); } static void -draw_box_drawings_light_double_dash_vertical(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_double_dash_vertical(struct buf *buf) { - draw_box_drawings_dash_vertical( - buf, width, height, stride, dpi, 2, thickness(LIGHT, dpi), thickness(HEAVY, dpi)); + draw_box_drawings_dash_vertical(buf, 2, thickness(LIGHT), thickness(HEAVY)); } static void -draw_box_drawings_heavy_double_dash_vertical(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_double_dash_vertical(struct buf *buf) { - draw_box_drawings_dash_vertical( - buf, width, height, stride, dpi, 2, thickness(HEAVY, dpi), thickness(HEAVY, dpi)); + draw_box_drawings_dash_vertical(buf, 2, thickness(HEAVY), thickness(HEAVY)); } static void -draw_box_drawings_double_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_double_horizontal(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int mid = (height - thick * 3) / 2; + int thick = thickness(LIGHT); + int mid = (buf->height - thick * 3) / 2; - hline(0, width, mid, thick); - hline(0, width, mid + 2 * thick, thick); + hline(0, buf->width, mid, thick); + hline(0, buf->width, mid + 2 * thick, thick); } static void -draw_box_drawings_double_vertical(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_double_vertical(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int mid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int mid = (buf->width - thick * 3) / 2; - vline(0, height, mid, thick); - vline(0, height, mid + 2 * thick, thick); + vline(0, buf->height, mid, thick); + vline(0, buf->height, mid + 2 * thick, thick); } static void -draw_box_drawings_down_single_and_right_double(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_single_and_right_double(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick) / 2; vline_middle_down(LIGHT); - hline(vmid, width, hmid, thick); - hline(vmid, width, hmid + 2 * thick, thick); + hline(vmid, buf->width, hmid, thick); + hline(vmid, buf->width, hmid + 2 * thick, thick); } static void -draw_box_drawings_down_double_and_right_single(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_double_and_right_single(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick) / 2; + int vmid = (buf->width - thick * 3) / 2; hline_middle_right(LIGHT); - vline(hmid, height, vmid, thick); - vline(hmid, height, vmid + 2 * thick, thick); + vline(hmid, buf->height, vmid, thick); + vline(hmid, buf->height, vmid + 2 * thick, thick); } static void -draw_box_drawings_double_down_and_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_double_down_and_right(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick * 3) / 2; - vline(hmid, height, vmid, thick); - vline(hmid + 2 * thick, height, vmid + 2 * thick, thick); + vline(hmid, buf->height, vmid, thick); + vline(hmid + 2 * thick, buf->height, vmid + 2 * thick, thick); - hline(vmid, width, hmid, thick); - hline(vmid + 2 * thick, width, hmid + 2 * thick, thick); + hline(vmid, buf->width, hmid, thick); + hline(vmid + 2 * thick, buf->width, hmid + 2 * thick, thick); } static void -draw_box_drawings_down_single_and_left_double(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_single_and_left_double(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width + thick) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width + thick) / 2; vline_middle_down(LIGHT); @@ -920,51 +923,51 @@ draw_box_drawings_down_single_and_left_double(uint8_t *buf, int width, int heigh } static void -draw_box_drawings_down_double_and_left_single(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_double_and_left_single(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick) / 2; + int vmid = (buf->width - thick * 3) / 2; hline_middle_left(LIGHT); - vline(hmid, height, vmid, thick); - vline(hmid, height, vmid + 2 * thick, thick); + vline(hmid, buf->height, vmid, thick); + vline(hmid, buf->height, vmid + 2 * thick, thick); } static void -draw_box_drawings_double_down_and_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_double_down_and_left(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick * 3) / 2; - vline(hmid + 2 * thick, height, vmid, thick); - vline(hmid, height, vmid + 2 * thick, thick); + vline(hmid + 2 * thick, buf->height, vmid, thick); + vline(hmid, buf->height, vmid + 2 * thick, thick); hline(0, vmid + 2 * thick, hmid, thick); hline(0, vmid, hmid + 2 * thick, thick); } static void -draw_box_drawings_up_single_and_right_double(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_single_and_right_double(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick) / 2; vline_middle_up(LIGHT); - hline(vmid, width, hmid, thick); - hline(vmid, width, hmid + 2 * thick, thick); + hline(vmid, buf->width, hmid, thick); + hline(vmid, buf->width, hmid + 2 * thick, thick); } static void -draw_box_drawings_up_double_and_right_single(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_double_and_right_single(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height + thick) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height + thick) / 2; + int vmid = (buf->width - thick * 3) / 2; hline_middle_right(LIGHT); @@ -973,25 +976,25 @@ draw_box_drawings_up_double_and_right_single(uint8_t *buf, int width, int height } static void -draw_box_drawings_double_up_and_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_double_up_and_right(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick * 3) / 2; vline(0, hmid + 2 * thick, vmid, thick); vline(0, hmid, vmid + 2 * thick, thick); - hline(vmid + 2 * thick, width, hmid, thick); - hline(vmid, width, hmid + 2 * thick, thick); + hline(vmid + 2 * thick, buf->width, hmid, thick); + hline(vmid, buf->width, hmid + 2 * thick, thick); } static void -draw_box_drawings_up_single_and_left_double(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_single_and_left_double(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width + thick) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width + thick) / 2; vline_middle_up(LIGHT); @@ -1000,11 +1003,11 @@ draw_box_drawings_up_single_and_left_double(uint8_t *buf, int width, int height, } static void -draw_box_drawings_up_double_and_left_single(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_double_and_left_single(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height + thick) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height + thick) / 2; + int vmid = (buf->width - thick * 3) / 2; hline_middle_left(LIGHT); @@ -1013,11 +1016,11 @@ draw_box_drawings_up_double_and_left_single(uint8_t *buf, int width, int height, } static void -draw_box_drawings_double_up_and_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_double_up_and_left(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick * 3) / 2; vline(0, hmid + 0 * thick + thick, vmid, thick); vline(0, hmid + 2 * thick + thick, vmid + 2 * thick, thick); @@ -1027,52 +1030,52 @@ draw_box_drawings_double_up_and_left(uint8_t *buf, int width, int height, int st } static void -draw_box_drawings_vertical_single_and_right_double(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_vertical_single_and_right_double(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick) / 2; vline_middle_up(LIGHT); vline_middle_down(LIGHT); - hline(vmid, width, hmid, thick); - hline(vmid, width, hmid + 2 * thick, thick); + hline(vmid, buf->width, hmid, thick); + hline(vmid, buf->width, hmid + 2 * thick, thick); } static void -draw_box_drawings_vertical_double_and_right_single(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_vertical_double_and_right_single(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int vmid = (buf->width - thick * 3) / 2; - hline(vmid + 2 * thick, width, (height - thick) / 2, thick); + hline(vmid + 2 * thick, buf->width, (buf->height - thick) / 2, thick); - vline(0, height, vmid, thick); - vline(0, height, vmid + 2 * thick, thick); + vline(0, buf->height, vmid, thick); + vline(0, buf->height, vmid + 2 * thick, thick); } static void -draw_box_drawings_double_vertical_and_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_double_vertical_and_right(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick * 3) / 2; - vline(0, height, vmid, thick); + vline(0, buf->height, vmid, thick); vline(0, hmid, vmid + 2 * thick, thick); - vline(hmid + 2 * thick, height, vmid + 2 * thick, thick); + vline(hmid + 2 * thick, buf->height, vmid + 2 * thick, thick); - hline(vmid + 2 * thick, width, hmid, thick); - hline(vmid + 2 * thick, width, hmid + 2 * thick, thick); + hline(vmid + 2 * thick, buf->width, hmid, thick); + hline(vmid + 2 * thick, buf->width, hmid + 2 * thick, thick); } static void -draw_box_drawings_vertical_single_and_left_double(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_vertical_single_and_left_double(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width + thick) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width + thick) / 2; vline_middle_up(LIGHT); vline_middle_down(LIGHT); @@ -1082,92 +1085,92 @@ draw_box_drawings_vertical_single_and_left_double(uint8_t *buf, int width, int h } static void -draw_box_drawings_vertical_double_and_left_single(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_vertical_double_and_left_single(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int vmid = (buf->width - thick * 3) / 2; - hline(0, vmid, (height - thick) / 2, thick); + hline(0, vmid, (buf->height - thick) / 2, thick); - vline(0, height, vmid, thick); - vline(0, height, vmid + 2 * thick, thick); + vline(0, buf->height, vmid, thick); + vline(0, buf->height, vmid + 2 * thick, thick); } static void -draw_box_drawings_double_vertical_and_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_double_vertical_and_left(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick * 3) / 2; - vline(0, height, vmid + 2 * thick, thick); + vline(0, buf->height, vmid + 2 * thick, thick); vline(0, hmid, vmid, thick); - vline(hmid + 2 * thick, height, vmid, thick); + vline(hmid + 2 * thick, buf->height, vmid, thick); hline(0, vmid + thick, hmid, thick); hline(0, vmid, hmid + 2 * thick, thick); } static void -draw_box_drawings_down_single_and_horizontal_double(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_single_and_horizontal_double(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; - vline(hmid + 2 * thick, height, (width - thick) / 2, thick); + vline(hmid + 2 * thick, buf->height, (buf->width - thick) / 2, thick); - hline(0, width, hmid, thick); - hline(0, width, hmid + 2 * thick, thick); + hline(0, buf->width, hmid, thick); + hline(0, buf->width, hmid + 2 * thick, thick); } static void -draw_box_drawings_down_double_and_horizontal_single(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_down_double_and_horizontal_single(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick) / 2; + int vmid = (buf->width - thick * 3) / 2; hline_middle_left(LIGHT); hline_middle_right(LIGHT); - vline(hmid, height, vmid, thick); - vline(hmid, height, vmid + 2 * thick, thick); + vline(hmid, buf->height, vmid, thick); + vline(hmid, buf->height, vmid + 2 * thick, thick); } static void -draw_box_drawings_double_down_and_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_double_down_and_horizontal(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick * 3) / 2; - hline(0, width, hmid, thick); + hline(0, buf->width, hmid, thick); hline(0, vmid, hmid + 2 * thick, thick); - hline(vmid + 2 * thick, width, hmid + 2 * thick, thick); + hline(vmid + 2 * thick, buf->width, hmid + 2 * thick, thick); - vline(hmid + 2 * thick, height, vmid, thick); - vline(hmid + 2 * thick, height, vmid + 2 * thick, thick); + vline(hmid + 2 * thick, buf->height, vmid, thick); + vline(hmid + 2 * thick, buf->height, vmid + 2 * thick, thick); } static void -draw_box_drawings_up_single_and_horizontal_double(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_single_and_horizontal_double(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick) / 2; vline(0, hmid, vmid, thick); - hline(0, width, hmid, thick); - hline(0, width, hmid + 2 * thick, thick); + hline(0, buf->width, hmid, thick); + hline(0, buf->width, hmid + 2 * thick, thick); } static void -draw_box_drawings_up_double_and_horizontal_single(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_up_double_and_horizontal_single(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick) / 2; + int vmid = (buf->width - thick * 3) / 2; hline_middle_left(LIGHT); hline_middle_right(LIGHT); @@ -1177,62 +1180,62 @@ draw_box_drawings_up_double_and_horizontal_single(uint8_t *buf, int width, int h } static void -draw_box_drawings_double_up_and_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_double_up_and_horizontal(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick * 3) / 2; vline(0, hmid, vmid, thick); vline(0, hmid, vmid + 2 * thick, thick); hline(0, vmid + thick, hmid, thick); - hline(vmid + 2 * thick, width, hmid, thick); - hline(0, width, hmid + 2 * thick, thick); + hline(vmid + 2 * thick, buf->width, hmid, thick); + hline(0, buf->width, hmid + 2 * thick, thick); } static void -draw_box_drawings_vertical_single_and_horizontal_double(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_vertical_single_and_horizontal_double(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; vline_middle_up(LIGHT); vline_middle_down(LIGHT); - hline(0, width, hmid, thick); - hline(0, width, hmid + 2 * thick, thick); + hline(0, buf->width, hmid, thick); + hline(0, buf->width, hmid + 2 * thick, thick); } static void -draw_box_drawings_vertical_double_and_horizontal_single(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_vertical_double_and_horizontal_single(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int vmid = (buf->width - thick * 3) / 2; hline_middle_left(LIGHT); hline_middle_right(LIGHT); - vline(0, height, vmid, thick); - vline(0, height, vmid + 2 * thick, thick); + vline(0, buf->height, vmid, thick); + vline(0, buf->height, vmid + 2 * thick, thick); } static void -draw_box_drawings_double_vertical_and_horizontal(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_double_vertical_and_horizontal(struct buf *buf) { - int thick = thickness(LIGHT, dpi); - int hmid = (height - thick * 3) / 2; - int vmid = (width - thick * 3) / 2; + int thick = thickness(LIGHT); + int hmid = (buf->height - thick * 3) / 2; + int vmid = (buf->width - thick * 3) / 2; hline(0, vmid, hmid, thick); - hline(vmid + 2 * thick, width, hmid, thick); + hline(vmid + 2 * thick, buf->width, hmid, thick); hline(0, vmid, hmid + 2 * thick, thick); - hline(vmid + 2 * thick, width, hmid + 2 * thick, thick); + hline(vmid + 2 * thick, buf->width, hmid + 2 * thick, thick); vline(0, hmid, vmid, thick); vline(0, hmid, vmid + 2 * thick, thick); - vline(hmid + 2 * thick, height, vmid, thick); - vline(hmid + 2 * thick, height, vmid + 2 * thick, thick); + vline(hmid + 2 * thick, buf->height, vmid, thick); + vline(hmid + 2 * thick, buf->height, vmid + 2 * thick, thick); } #define cubic_bezier_x(t) __extension__ \ @@ -1252,14 +1255,14 @@ draw_box_drawings_double_vertical_and_horizontal(uint8_t *buf, int width, int he }) static void -draw_box_drawings_light_arc(wchar_t wc, uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_arc(wchar_t wc, struct buf *buf) { - int thick = thickness(LIGHT, dpi); + int thick = thickness(LIGHT); int delta = thick / 2; int extra = thick % 2; - int hw = (width - thick) / 2; - int hh = (height - thick) / 2; + int hw = (buf->width - thick) / 2; + int hh = (buf->height - thick) / 2; int start_x, start_y, end_x, end_y, c1_x, c1_y, c2_x, c2_y; if (wc == L'╭') { @@ -1270,7 +1273,7 @@ draw_box_drawings_light_arc(wchar_t wc, uint8_t *buf, int width, int height, int end_y = hh; c1_x = hw; - c1_y = 3 * height / 4; + c1_y = 3 * buf->height / 4; c2_x = hw; c2_y = hh; @@ -1282,7 +1285,7 @@ draw_box_drawings_light_arc(wchar_t wc, uint8_t *buf, int width, int height, int end_y = hh; c1_x = hw; - c1_y = 3 * height / 4; + c1_y = 3 * buf->height / 4; c2_x = hw; c2_y = hh; @@ -1294,7 +1297,7 @@ draw_box_drawings_light_arc(wchar_t wc, uint8_t *buf, int width, int height, int end_y = hh; c1_x = hw; - c1_y = height / 4; + c1_y = buf->height / 4; c2_x = hw; c2_y = hh; @@ -1308,65 +1311,65 @@ draw_box_drawings_light_arc(wchar_t wc, uint8_t *buf, int width, int height, int end_y = hh; c1_x = hw; - c1_y = height / 4; + c1_y = buf->height / 4; c2_x = hw; c2_y = hh; } - int num_samples = height * 4; + int num_samples = buf->height * 4; for (size_t i = 0; i < num_samples + 1; i++) { double t = (double)i / num_samples; int p_x = round(cubic_bezier_x(t)); int p_y = round(cubic_bezier_y(t)); - for (int y = max(p_y - delta, 0); y < min(p_y + delta + extra, height); y++) { - for (int x = max(p_x - delta, 0); x < min(p_x + delta + extra, width); x++) { + for (int y = max(p_y - delta, 0); y < min(p_y + delta + extra, buf->height); y++) { + for (int x = max(p_x - delta, 0); x < min(p_x + delta + extra, buf->width); x++) { size_t ofs = x / 8; size_t bit_no = x % 8; - buf[y * stride + ofs] |= 1 << bit_no; + buf->data[y * buf->stride + ofs] |= 1 << bit_no; } } } if (wc == L'╭' || wc == L'╰') { - for (int x = 2 * hw; x < width; x++) { - for (int y = max(hh - delta, 0); y < min(hh + delta + extra, height); y++) { + for (int x = 2 * hw; x < buf->width; x++) { + for (int y = max(hh - delta, 0); y < min(hh + delta + extra, buf->height); y++) { size_t ofs = x / 8; size_t bit_no = x % 8; - buf[y * stride + ofs] |= 1 << bit_no; + buf->data[y * buf->stride + ofs] |= 1 << bit_no; } } } if (wc == L'╭' || wc == L'╮') { - for (int y = 2 * hh; y < height; y++) { - for (int x = max(hw - delta, 0); x < min(hw + delta + extra, width); x++) { + for (int y = 2 * hh; y < buf->height; y++) { + for (int x = max(hw - delta, 0); x < min(hw + delta + extra, buf->width); x++) { size_t ofs = x / 8; size_t bit_no = x % 8; - buf[y * stride + ofs] |= 1 << bit_no; + buf->data[y * buf->stride + ofs] |= 1 << bit_no; } } } } static void -draw_box_drawings_light_diagonal(uint8_t *buf, int width, int height, int stride, int dpi, double k, double c) +draw_box_drawings_light_diagonal(struct buf *buf, double k, double c) { #define linear_equation(x) (k * (x) + c) - int num_samples = width * 16; + int num_samples = buf->width * 16; for (int i = 0; i < num_samples; i++) { double x = i / 16.; int col = round(x); int row = round(linear_equation(x)); - if (row >= 0 && row < height) { + if (row >= 0 && row < buf->height) { size_t ofs = col / 8; size_t bit_no = col % 8; - buf[row * stride + ofs] |= 1 << bit_no; + buf->data[row * buf->stride + ofs] |= 1 << bit_no; } } @@ -1374,276 +1377,276 @@ draw_box_drawings_light_diagonal(uint8_t *buf, int width, int height, int stride } static void -draw_box_drawings_light_diagonal_upper_right_to_lower_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_diagonal_upper_right_to_lower_left(struct buf *buf) { /* y = k * x + c */ - double c = height - 1; - double k = (0 - (height - 1)) / (double)(width - 1 - 0); - draw_box_drawings_light_diagonal(buf, width, height, stride, dpi, k, c); + double c = buf->height - 1; + double k = (0 - (buf->height - 1)) / (double)(buf->width - 1 - 0); + draw_box_drawings_light_diagonal(buf, k, c); } static void -draw_box_drawings_light_diagonal_upper_left_to_lower_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_diagonal_upper_left_to_lower_right(struct buf *buf) { /* y = k * x + c */ double c = 0; - double k = (height - 1 - 0) / (double)(width - 1 - 0); - draw_box_drawings_light_diagonal(buf, width, height, stride, dpi, k, c); + double k = (buf->height - 1 - 0) / (double)(buf->width - 1 - 0); + draw_box_drawings_light_diagonal(buf, k, c); } static void -draw_box_drawings_light_diagonal_cross(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_diagonal_cross(struct buf *buf) { - draw_box_drawings_light_diagonal_upper_right_to_lower_left(buf, width, height, stride, dpi); - draw_box_drawings_light_diagonal_upper_left_to_lower_right(buf, width, height, stride, dpi); + draw_box_drawings_light_diagonal_upper_right_to_lower_left(buf); + draw_box_drawings_light_diagonal_upper_left_to_lower_right(buf); } static void -draw_box_drawings_light_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_left(struct buf *buf) { hline_middle_left(LIGHT); } static void -draw_box_drawings_light_up(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_up(struct buf *buf) { vline_middle_up(LIGHT); } static void -draw_box_drawings_light_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_right(struct buf *buf) { hline_middle_right(LIGHT); } static void -draw_box_drawings_light_down(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_down(struct buf *buf) { vline_middle_down(LIGHT); } static void -draw_box_drawings_heavy_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_left(struct buf *buf) { hline_middle_left(HEAVY); } static void -draw_box_drawings_heavy_up(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_up(struct buf *buf) { vline_middle_up(HEAVY); } static void -draw_box_drawings_heavy_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_right(struct buf *buf) { hline_middle_right(HEAVY); } static void -draw_box_drawings_heavy_down(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_down(struct buf *buf) { vline_middle_down(HEAVY); } static void -draw_box_drawings_light_left_and_heavy_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_left_and_heavy_right(struct buf *buf) { hline_middle_left(LIGHT); hline_middle_right(HEAVY); } static void -draw_box_drawings_light_up_and_heavy_down(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_light_up_and_heavy_down(struct buf *buf) { vline_middle_up(LIGHT); vline_middle_down(HEAVY); } static void -draw_box_drawings_heavy_left_and_light_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_left_and_light_right(struct buf *buf) { hline_middle_left(HEAVY); hline_middle_right(LIGHT); } static void -draw_box_drawings_heavy_up_and_light_down(uint8_t *buf, int width, int height, int stride, int dpi) +draw_box_drawings_heavy_up_and_light_down(struct buf *buf) { vline_middle_up(HEAVY); vline_middle_down(LIGHT); } static void -draw_upper_half_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_upper_half_block(struct buf *buf) { - rect(0, 0, width, round(height / 2.)); + rect(0, 0, buf->width, round(buf->height / 2.)); } static void -draw_lower_one_eighth_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_lower_one_eighth_block(struct buf *buf) { - rect(0, height - round(height / 8.), width, height); + rect(0, buf->height - round(buf->height / 8.), buf->width, buf->height); } static void -draw_lower_one_quarter_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_lower_one_quarter_block(struct buf *buf) { - rect(0, height - round(height / 4.), width, height); + rect(0, buf->height - round(buf->height / 4.), buf->width, buf->height); } static void -draw_lower_three_eighths_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_lower_three_eighths_block(struct buf *buf) { - rect(0, height - round(3. * height / 8.), width, height); + rect(0, buf->height - round(3. * buf->height / 8.), buf->width, buf->height); } static void -draw_lower_half_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_lower_half_block(struct buf *buf) { - rect(0, height - round(height / 2.), width, height); + rect(0, buf->height - round(buf->height / 2.), buf->width, buf->height); } static void -draw_lower_five_eighths_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_lower_five_eighths_block(struct buf *buf) { - rect(0, height - round(5. * height / 8.), width, height); + rect(0, buf->height - round(5. * buf->height / 8.), buf->width, buf->height); } static void -draw_lower_three_quarters_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_lower_three_quarters_block(struct buf *buf) { - rect(0, height - round(3. * height / 4.), width, height); + rect(0, buf->height - round(3. * buf->height / 4.), buf->width, buf->height); } static void -draw_lower_seven_eighths_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_lower_seven_eighths_block(struct buf *buf) { - rect(0, height - round(7. * height / 8.), width, height); + rect(0, buf->height - round(7. * buf->height / 8.), buf->width, buf->height); } static void -draw_full_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_full_block(struct buf *buf) { - rect(0, 0, width, height); + rect(0, 0, buf->width, buf->height); } static void -draw_left_seven_eighths_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_left_seven_eighths_block(struct buf *buf) { - rect(0, 0, round(7. * width / 8.), height); + rect(0, 0, round(7. * buf->width / 8.), buf->height); } static void -draw_left_three_quarters_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_left_three_quarters_block(struct buf *buf) { - rect(0, 0, round(3. * width / 4.), height); + rect(0, 0, round(3. * buf->width / 4.), buf->height); } static void -draw_left_five_eighths_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_left_five_eighths_block(struct buf *buf) { - rect(0, 0, round(5. * width / 8.), height); + rect(0, 0, round(5. * buf->width / 8.), buf->height); } static void -draw_left_half_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_left_half_block(struct buf *buf) { - rect(0, 0, round(width / 2.), height); + rect(0, 0, round(buf->width / 2.), buf->height); } static void -draw_left_three_eighths_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_left_three_eighths_block(struct buf *buf) { - rect(0, 0, round(3. * width / 8.), height); + rect(0, 0, round(3. * buf->width / 8.), buf->height); } static void -draw_left_one_quarter_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_left_one_quarter_block(struct buf *buf) { - rect(0, 0, round(width / 4.), height); + rect(0, 0, round(buf->width / 4.), buf->height); } static void -draw_left_one_eighth_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_left_one_eighth_block(struct buf *buf) { - rect(0, 0, round(width / 8.), height); + rect(0, 0, round(buf->width / 8.), buf->height); } static void -draw_right_half_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_right_half_block(struct buf *buf) { - rect(round(width / 2.), 0, width, height); + rect(round(buf->width / 2.), 0, buf->width, buf->height); } static void -draw_light_shade(uint8_t *buf, int width, int height, int stride, int dpi) +draw_light_shade(struct buf *buf) { - for (size_t row = 0; row < height; row += 2) { - for (size_t col = 0; col < width; col += 2) { + for (size_t row = 0; row < buf->height; row += 2) { + for (size_t col = 0; col < buf->width; col += 2) { size_t idx = col / 8; size_t bit_no = col % 8; - buf[row * stride + idx] |= 1 << bit_no; + buf->data[row * buf->stride + idx] |= 1 << bit_no; } } } static void -draw_medium_shade(uint8_t *buf, int width, int height, int stride, int dpi) +draw_medium_shade(struct buf *buf) { - for (size_t row = 0; row < height; row++) { - for (size_t col = row % 2; col < width; col += 2) { + for (size_t row = 0; row < buf->height; row++) { + for (size_t col = row % 2; col < buf->width; col += 2) { size_t idx = col / 8; size_t bit_no = col % 8; - buf[row * stride + idx] |= 1 << bit_no; + buf->data[row * buf->stride + idx] |= 1 << bit_no; } } } static void -draw_dark_shade(uint8_t *buf, int width, int height, int stride, int dpi) +draw_dark_shade(struct buf *buf) { - for (size_t row = 0; row < height; row++) { - for (size_t col = 0; col < width; col += 1 + row % 2) { + for (size_t row = 0; row < buf->height; row++) { + for (size_t col = 0; col < buf->width; col += 1 + row % 2) { size_t idx = col / 8; size_t bit_no = col % 8; - buf[row * stride + idx] |= 1 << bit_no; + buf->data[row * buf->stride + idx] |= 1 << bit_no; } } } static void -draw_upper_one_eighth_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_upper_one_eighth_block(struct buf *buf) { - rect(0, 0, width, round(height / 8.)); + rect(0, 0, buf->width, round(buf->height / 8.)); } static void -draw_right_one_eighth_block(uint8_t *buf, int width, int height, int stride, int dpi) +draw_right_one_eighth_block(struct buf *buf) { - rect(width - round(width / 8.), 0, width, height); + rect(buf->width - round(buf->width / 8.), 0, buf->width, buf->height); } static void -draw_quadrant_lower_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_quadrant_lower_left(struct buf *buf) { quad_lower_left(); } static void -draw_quadrant_lower_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_quadrant_lower_right(struct buf *buf) { quad_lower_right(); } static void -draw_quadrant_upper_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_quadrant_upper_left(struct buf *buf) { quad_upper_left(); } static void -draw_quadrant_upper_left_and_lower_left_and_lower_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_quadrant_upper_left_and_lower_left_and_lower_right(struct buf *buf) { quad_upper_left(); quad_lower_left(); @@ -1651,14 +1654,14 @@ draw_quadrant_upper_left_and_lower_left_and_lower_right(uint8_t *buf, int width, } static void -draw_quadrant_upper_left_and_lower_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_quadrant_upper_left_and_lower_right(struct buf *buf) { quad_upper_left(); quad_lower_right(); } static void -draw_quadrant_upper_left_and_upper_right_and_lower_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_quadrant_upper_left_and_upper_right_and_lower_left(struct buf *buf) { quad_upper_left(); quad_upper_right(); @@ -1666,7 +1669,7 @@ draw_quadrant_upper_left_and_upper_right_and_lower_left(uint8_t *buf, int width, } static void -draw_quadrant_upper_left_and_upper_right_and_lower_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_quadrant_upper_left_and_upper_right_and_lower_right(struct buf *buf) { quad_upper_left(); quad_upper_right(); @@ -1674,35 +1677,35 @@ draw_quadrant_upper_left_and_upper_right_and_lower_right(uint8_t *buf, int width } static void -draw_quadrant_upper_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_quadrant_upper_right(struct buf *buf) { quad_upper_right(); } static void -draw_quadrant_upper_right_and_lower_left(uint8_t *buf, int width, int height, int stride, int dpi) +draw_quadrant_upper_right_and_lower_left(struct buf *buf) { quad_upper_right(); quad_lower_left(); } static void -draw_quadrant_upper_right_and_lower_left_and_lower_right(uint8_t *buf, int width, int height, int stride, int dpi) +draw_quadrant_upper_right_and_lower_left_and_lower_right(struct buf *buf) { quad_upper_right(); quad_lower_left(); quad_lower_right(); } -#define sextant_upper_left() rect(0, 0, round(width / 2.), round(height / 3.)) -#define sextant_middle_left() rect(0, height / 3, round(width / 2.), round(2. * height / 3.)) -#define sextant_lower_left() rect(0, 2 * height / 3, round(width / 2.), height) -#define sextant_upper_right() rect(width / 2, 0, width, round(height / 3.)) -#define sextant_middle_right() rect(width / 2, height / 3, width, round(2. * height / 3.)) -#define sextant_lower_right() rect(width / 2, 2 * height / 3, width, height) +#define sextant_upper_left() rect(0, 0, round(buf->width / 2.), round(buf->height / 3.)) +#define sextant_middle_left() rect(0, buf->height / 3, round(buf->width / 2.), round(2. * buf->height / 3.)) +#define sextant_lower_left() rect(0, 2 * buf->height / 3, round(buf->width / 2.), buf->height) +#define sextant_upper_right() rect(buf->width / 2, 0, buf->width, round(buf->height / 3.)) +#define sextant_middle_right() rect(buf->width / 2, buf->height / 3, buf->width, round(2. * buf->height / 3.)) +#define sextant_lower_right() rect(buf->width / 2, 2 * buf->height / 3, buf->width, buf->height) static void -draw_sextant(wchar_t wc, uint8_t *buf, int width, int height, int stride, int dpi) +draw_sextant(wchar_t wc, struct buf *buf) { /* * Each byte encodes one sextant: @@ -1818,7 +1821,7 @@ draw_sextant(wchar_t wc, uint8_t *buf, int width, int height, int stride, int dp } static void -draw_glyph(wchar_t wc, uint8_t *buf, int width, int height, int stride, int dpi) +draw_glyph(wchar_t wc, struct buf *buf) { #if defined(__GNUC__) #pragma GCC diagnostic push @@ -1826,174 +1829,174 @@ draw_glyph(wchar_t wc, uint8_t *buf, int width, int height, int stride, int dpi) #endif switch (wc) { - case 0x2500: draw_box_drawings_light_horizontal(buf, width, height, stride, dpi); break; - case 0x2501: draw_box_drawings_heavy_horizontal(buf, width, height, stride, dpi); break; - case 0x2502: draw_box_drawings_light_vertical(buf, width, height, stride, dpi); break; - case 0x2503: draw_box_drawings_heavy_vertical(buf, width, height, stride, dpi); break; - case 0x2504: draw_box_drawings_light_triple_dash_horizontal(buf, width, height, stride, dpi); break; - case 0x2505: draw_box_drawings_heavy_triple_dash_horizontal(buf, width, height, stride, dpi); break; - case 0x2506: draw_box_drawings_light_triple_dash_vertical(buf, width, height, stride, dpi); break; - case 0x2507: draw_box_drawings_heavy_triple_dash_vertical(buf, width, height, stride, dpi); break; - case 0x2508: draw_box_drawings_light_quadruple_dash_horizontal(buf, width, height, stride, dpi); break; - case 0x2509: draw_box_drawings_heavy_quadruple_dash_horizontal(buf, width, height, stride, dpi); break; - case 0x250a: draw_box_drawings_light_quadruple_dash_vertical(buf, width, height, stride, dpi); break; - case 0x250b: draw_box_drawings_heavy_quadruple_dash_vertical(buf, width, height, stride, dpi); break; - case 0x250c: draw_box_drawings_light_down_and_right(buf, width, height, stride, dpi); break; - case 0x250d: draw_box_drawings_down_light_and_right_heavy(buf, width, height, stride, dpi); break; - case 0x250e: draw_box_drawings_down_heavy_and_right_light(buf, width, height, stride, dpi); break; - case 0x250f: draw_box_drawings_heavy_down_and_right(buf, width, height, stride, dpi); break; + case 0x2500: draw_box_drawings_light_horizontal(buf); break; + case 0x2501: draw_box_drawings_heavy_horizontal(buf); break; + case 0x2502: draw_box_drawings_light_vertical(buf); break; + case 0x2503: draw_box_drawings_heavy_vertical(buf); break; + case 0x2504: draw_box_drawings_light_triple_dash_horizontal(buf); break; + case 0x2505: draw_box_drawings_heavy_triple_dash_horizontal(buf); break; + case 0x2506: draw_box_drawings_light_triple_dash_vertical(buf); break; + case 0x2507: draw_box_drawings_heavy_triple_dash_vertical(buf); break; + case 0x2508: draw_box_drawings_light_quadruple_dash_horizontal(buf); break; + case 0x2509: draw_box_drawings_heavy_quadruple_dash_horizontal(buf); break; + case 0x250a: draw_box_drawings_light_quadruple_dash_vertical(buf); break; + case 0x250b: draw_box_drawings_heavy_quadruple_dash_vertical(buf); break; + case 0x250c: draw_box_drawings_light_down_and_right(buf); break; + case 0x250d: draw_box_drawings_down_light_and_right_heavy(buf); break; + case 0x250e: draw_box_drawings_down_heavy_and_right_light(buf); break; + case 0x250f: draw_box_drawings_heavy_down_and_right(buf); break; - case 0x2510: draw_box_drawings_light_down_and_left(buf, width, height, stride, dpi); break; - case 0x2511: draw_box_drawings_down_light_and_left_heavy(buf, width, height, stride, dpi); break; - case 0x2512: draw_box_drawings_down_heavy_and_left_light(buf, width, height, stride, dpi); break; - case 0x2513: draw_box_drawings_heavy_down_and_left(buf, width, height, stride, dpi); break; - case 0x2514: draw_box_drawings_light_up_and_right(buf, width, height, stride, dpi); break; - case 0x2515: draw_box_drawings_up_light_and_right_heavy(buf, width, height, stride, dpi); break; - case 0x2516: draw_box_drawings_up_heavy_and_right_light(buf, width, height, stride, dpi); break; - case 0x2517: draw_box_drawings_heavy_up_and_right(buf, width, height, stride, dpi); break; - case 0x2518: draw_box_drawings_light_up_and_left(buf, width, height, stride, dpi); break; - case 0x2519: draw_box_drawings_up_light_and_left_heavy(buf, width, height, stride, dpi); break; - case 0x251a: draw_box_drawings_up_heavy_and_left_light(buf, width, height, stride, dpi); break; - case 0x251b: draw_box_drawings_heavy_up_and_left(buf, width, height, stride, dpi); break; - case 0x251c: draw_box_drawings_light_vertical_and_right(buf, width, height, stride, dpi); break; - case 0x251d: draw_box_drawings_vertical_light_and_right_heavy(buf, width, height, stride, dpi); break; - case 0x251e: draw_box_drawings_up_heavy_and_right_down_light(buf, width, height, stride, dpi); break; - case 0x251f: draw_box_drawings_down_heavy_and_right_up_light(buf, width, height, stride, dpi); break; + case 0x2510: draw_box_drawings_light_down_and_left(buf); break; + case 0x2511: draw_box_drawings_down_light_and_left_heavy(buf); break; + case 0x2512: draw_box_drawings_down_heavy_and_left_light(buf); break; + case 0x2513: draw_box_drawings_heavy_down_and_left(buf); break; + case 0x2514: draw_box_drawings_light_up_and_right(buf); break; + case 0x2515: draw_box_drawings_up_light_and_right_heavy(buf); break; + case 0x2516: draw_box_drawings_up_heavy_and_right_light(buf); break; + case 0x2517: draw_box_drawings_heavy_up_and_right(buf); break; + case 0x2518: draw_box_drawings_light_up_and_left(buf); break; + case 0x2519: draw_box_drawings_up_light_and_left_heavy(buf); break; + case 0x251a: draw_box_drawings_up_heavy_and_left_light(buf); break; + case 0x251b: draw_box_drawings_heavy_up_and_left(buf); break; + case 0x251c: draw_box_drawings_light_vertical_and_right(buf); break; + case 0x251d: draw_box_drawings_vertical_light_and_right_heavy(buf); break; + case 0x251e: draw_box_drawings_up_heavy_and_right_down_light(buf); break; + case 0x251f: draw_box_drawings_down_heavy_and_right_up_light(buf); break; - case 0x2520: draw_box_drawings_vertical_heavy_and_right_light(buf, width, height, stride, dpi); break; - case 0x2521: draw_box_drawings_down_light_and_right_up_heavy(buf, width, height, stride, dpi); break; - case 0x2522: draw_box_drawings_up_light_and_right_down_heavy(buf, width, height, stride, dpi); break; - case 0x2523: draw_box_drawings_heavy_vertical_and_right(buf, width, height, stride, dpi); break; - case 0x2524: draw_box_drawings_light_vertical_and_left(buf, width, height, stride, dpi); break; - case 0x2525: draw_box_drawings_vertical_light_and_left_heavy(buf, width, height, stride, dpi); break; - case 0x2526: draw_box_drawings_up_heavy_and_left_down_light(buf, width, height, stride, dpi); break; - case 0x2527: draw_box_drawings_down_heavy_and_left_up_light(buf, width, height, stride, dpi); break; - case 0x2528: draw_box_drawings_vertical_heavy_and_left_light(buf, width, height, stride, dpi); break; - case 0x2529: draw_box_drawings_down_light_and_left_up_heavy(buf, width, height, stride, dpi); break; - case 0x252a: draw_box_drawings_up_light_and_left_down_heavy(buf, width, height, stride, dpi); break; - case 0x252b: draw_box_drawings_heavy_vertical_and_left(buf, width, height, stride, dpi); break; - case 0x252c: draw_box_drawings_light_down_and_horizontal(buf, width, height, stride, dpi); break; - case 0x252d: draw_box_drawings_left_heavy_and_right_down_light(buf, width, height, stride, dpi); break; - case 0x252e: draw_box_drawings_right_heavy_and_left_down_light(buf, width, height, stride, dpi); break; - case 0x252f: draw_box_drawings_down_light_and_horizontal_heavy(buf, width, height, stride, dpi); break; + case 0x2520: draw_box_drawings_vertical_heavy_and_right_light(buf); break; + case 0x2521: draw_box_drawings_down_light_and_right_up_heavy(buf); break; + case 0x2522: draw_box_drawings_up_light_and_right_down_heavy(buf); break; + case 0x2523: draw_box_drawings_heavy_vertical_and_right(buf); break; + case 0x2524: draw_box_drawings_light_vertical_and_left(buf); break; + case 0x2525: draw_box_drawings_vertical_light_and_left_heavy(buf); break; + case 0x2526: draw_box_drawings_up_heavy_and_left_down_light(buf); break; + case 0x2527: draw_box_drawings_down_heavy_and_left_up_light(buf); break; + case 0x2528: draw_box_drawings_vertical_heavy_and_left_light(buf); break; + case 0x2529: draw_box_drawings_down_light_and_left_up_heavy(buf); break; + case 0x252a: draw_box_drawings_up_light_and_left_down_heavy(buf); break; + case 0x252b: draw_box_drawings_heavy_vertical_and_left(buf); break; + case 0x252c: draw_box_drawings_light_down_and_horizontal(buf); break; + case 0x252d: draw_box_drawings_left_heavy_and_right_down_light(buf); break; + case 0x252e: draw_box_drawings_right_heavy_and_left_down_light(buf); break; + case 0x252f: draw_box_drawings_down_light_and_horizontal_heavy(buf); break; - case 0x2530: draw_box_drawings_down_heavy_and_horizontal_light(buf, width, height, stride, dpi); break; - case 0x2531: draw_box_drawings_right_light_and_left_down_heavy(buf, width, height, stride, dpi); break; - case 0x2532: draw_box_drawings_left_light_and_right_down_heavy(buf, width, height, stride, dpi); break; - case 0x2533: draw_box_drawings_heavy_down_and_horizontal(buf, width, height, stride, dpi); break; - case 0x2534: draw_box_drawings_light_up_and_horizontal(buf, width, height, stride, dpi); break; - case 0x2535: draw_box_drawings_left_heavy_and_right_up_light(buf, width, height, stride, dpi); break; - case 0x2536: draw_box_drawings_right_heavy_and_left_up_light(buf, width, height, stride, dpi); break; - case 0x2537: draw_box_drawings_up_light_and_horizontal_heavy(buf, width, height, stride, dpi); break; - case 0x2538: draw_box_drawings_up_heavy_and_horizontal_light(buf, width, height, stride, dpi); break; - case 0x2539: draw_box_drawings_right_light_and_left_up_heavy(buf, width, height, stride, dpi); break; - case 0x253a: draw_box_drawings_left_light_and_right_up_heavy(buf, width, height, stride, dpi); break; - case 0x253b: draw_box_drawings_heavy_up_and_horizontal(buf, width, height, stride, dpi); break; - case 0x253c: draw_box_drawings_light_vertical_and_horizontal(buf, width, height, stride, dpi); break; - case 0x253d: draw_box_drawings_left_heavy_and_right_vertical_light(buf, width, height, stride, dpi); break; - case 0x253e: draw_box_drawings_right_heavy_and_left_vertical_light(buf, width, height, stride, dpi); break; - case 0x253f: draw_box_drawings_vertical_light_and_horizontal_heavy(buf, width, height, stride, dpi); break; + case 0x2530: draw_box_drawings_down_heavy_and_horizontal_light(buf); break; + case 0x2531: draw_box_drawings_right_light_and_left_down_heavy(buf); break; + case 0x2532: draw_box_drawings_left_light_and_right_down_heavy(buf); break; + case 0x2533: draw_box_drawings_heavy_down_and_horizontal(buf); break; + case 0x2534: draw_box_drawings_light_up_and_horizontal(buf); break; + case 0x2535: draw_box_drawings_left_heavy_and_right_up_light(buf); break; + case 0x2536: draw_box_drawings_right_heavy_and_left_up_light(buf); break; + case 0x2537: draw_box_drawings_up_light_and_horizontal_heavy(buf); break; + case 0x2538: draw_box_drawings_up_heavy_and_horizontal_light(buf); break; + case 0x2539: draw_box_drawings_right_light_and_left_up_heavy(buf); break; + case 0x253a: draw_box_drawings_left_light_and_right_up_heavy(buf); break; + case 0x253b: draw_box_drawings_heavy_up_and_horizontal(buf); break; + case 0x253c: draw_box_drawings_light_vertical_and_horizontal(buf); break; + case 0x253d: draw_box_drawings_left_heavy_and_right_vertical_light(buf); break; + case 0x253e: draw_box_drawings_right_heavy_and_left_vertical_light(buf); break; + case 0x253f: draw_box_drawings_vertical_light_and_horizontal_heavy(buf); break; - case 0x2540: draw_box_drawings_up_heavy_and_down_horizontal_light(buf, width, height, stride, dpi); break; - case 0x2541: draw_box_drawings_down_heavy_and_up_horizontal_light(buf, width, height, stride, dpi); break; - case 0x2542: draw_box_drawings_vertical_heavy_and_horizontal_light(buf, width, height, stride, dpi); break; - case 0x2543: draw_box_drawings_left_up_heavy_and_right_down_light(buf, width, height, stride, dpi); break; - case 0x2544: draw_box_drawings_right_up_heavy_and_left_down_light(buf, width, height, stride, dpi); break; - case 0x2545: draw_box_drawings_left_down_heavy_and_right_up_light(buf, width, height, stride, dpi); break; - case 0x2546: draw_box_drawings_right_down_heavy_and_left_up_light(buf, width, height, stride, dpi); break; - case 0x2547: draw_box_drawings_down_light_and_up_horizontal_heavy(buf, width, height, stride, dpi); break; - case 0x2548: draw_box_drawings_up_light_and_down_horizontal_heavy(buf, width, height, stride, dpi); break; - case 0x2549: draw_box_drawings_right_light_and_left_vertical_heavy(buf, width, height, stride, dpi); break; - case 0x254a: draw_box_drawings_left_light_and_right_vertical_heavy(buf, width, height, stride, dpi); break; - case 0x254b: draw_box_drawings_heavy_vertical_and_horizontal(buf, width, height, stride, dpi); break; - case 0x254c: draw_box_drawings_light_double_dash_horizontal(buf, width, height, stride, dpi); break; - case 0x254d: draw_box_drawings_heavy_double_dash_horizontal(buf, width, height, stride, dpi); break; - case 0x254e: draw_box_drawings_light_double_dash_vertical(buf, width, height, stride, dpi); break; - case 0x254f: draw_box_drawings_heavy_double_dash_vertical(buf, width, height, stride, dpi); break; + case 0x2540: draw_box_drawings_up_heavy_and_down_horizontal_light(buf); break; + case 0x2541: draw_box_drawings_down_heavy_and_up_horizontal_light(buf); break; + case 0x2542: draw_box_drawings_vertical_heavy_and_horizontal_light(buf); break; + case 0x2543: draw_box_drawings_left_up_heavy_and_right_down_light(buf); break; + case 0x2544: draw_box_drawings_right_up_heavy_and_left_down_light(buf); break; + case 0x2545: draw_box_drawings_left_down_heavy_and_right_up_light(buf); break; + case 0x2546: draw_box_drawings_right_down_heavy_and_left_up_light(buf); break; + case 0x2547: draw_box_drawings_down_light_and_up_horizontal_heavy(buf); break; + case 0x2548: draw_box_drawings_up_light_and_down_horizontal_heavy(buf); break; + case 0x2549: draw_box_drawings_right_light_and_left_vertical_heavy(buf); break; + case 0x254a: draw_box_drawings_left_light_and_right_vertical_heavy(buf); break; + case 0x254b: draw_box_drawings_heavy_vertical_and_horizontal(buf); break; + case 0x254c: draw_box_drawings_light_double_dash_horizontal(buf); break; + case 0x254d: draw_box_drawings_heavy_double_dash_horizontal(buf); break; + case 0x254e: draw_box_drawings_light_double_dash_vertical(buf); break; + case 0x254f: draw_box_drawings_heavy_double_dash_vertical(buf); break; - case 0x2550: draw_box_drawings_double_horizontal(buf, width, height, stride, dpi); break; - case 0x2551: draw_box_drawings_double_vertical(buf, width, height, stride, dpi); break; - case 0x2552: draw_box_drawings_down_single_and_right_double(buf, width, height, stride, dpi); break; - case 0x2553: draw_box_drawings_down_double_and_right_single(buf, width, height, stride, dpi); break; - case 0x2554: draw_box_drawings_double_down_and_right(buf, width, height, stride, dpi); break; - case 0x2555: draw_box_drawings_down_single_and_left_double(buf, width, height, stride, dpi); break; - case 0x2556: draw_box_drawings_down_double_and_left_single(buf, width, height, stride, dpi); break; - case 0x2557: draw_box_drawings_double_down_and_left(buf, width, height, stride, dpi); break; - case 0x2558: draw_box_drawings_up_single_and_right_double(buf, width, height, stride, dpi); break; - case 0x2559: draw_box_drawings_up_double_and_right_single(buf, width, height, stride, dpi); break; - case 0x255a: draw_box_drawings_double_up_and_right(buf, width, height, stride, dpi); break; - case 0x255b: draw_box_drawings_up_single_and_left_double(buf, width, height, stride, dpi); break; - case 0x255c: draw_box_drawings_up_double_and_left_single(buf, width, height, stride, dpi); break; - case 0x255d: draw_box_drawings_double_up_and_left(buf, width, height, stride, dpi); break; - case 0x255e: draw_box_drawings_vertical_single_and_right_double(buf, width, height, stride, dpi); break; - case 0x255f: draw_box_drawings_vertical_double_and_right_single(buf, width, height, stride, dpi); break; + case 0x2550: draw_box_drawings_double_horizontal(buf); break; + case 0x2551: draw_box_drawings_double_vertical(buf); break; + case 0x2552: draw_box_drawings_down_single_and_right_double(buf); break; + case 0x2553: draw_box_drawings_down_double_and_right_single(buf); break; + case 0x2554: draw_box_drawings_double_down_and_right(buf); break; + case 0x2555: draw_box_drawings_down_single_and_left_double(buf); break; + case 0x2556: draw_box_drawings_down_double_and_left_single(buf); break; + case 0x2557: draw_box_drawings_double_down_and_left(buf); break; + case 0x2558: draw_box_drawings_up_single_and_right_double(buf); break; + case 0x2559: draw_box_drawings_up_double_and_right_single(buf); break; + case 0x255a: draw_box_drawings_double_up_and_right(buf); break; + case 0x255b: draw_box_drawings_up_single_and_left_double(buf); break; + case 0x255c: draw_box_drawings_up_double_and_left_single(buf); break; + case 0x255d: draw_box_drawings_double_up_and_left(buf); break; + case 0x255e: draw_box_drawings_vertical_single_and_right_double(buf); break; + case 0x255f: draw_box_drawings_vertical_double_and_right_single(buf); break; - case 0x2560: draw_box_drawings_double_vertical_and_right(buf, width, height, stride, dpi); break; - case 0x2561: draw_box_drawings_vertical_single_and_left_double(buf, width, height, stride, dpi); break; - case 0x2562: draw_box_drawings_vertical_double_and_left_single(buf, width, height, stride, dpi); break; - case 0x2563: draw_box_drawings_double_vertical_and_left(buf, width, height, stride, dpi); break; - case 0x2564: draw_box_drawings_down_single_and_horizontal_double(buf, width, height, stride, dpi); break; - case 0x2565: draw_box_drawings_down_double_and_horizontal_single(buf, width, height, stride, dpi); break; - case 0x2566: draw_box_drawings_double_down_and_horizontal(buf, width, height, stride, dpi); break; - case 0x2567: draw_box_drawings_up_single_and_horizontal_double(buf, width, height, stride, dpi); break; - case 0x2568: draw_box_drawings_up_double_and_horizontal_single(buf, width, height, stride, dpi); break; - case 0x2569: draw_box_drawings_double_up_and_horizontal(buf, width, height, stride, dpi); break; - case 0x256a: draw_box_drawings_vertical_single_and_horizontal_double(buf, width, height, stride, dpi); break; - case 0x256b: draw_box_drawings_vertical_double_and_horizontal_single(buf, width, height, stride, dpi); break; - case 0x256c: draw_box_drawings_double_vertical_and_horizontal(buf, width, height, stride, dpi); break; - case 0x256d ... 0x2570: draw_box_drawings_light_arc(wc, buf, width, height, stride, dpi); break; + case 0x2560: draw_box_drawings_double_vertical_and_right(buf); break; + case 0x2561: draw_box_drawings_vertical_single_and_left_double(buf); break; + case 0x2562: draw_box_drawings_vertical_double_and_left_single(buf); break; + case 0x2563: draw_box_drawings_double_vertical_and_left(buf); break; + case 0x2564: draw_box_drawings_down_single_and_horizontal_double(buf); break; + case 0x2565: draw_box_drawings_down_double_and_horizontal_single(buf); break; + case 0x2566: draw_box_drawings_double_down_and_horizontal(buf); break; + case 0x2567: draw_box_drawings_up_single_and_horizontal_double(buf); break; + case 0x2568: draw_box_drawings_up_double_and_horizontal_single(buf); break; + case 0x2569: draw_box_drawings_double_up_and_horizontal(buf); break; + case 0x256a: draw_box_drawings_vertical_single_and_horizontal_double(buf); break; + case 0x256b: draw_box_drawings_vertical_double_and_horizontal_single(buf); break; + case 0x256c: draw_box_drawings_double_vertical_and_horizontal(buf); break; + case 0x256d ... 0x2570: draw_box_drawings_light_arc(wc, buf); break; - case 0x2571: draw_box_drawings_light_diagonal_upper_right_to_lower_left(buf, width, height, stride, dpi); break; - case 0x2572: draw_box_drawings_light_diagonal_upper_left_to_lower_right(buf, width, height, stride, dpi); break; - case 0x2573: draw_box_drawings_light_diagonal_cross(buf, width, height, stride, dpi); break; - case 0x2574: draw_box_drawings_light_left(buf, width, height, stride, dpi); break; - case 0x2575: draw_box_drawings_light_up(buf, width, height, stride, dpi); break; - case 0x2576: draw_box_drawings_light_right(buf, width, height, stride, dpi); break; - case 0x2577: draw_box_drawings_light_down(buf, width, height, stride, dpi); break; - case 0x2578: draw_box_drawings_heavy_left(buf, width, height, stride, dpi); break; - case 0x2579: draw_box_drawings_heavy_up(buf, width, height, stride, dpi); break; - case 0x257a: draw_box_drawings_heavy_right(buf, width, height, stride, dpi); break; - case 0x257b: draw_box_drawings_heavy_down(buf, width, height, stride, dpi); break; - case 0x257c: draw_box_drawings_light_left_and_heavy_right(buf, width, height, stride, dpi); break; - case 0x257d: draw_box_drawings_light_up_and_heavy_down(buf, width, height, stride, dpi); break; - case 0x257e: draw_box_drawings_heavy_left_and_light_right(buf, width, height, stride, dpi); break; - case 0x257f: draw_box_drawings_heavy_up_and_light_down(buf, width, height, stride, dpi); break; + case 0x2571: draw_box_drawings_light_diagonal_upper_right_to_lower_left(buf); break; + case 0x2572: draw_box_drawings_light_diagonal_upper_left_to_lower_right(buf); break; + case 0x2573: draw_box_drawings_light_diagonal_cross(buf); break; + case 0x2574: draw_box_drawings_light_left(buf); break; + case 0x2575: draw_box_drawings_light_up(buf); break; + case 0x2576: draw_box_drawings_light_right(buf); break; + case 0x2577: draw_box_drawings_light_down(buf); break; + case 0x2578: draw_box_drawings_heavy_left(buf); break; + case 0x2579: draw_box_drawings_heavy_up(buf); break; + case 0x257a: draw_box_drawings_heavy_right(buf); break; + case 0x257b: draw_box_drawings_heavy_down(buf); break; + case 0x257c: draw_box_drawings_light_left_and_heavy_right(buf); break; + case 0x257d: draw_box_drawings_light_up_and_heavy_down(buf); break; + case 0x257e: draw_box_drawings_heavy_left_and_light_right(buf); break; + case 0x257f: draw_box_drawings_heavy_up_and_light_down(buf); break; - case 0x2580: draw_upper_half_block(buf, width, height, stride, dpi); break; - case 0x2581: draw_lower_one_eighth_block(buf, width, height, stride, dpi); break; - case 0x2582: draw_lower_one_quarter_block(buf, width, height, stride, dpi); break; - case 0x2583: draw_lower_three_eighths_block(buf, width, height, stride, dpi); break; - case 0x2584: draw_lower_half_block(buf, width, height, stride, dpi); break; - case 0x2585: draw_lower_five_eighths_block(buf, width, height, stride, dpi); break; - case 0x2586: draw_lower_three_quarters_block(buf, width, height, stride, dpi); break; - case 0x2587: draw_lower_seven_eighths_block(buf, width, height, stride, dpi); break; - case 0x2588: draw_full_block(buf, width, height, stride, dpi); break; - case 0x2589: draw_left_seven_eighths_block(buf, width, height, stride, dpi); break; - case 0x258a: draw_left_three_quarters_block(buf, width, height, stride, dpi); break; - case 0x258b: draw_left_five_eighths_block(buf, width, height, stride, dpi); break; - case 0x258c: draw_left_half_block(buf, width, height, stride, dpi); break; - case 0x258d: draw_left_three_eighths_block(buf, width, height, stride, dpi); break; - case 0x258e: draw_left_one_quarter_block(buf, width, height, stride, dpi); break; - case 0x258f: draw_left_one_eighth_block(buf, width, height, stride, dpi); break; + case 0x2580: draw_upper_half_block(buf); break; + case 0x2581: draw_lower_one_eighth_block(buf); break; + case 0x2582: draw_lower_one_quarter_block(buf); break; + case 0x2583: draw_lower_three_eighths_block(buf); break; + case 0x2584: draw_lower_half_block(buf); break; + case 0x2585: draw_lower_five_eighths_block(buf); break; + case 0x2586: draw_lower_three_quarters_block(buf); break; + case 0x2587: draw_lower_seven_eighths_block(buf); break; + case 0x2588: draw_full_block(buf); break; + case 0x2589: draw_left_seven_eighths_block(buf); break; + case 0x258a: draw_left_three_quarters_block(buf); break; + case 0x258b: draw_left_five_eighths_block(buf); break; + case 0x258c: draw_left_half_block(buf); break; + case 0x258d: draw_left_three_eighths_block(buf); break; + case 0x258e: draw_left_one_quarter_block(buf); break; + case 0x258f: draw_left_one_eighth_block(buf); break; - case 0x2590: draw_right_half_block(buf, width, height, stride, dpi); break; - case 0x2591: draw_light_shade(buf, width, height, stride, dpi); break; - case 0x2592: draw_medium_shade(buf, width, height, stride, dpi); break; - case 0x2593: draw_dark_shade(buf, width, height, stride, dpi); break; - case 0x2594: draw_upper_one_eighth_block(buf, width, height, stride, dpi); break; - case 0x2595: draw_right_one_eighth_block(buf, width, height, stride, dpi); break; - case 0x2596: draw_quadrant_lower_left(buf, width, height, stride, dpi); break; - case 0x2597: draw_quadrant_lower_right(buf, width, height, stride, dpi); break; - case 0x2598: draw_quadrant_upper_left(buf, width, height, stride, dpi); break; - case 0x2599: draw_quadrant_upper_left_and_lower_left_and_lower_right(buf, width, height, stride, dpi); break; - case 0x259a: draw_quadrant_upper_left_and_lower_right(buf, width, height, stride, dpi); break; - case 0x259b: draw_quadrant_upper_left_and_upper_right_and_lower_left(buf, width, height, stride, dpi); break; - case 0x259c: draw_quadrant_upper_left_and_upper_right_and_lower_right(buf, width, height, stride, dpi); break; - case 0x259d: draw_quadrant_upper_right(buf, width, height, stride, dpi); break; - case 0x259e: draw_quadrant_upper_right_and_lower_left(buf, width, height, stride, dpi); break; - case 0x259f: draw_quadrant_upper_right_and_lower_left_and_lower_right(buf, width, height, stride, dpi); break; + case 0x2590: draw_right_half_block(buf); break; + case 0x2591: draw_light_shade(buf); break; + case 0x2592: draw_medium_shade(buf); break; + case 0x2593: draw_dark_shade(buf); break; + case 0x2594: draw_upper_one_eighth_block(buf); break; + case 0x2595: draw_right_one_eighth_block(buf); break; + case 0x2596: draw_quadrant_lower_left(buf); break; + case 0x2597: draw_quadrant_lower_right(buf); break; + case 0x2598: draw_quadrant_upper_left(buf); break; + case 0x2599: draw_quadrant_upper_left_and_lower_left_and_lower_right(buf); break; + case 0x259a: draw_quadrant_upper_left_and_lower_right(buf); break; + case 0x259b: draw_quadrant_upper_left_and_upper_right_and_lower_left(buf); break; + case 0x259c: draw_quadrant_upper_left_and_upper_right_and_lower_right(buf); break; + case 0x259d: draw_quadrant_upper_right(buf); break; + case 0x259e: draw_quadrant_upper_right_and_lower_left(buf); break; + case 0x259f: draw_quadrant_upper_right_and_lower_left_and_lower_right(buf); break; - case 0x1fb00 ... 0x1fb3b: draw_sextant(wc, buf, width, height, stride, dpi); break; + case 0x1fb00 ... 0x1fb3b: draw_sextant(wc, buf); break; } #if defined(__GNUC__) @@ -2018,7 +2021,14 @@ box_drawing(const struct terminal *term, wchar_t wc) abort(); } - draw_glyph(wc, data, width, height, stride, term->font_dpi); + struct buf buf = { + .data = data, + .width = width, + .height = height, + .stride = stride, + .dpi = term->font_dpi, + }; + draw_glyph(wc, &buf); struct fcft_glyph *glyph = xmalloc(sizeof(*glyph)); *glyph = (struct fcft_glyph){