diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2018-11-25 19:24:20 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2018-11-25 19:24:20 +0000 |
commit | e30a05d61589276c015f65e4ac75df70040c3808 (patch) | |
tree | cd0e6ceb3acaf39d7cd2796c21ac8750850a8e15 /tbl_term.c | |
parent | 06e66f94d3ea6bc0665d39bb5f02c2acb54c0cc1 (diff) | |
download | mandoc-e30a05d61589276c015f65e4ac75df70040c3808.tar.gz mandoc-e30a05d61589276c015f65e4ac75df70040c3808.tar.zst mandoc-e30a05d61589276c015f65e4ac75df70040c3808.zip |
In tbl(7) -T html output,
span cells horizontally and vertically as requested by the layout.
Does not handle spans requested in the data section yet.
To be able to do this, record the number of rows spanned
in the first data cell (struct tbl_dat) of a vertical span.
Missing feature reported by Pali dot Rohar at gmail dot com.
Diffstat (limited to 'tbl_term.c')
-rw-r--r-- | tbl_term.c | 36 |
1 files changed, 18 insertions, 18 deletions
@@ -1,4 +1,4 @@ -/* $Id: tbl_term.c,v 1.60 2018/08/19 23:10:28 schwarze Exp $ */ +/* $Id: tbl_term.c,v 1.61 2018/11/25 19:24:20 schwarze Exp $ */ /* * Copyright (c) 2009, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2011-2018 Ingo Schwarze <schwarze@openbsd.org> @@ -77,7 +77,7 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) const struct tbl_dat *dp; static size_t offset; size_t coloff, tsz; - int ic, horiz, spans, vert, more; + int ic, horiz, hspans, vert, more; char fc; /* Inhibit printing of spaces: we do padding ourselves. */ @@ -157,9 +157,9 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) /* Set up the data columns. */ dp = sp->first; - spans = 0; + hspans = 0; for (ic = 0; ic < sp->opts->cols; ic++) { - if (spans == 0) { + if (hspans == 0) { tp->tcol++; tp->tcol->offset = coloff; } @@ -167,13 +167,13 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) tp->tcol->rmargin = coloff; if (ic + 1 < sp->opts->cols) coloff += tp->tbl.cols[ic].spacing; - if (spans) { - spans--; + if (hspans) { + hspans--; continue; } if (dp == NULL) continue; - spans = dp->spans; + hspans = dp->hspans; if (ic || sp->layout->first->pos != TBL_CELL_SPAN) dp = dp->next; } @@ -193,14 +193,14 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) tp->tcol = tp->tcols; cp = cpn = sp->layout->first; dp = sp->first; - spans = 0; + hspans = 0; for (ic = 0; ic < sp->opts->cols; ic++) { if (cpn != NULL) { cp = cpn; cpn = cpn->next; } - if (spans) { - spans--; + if (hspans) { + hspans--; continue; } tp->tcol++; @@ -208,7 +208,7 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) tbl_data(tp, sp->opts, cp, dp, tp->tbl.cols + ic); if (dp == NULL) continue; - spans = dp->spans; + hspans = dp->hspans; if (cp->pos != TBL_CELL_SPAN) dp = dp->next; } @@ -249,7 +249,7 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) cpp = sp->prev == NULL ? NULL : sp->prev->layout->first; dp = sp->first; - spans = 0; + hspans = 0; for (ic = 0; ic < sp->opts->cols; ic++) { /* @@ -304,12 +304,12 @@ term_tbl(struct termp *tp, const struct tbl_span *sp) * and advance to next data cell. */ - if (spans) { - spans--; + if (hspans) { + hspans--; continue; } if (dp != NULL) { - spans = dp->spans; + hspans = dp->hspans; if (ic || sp->layout->first->pos != TBL_CELL_SPAN) dp = dp->next; @@ -592,14 +592,14 @@ tbl_literal(struct termp *tp, const struct tbl_dat *dp, const struct roffcol *col) { size_t len, padl, padr, width; - int ic, spans; + int ic, hspans; assert(dp->string); len = term_strlen(tp, dp->string); width = col->width; ic = dp->layout->col; - spans = dp->spans; - while (spans--) + hspans = dp->hspans; + while (hspans--) width += tp->tbl.cols[++ic].width + 3; padr = width > len ? width - len : 0; |