version 1.74, 2020/10/25 18:28:23 |
version 1.79, 2022/08/28 10:58:31 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
|
* Copyright (c) 2011-2022 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2009, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2009, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2011-2020 Ingo Schwarze <schwarze@openbsd.org> |
|
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
|
|
#include <stdlib.h> |
#include <stdlib.h> |
#include <string.h> |
#include <string.h> |
|
|
|
#if DEBUG_MEMORY |
|
#include "mandoc_dbg.h" |
|
#endif |
#include "mandoc.h" |
#include "mandoc.h" |
#include "tbl.h" |
#include "tbl.h" |
#include "out.h" |
#include "out.h" |
Line 290 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 293 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
} |
} |
tp->tcol++; |
tp->tcol++; |
tp->col = 0; |
tp->col = 0; |
|
tp->flags &= ~(TERMP_BACKAFTER | TERMP_BACKBEFORE); |
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 && |
(ic || sp->layout->first->pos != TBL_CELL_SPAN)) { |
(ic || sp->layout->first->pos != TBL_CELL_SPAN)) { |
Line 545 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
Line 549 term_tbl(struct termp *tp, const struct tbl_span *sp) |
|
tp->flags &= ~TERMP_MULTICOL; |
tp->flags &= ~TERMP_MULTICOL; |
tp->tcol->rmargin = tp->maxrmargin; |
tp->tcol->rmargin = tp->maxrmargin; |
if (sp->next == NULL) { |
if (sp->next == NULL) { |
if (sp->opts->opts & (TBL_OPT_DBOX | TBL_OPT_BOX)) { |
if (sp->opts->opts & (TBL_OPT_DBOX | TBL_OPT_BOX)) |
tbl_hrule(tp, sp, sp, NULL, TBL_OPT_BOX); |
tbl_hrule(tp, sp, sp, NULL, TBL_OPT_BOX); |
tp->skipvsp = 1; |
|
} |
|
if (tp->enc == TERMENC_ASCII && |
if (tp->enc == TERMENC_ASCII && |
sp->opts->opts & TBL_OPT_DBOX) { |
sp->opts->opts & TBL_OPT_DBOX) |
tbl_hrule(tp, sp, sp, NULL, TBL_OPT_DBOX); |
tbl_hrule(tp, sp, sp, NULL, TBL_OPT_DBOX); |
tp->skipvsp = 2; |
|
} |
|
assert(tp->tbl.cols); |
assert(tp->tbl.cols); |
free(tp->tbl.cols); |
free(tp->tbl.cols); |
tp->tbl.cols = NULL; |
tp->tbl.cols = NULL; |
Line 820 tbl_literal(struct termp *tp, const struct tbl_dat *dp |
|
Line 820 tbl_literal(struct termp *tp, const struct tbl_dat *dp |
|
width = col->width; |
width = col->width; |
ic = dp->layout->col; |
ic = dp->layout->col; |
hspans = dp->hspans; |
hspans = dp->hspans; |
while (hspans--) |
while (hspans--) { |
width += tp->tbl.cols[++ic].width + 3; |
width += tp->tbl.cols[ic].spacing; |
|
ic++; |
|
width += tp->tbl.cols[ic].width; |
|
} |
|
|
padr = width > len ? width - len : 0; |
padr = width > len ? width - len : 0; |
padl = 0; |
padl = 0; |
Line 923 tbl_word(struct termp *tp, const struct tbl_dat *dp) |
|
Line 926 tbl_word(struct termp *tp, const struct tbl_dat *dp) |
|
int prev_font; |
int prev_font; |
|
|
prev_font = tp->fonti; |
prev_font = tp->fonti; |
if (dp->layout->flags & TBL_CELL_BOLD) |
switch (dp->layout->font) { |
term_fontpush(tp, TERMFONT_BOLD); |
case ESCAPE_FONTBI: |
else if (dp->layout->flags & TBL_CELL_ITALIC) |
term_fontpush(tp, TERMFONT_BI); |
term_fontpush(tp, TERMFONT_UNDER); |
break; |
|
case ESCAPE_FONTBOLD: |
|
case ESCAPE_FONTCB: |
|
term_fontpush(tp, TERMFONT_BOLD); |
|
break; |
|
case ESCAPE_FONTITALIC: |
|
case ESCAPE_FONTCI: |
|
term_fontpush(tp, TERMFONT_UNDER); |
|
break; |
|
case ESCAPE_FONTROMAN: |
|
case ESCAPE_FONTCR: |
|
break; |
|
default: |
|
abort(); |
|
} |
|
|
term_word(tp, dp->string); |
term_word(tp, dp->string); |
|
|