version 1.67, 2019/01/31 16:06:22 |
version 1.68, 2019/02/09 21:02:47 |
Line 166 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 166 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
size_t save_offset; |
size_t save_offset; |
size_t coloff, tsz; |
size_t coloff, tsz; |
int hspans, ic, more; |
int hspans, ic, more; |
int dvert, fc, horiz, line, uvert; |
int dvert, fc, horiz, lhori, rhori, uvert; |
|
|
/* Inhibit printing of spaces: we do padding ourselves. */ |
/* Inhibit printing of spaces: we do padding ourselves. */ |
|
|
Line 325 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 325 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
(horiz || (IS_HORIZ(sp->layout->first) && |
(horiz || (IS_HORIZ(sp->layout->first) && |
!IS_HORIZ(sp->prev->layout->first)))) |
!IS_HORIZ(sp->prev->layout->first)))) |
uvert = sp->prev->layout->vert; |
uvert = sp->prev->layout->vert; |
line = sp->pos == TBL_SPAN_DHORIZ || |
rhori = sp->pos == TBL_SPAN_DHORIZ || |
|
(sp->first != NULL && sp->first->pos == TBL_DATA_DHORIZ) || |
sp->layout->first->pos == TBL_CELL_DHORIZ ? 2 : |
sp->layout->first->pos == TBL_CELL_DHORIZ ? 2 : |
sp->pos == TBL_SPAN_HORIZ || |
sp->pos == TBL_SPAN_HORIZ || |
|
(sp->first != NULL && sp->first->pos == TBL_DATA_HORIZ) || |
sp->layout->first->pos == TBL_CELL_HORIZ ? 1 : 0; |
sp->layout->first->pos == TBL_CELL_HORIZ ? 1 : 0; |
fc = BUP * uvert + BDOWN * dvert + BRIGHT * line; |
fc = BUP * uvert + BDOWN * dvert + BRIGHT * rhori; |
if (uvert > 0 || dvert > 0 || (horiz && sp->opts->lvert)) { |
if (uvert > 0 || dvert > 0 || (horiz && sp->opts->lvert)) { |
(*tp->advance)(tp, tp->tcols->offset); |
(*tp->advance)(tp, tp->tcols->offset); |
tp->viscol = tp->tcol->offset; |
tp->viscol = tp->tcol->offset; |
Line 402 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 404 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
cpn = cpn->next; |
cpn = cpn->next; |
} |
} |
|
|
|
lhori = (cp != NULL && |
|
cp->pos == TBL_CELL_DHORIZ) || |
|
(dp != NULL && |
|
dp->pos == TBL_DATA_DHORIZ) ? 2 : |
|
(cp != NULL && |
|
cp->pos == TBL_CELL_HORIZ) || |
|
(dp != NULL && |
|
dp->pos == TBL_DATA_HORIZ) ? 1 : 0; |
|
|
/* |
/* |
* Skip later cells in a span, |
* Skip later cells in a span, |
* figure out whether to start a span, |
* figure out whether to start a span, |
Line 454 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 465 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
} |
} |
while (tp->viscol < tp->tcol->rmargin + |
while (tp->viscol < tp->tcol->rmargin + |
tp->tbl.cols[ic].spacing / 2) |
tp->tbl.cols[ic].spacing / 2) |
tbl_direct_border(tp, fc, 1); |
tbl_direct_border(tp, |
|
BHORIZ * lhori, 1); |
|
|
if (tp->tcol + 1 == tp->tcols + tp->lasttcol) |
if (tp->tcol + 1 == tp->tcols + tp->lasttcol) |
continue; |
continue; |
|
|
if (cp != NULL) { |
if (cp != NULL) |
switch (cp->pos) { |
|
case TBL_CELL_HORIZ: |
|
fc = BLEFT; |
|
break; |
|
case TBL_CELL_DHORIZ: |
|
fc = BLEFT * 2; |
|
break; |
|
default: |
|
fc = 0; |
|
break; |
|
} |
|
cp = cp->next; |
cp = cp->next; |
} |
|
if (cp != NULL) { |
rhori = (cp != NULL && |
switch (cp->pos) { |
cp->pos == TBL_CELL_DHORIZ) || |
case TBL_CELL_HORIZ: |
(dp != NULL && |
fc += BRIGHT; |
dp->pos == TBL_DATA_DHORIZ) ? 2 : |
break; |
(cp != NULL && |
case TBL_CELL_DHORIZ: |
cp->pos == TBL_CELL_HORIZ) || |
fc += BRIGHT * 2; |
(dp != NULL && |
break; |
dp->pos == TBL_DATA_HORIZ) ? 1 : 0; |
default: |
|
break; |
|
} |
|
} |
|
if (tp->tbl.cols[ic].spacing) |
if (tp->tbl.cols[ic].spacing) |
tbl_direct_border(tp, fc + |
tbl_direct_border(tp, |
|
BLEFT * lhori + BRIGHT * rhori + |
BUP * uvert + BDOWN * dvert, 1); |
BUP * uvert + BDOWN * dvert, 1); |
|
|
if (tp->enc == TERMENC_UTF8) |
if (tp->enc == TERMENC_UTF8) |
uvert = dvert = 0; |
uvert = dvert = 0; |
|
|
if (fc != 0) { |
|
if (cp != NULL && |
|
cp->pos == TBL_CELL_HORIZ) |
|
fc = BHORIZ; |
|
else if (cp != NULL && |
|
cp->pos == TBL_CELL_DHORIZ) |
|
fc = BHORIZ * 2; |
|
else |
|
fc = 0; |
|
} |
|
if (tp->tbl.cols[ic].spacing > 2 && |
if (tp->tbl.cols[ic].spacing > 2 && |
(uvert > 1 || dvert > 1 || fc != 0)) |
(uvert > 1 || dvert > 1 || rhori)) |
tbl_direct_border(tp, fc + |
tbl_direct_border(tp, |
|
BHORIZ * rhori + |
BUP * (uvert > 1) + |
BUP * (uvert > 1) + |
BDOWN * (dvert > 1), 1); |
BDOWN * (dvert > 1), 1); |
} |
} |
Line 528 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 518 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
(horiz || (IS_HORIZ(sp->layout->last) && |
(horiz || (IS_HORIZ(sp->layout->last) && |
!IS_HORIZ(sp->prev->layout->last)))) |
!IS_HORIZ(sp->prev->layout->last)))) |
uvert = sp->prev->layout->last->vert; |
uvert = sp->prev->layout->last->vert; |
line = sp->pos == TBL_SPAN_DHORIZ || |
lhori = sp->pos == TBL_SPAN_DHORIZ || |
|
(sp->last != NULL && |
|
sp->last->pos == TBL_DATA_DHORIZ && |
|
sp->last->layout->col + 1 == sp->opts->cols) || |
(sp->layout->last->pos == TBL_CELL_DHORIZ && |
(sp->layout->last->pos == TBL_CELL_DHORIZ && |
sp->layout->last->col + 1 == sp->opts->cols) ? 2 : |
sp->layout->last->col + 1 == sp->opts->cols) ? 2 : |
sp->pos == TBL_SPAN_HORIZ || |
sp->pos == TBL_SPAN_HORIZ || |
|
(sp->last != NULL && |
|
sp->last->pos == TBL_DATA_HORIZ && |
|
sp->last->layout->col + 1 == sp->opts->cols) || |
(sp->layout->last->pos == TBL_CELL_HORIZ && |
(sp->layout->last->pos == TBL_CELL_HORIZ && |
sp->layout->last->col + 1 == sp->opts->cols) ? 1 : 0; |
sp->layout->last->col + 1 == sp->opts->cols) ? 1 : 0; |
fc = BUP * uvert + BDOWN * dvert + BLEFT * line; |
fc = BUP * uvert + BDOWN * dvert + BLEFT * lhori; |
if (uvert > 0 || dvert > 0 || (horiz && sp->opts->rvert)) { |
if (uvert > 0 || dvert > 0 || (horiz && sp->opts->rvert)) { |
if (horiz == 0 && (IS_HORIZ(sp->layout->last) == 0 || |
if (horiz == 0 && (IS_HORIZ(sp->layout->last) == 0 || |
sp->layout->last->col + 1 < sp->opts->cols)) { |
sp->layout->last->col + 1 < sp->opts->cols)) { |
tp->tcol++; |
tp->tcol++; |
(*tp->advance)(tp, |
do { |
tp->tcol->offset > tp->viscol ? |
tbl_direct_border(tp, |
tp->tcol->offset - tp->viscol : 1); |
BHORIZ * lhori, 1); |
|
} while (tp->viscol < tp->tcol->offset); |
} |
} |
tbl_direct_border(tp, fc, 1); |
tbl_direct_border(tp, fc, 1); |
} |
} |