version 1.60, 2018/08/19 23:10:28 |
version 1.61, 2018/11/25 19:24:20 |
Line 77 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 77 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
const struct tbl_dat *dp; |
const struct tbl_dat *dp; |
static size_t offset; |
static size_t offset; |
size_t coloff, tsz; |
size_t coloff, tsz; |
int ic, horiz, spans, vert, more; |
int ic, horiz, hspans, vert, more; |
char fc; |
char fc; |
|
|
/* Inhibit printing of spaces: we do padding ourselves. */ |
/* Inhibit printing of spaces: we do padding ourselves. */ |
Line 157 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 157 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
/* Set up the data columns. */ |
/* Set up the data columns. */ |
|
|
dp = sp->first; |
dp = sp->first; |
spans = 0; |
hspans = 0; |
for (ic = 0; ic < sp->opts->cols; ic++) { |
for (ic = 0; ic < sp->opts->cols; ic++) { |
if (spans == 0) { |
if (hspans == 0) { |
tp->tcol++; |
tp->tcol++; |
tp->tcol->offset = coloff; |
tp->tcol->offset = coloff; |
} |
} |
Line 167 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 167 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
tp->tcol->rmargin = coloff; |
tp->tcol->rmargin = coloff; |
if (ic + 1 < sp->opts->cols) |
if (ic + 1 < sp->opts->cols) |
coloff += tp->tbl.cols[ic].spacing; |
coloff += tp->tbl.cols[ic].spacing; |
if (spans) { |
if (hspans) { |
spans--; |
hspans--; |
continue; |
continue; |
} |
} |
if (dp == NULL) |
if (dp == NULL) |
continue; |
continue; |
spans = dp->spans; |
hspans = dp->hspans; |
if (ic || sp->layout->first->pos != TBL_CELL_SPAN) |
if (ic || sp->layout->first->pos != TBL_CELL_SPAN) |
dp = dp->next; |
dp = dp->next; |
} |
} |
Line 193 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 193 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
tp->tcol = tp->tcols; |
tp->tcol = tp->tcols; |
cp = cpn = sp->layout->first; |
cp = cpn = sp->layout->first; |
dp = sp->first; |
dp = sp->first; |
spans = 0; |
hspans = 0; |
for (ic = 0; ic < sp->opts->cols; ic++) { |
for (ic = 0; ic < sp->opts->cols; ic++) { |
if (cpn != NULL) { |
if (cpn != NULL) { |
cp = cpn; |
cp = cpn; |
cpn = cpn->next; |
cpn = cpn->next; |
} |
} |
if (spans) { |
if (hspans) { |
spans--; |
hspans--; |
continue; |
continue; |
} |
} |
tp->tcol++; |
tp->tcol++; |
Line 208 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 208 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
tbl_data(tp, sp->opts, cp, dp, tp->tbl.cols + ic); |
tbl_data(tp, sp->opts, cp, dp, tp->tbl.cols + ic); |
if (dp == NULL) |
if (dp == NULL) |
continue; |
continue; |
spans = dp->spans; |
hspans = dp->hspans; |
if (cp->pos != TBL_CELL_SPAN) |
if (cp->pos != TBL_CELL_SPAN) |
dp = dp->next; |
dp = dp->next; |
} |
} |
Line 249 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 249 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
cpp = sp->prev == NULL ? NULL : |
cpp = sp->prev == NULL ? NULL : |
sp->prev->layout->first; |
sp->prev->layout->first; |
dp = sp->first; |
dp = sp->first; |
spans = 0; |
hspans = 0; |
for (ic = 0; ic < sp->opts->cols; ic++) { |
for (ic = 0; ic < sp->opts->cols; ic++) { |
|
|
/* |
/* |
Line 304 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 304 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
* and advance to next data cell. |
* and advance to next data cell. |
*/ |
*/ |
|
|
if (spans) { |
if (hspans) { |
spans--; |
hspans--; |
continue; |
continue; |
} |
} |
if (dp != NULL) { |
if (dp != NULL) { |
spans = dp->spans; |
hspans = dp->hspans; |
if (ic || sp->layout->first->pos |
if (ic || sp->layout->first->pos |
!= TBL_CELL_SPAN) |
!= TBL_CELL_SPAN) |
dp = dp->next; |
dp = dp->next; |
Line 592 tbl_literal(struct termp *tp, const struct tbl_dat *dp |
|
Line 592 tbl_literal(struct termp *tp, const struct tbl_dat *dp |
|
const struct roffcol *col) |
const struct roffcol *col) |
{ |
{ |
size_t len, padl, padr, width; |
size_t len, padl, padr, width; |
int ic, spans; |
int ic, hspans; |
|
|
assert(dp->string); |
assert(dp->string); |
len = term_strlen(tp, dp->string); |
len = term_strlen(tp, dp->string); |
width = col->width; |
width = col->width; |
ic = dp->layout->col; |
ic = dp->layout->col; |
spans = dp->spans; |
hspans = dp->hspans; |
while (spans--) |
while (hspans--) |
width += tp->tbl.cols[++ic].width + 3; |
width += tp->tbl.cols[++ic].width + 3; |
|
|
padr = width > len ? width - len : 0; |
padr = width > len ? width - len : 0; |