version 1.47, 2017/06/12 19:05:47 |
version 1.51, 2017/06/13 14:39:13 |
Line 87 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 87 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
tp->tbl.sulen = term_tbl_sulen; |
tp->tbl.sulen = term_tbl_sulen; |
tp->tbl.arg = tp; |
tp->tbl.arg = tp; |
|
|
tblcalc(&tp->tbl, sp, tp->tcol->rmargin - tp->tcol->offset); |
tblcalc(&tp->tbl, sp, tp->tcol->offset, tp->tcol->rmargin); |
|
|
/* Center the table as a whole. */ |
/* Center the table as a whole. */ |
|
|
Line 219 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 219 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
dp = sp->first; |
dp = sp->first; |
spans = 0; |
spans = 0; |
for (ic = 0; ic < sp->opts->cols; ic++) { |
for (ic = 0; ic < sp->opts->cols; ic++) { |
if (spans == 0) { |
|
tp->tcol++; |
|
if (dp != NULL) { |
|
spans = dp->spans; |
|
dp = dp->next; |
|
} |
|
if (tp->tcol->col < tp->tcol->lastcol) |
|
term_flushln(tp); |
|
if (tp->tcol->col < tp->tcol->lastcol) |
|
more = 1; |
|
if (tp->tcol + 1 == |
|
tp->tcols + tp->lasttcol) |
|
continue; |
|
} else |
|
spans--; |
|
|
|
/* Vertical frames between data cells. */ |
/* Advance to next layout cell. */ |
|
|
if (cp != NULL) { |
if (cp != NULL) { |
vert = cp->vert; |
vert = cp->vert; |
cp = cp->next; |
cp = cp->next; |
} else |
} else |
vert = 0; |
vert = 0; |
|
|
|
/* Skip later cells in a span. */ |
|
|
|
if (spans) { |
|
spans--; |
|
continue; |
|
} |
|
|
|
/* Advance to next data cell. */ |
|
|
|
if (dp != NULL) { |
|
spans = dp->spans; |
|
dp = dp->next; |
|
} |
|
|
|
/* Print one line of text in the cell. */ |
|
|
|
tp->tcol++; |
|
if (tp->tcol->col < tp->tcol->lastcol) |
|
term_flushln(tp); |
|
if (tp->tcol->col < tp->tcol->lastcol) |
|
more = 1; |
|
|
|
/* |
|
* Vertical frames between data cells, |
|
* but not after the last column. |
|
*/ |
|
|
|
if (tp->tcol + 1 == tp->tcols + tp->lasttcol) |
|
continue; |
|
if (vert == 0 && |
|
sp->opts->opts & TBL_OPT_ALLBOX) |
|
vert = 1; |
if (vert == 0) |
if (vert == 0) |
continue; |
continue; |
|
|
Line 300 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 318 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
free(tp->tbl.cols); |
free(tp->tbl.cols); |
tp->tbl.cols = NULL; |
tp->tbl.cols = NULL; |
tp->tcol->offset = offset; |
tp->tcol->offset = offset; |
} |
} else if (horiz == 0 && sp->opts->opts & TBL_OPT_ALLBOX && |
|
(sp->next == NULL || sp->next->pos == TBL_SPAN_DATA || |
|
sp->next->next != NULL)) |
|
tbl_hrule(tp, sp, 1); |
|
|
tp->flags &= ~TERMP_NONOSPACE; |
tp->flags &= ~TERMP_NONOSPACE; |
} |
} |
|
|
Line 336 tbl_hrule(struct termp *tp, const struct tbl_span *sp, |
|
Line 358 tbl_hrule(struct termp *tp, const struct tbl_span *sp, |
|
vert = c2->vert; |
vert = c2->vert; |
c2 = c2->next; |
c2 = c2->next; |
} |
} |
|
if (sp->opts->opts & TBL_OPT_ALLBOX && !vert) |
|
vert = 1; |
if (vert) |
if (vert) |
tbl_char(tp, cross, vert); |
tbl_char(tp, cross, vert); |
if (vert < 2) |
if (vert < 2) |