=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/tbl_term.c,v retrieving revision 1.15 retrieving revision 1.16 diff -c -r1.15 -r1.16 *** src/usr.bin/mandoc/tbl_term.c 2014/03/28 23:25:54 1.15 --- src/usr.bin/mandoc/tbl_term.c 2014/04/20 16:44:44 1.16 *************** *** 1,4 **** ! /* $Id: tbl_term.c,v 1.15 2014/03/28 23:25:54 schwarze Exp $ */ /* * Copyright (c) 2009, 2011 Kristaps Dzonsons * Copyright (c) 2011, 2012, 2014 Ingo Schwarze --- 1,4 ---- ! /* $Id: tbl_term.c,v 1.16 2014/04/20 16:44:44 schwarze Exp $ */ /* * Copyright (c) 2009, 2011 Kristaps Dzonsons * Copyright (c) 2011, 2012, 2014 Ingo Schwarze *************** *** 28,41 **** static size_t term_tbl_strlen(const char *, void *); static void tbl_char(struct termp *, char, size_t); static void tbl_data(struct termp *, const struct tbl_opts *, ! const struct tbl_dat *, const struct roffcol *); static size_t tbl_rulewidth(struct termp *, const struct tbl_head *); static void tbl_hframe(struct termp *, const struct tbl_span *, int); ! static void tbl_literal(struct termp *, const struct tbl_dat *, const struct roffcol *); ! static void tbl_number(struct termp *, const struct tbl_opts *, ! const struct tbl_dat *, const struct roffcol *); static void tbl_hrule(struct termp *, const struct tbl_span *); static void tbl_vrule(struct termp *, const struct tbl_head *); --- 28,41 ---- static size_t term_tbl_strlen(const char *, void *); static void tbl_char(struct termp *, char, size_t); static void tbl_data(struct termp *, const struct tbl_opts *, ! const struct tbl_dat *, const struct roffcol *); static size_t tbl_rulewidth(struct termp *, const struct tbl_head *); static void tbl_hframe(struct termp *, const struct tbl_span *, int); ! static void tbl_literal(struct termp *, const struct tbl_dat *, const struct roffcol *); ! static void tbl_number(struct termp *, const struct tbl_opts *, ! const struct tbl_dat *, const struct roffcol *); static void tbl_hrule(struct termp *, const struct tbl_span *); static void tbl_vrule(struct termp *, const struct tbl_head *); *************** *** 62,68 **** const struct tbl_dat *dp; struct roffcol *col; int spans; ! size_t rmargin, maxrmargin; rmargin = tp->rmargin; maxrmargin = tp->maxrmargin; --- 62,68 ---- const struct tbl_dat *dp; struct roffcol *col; int spans; ! size_t rmargin, maxrmargin; rmargin = tp->rmargin; maxrmargin = tp->maxrmargin; *************** *** 104,110 **** if ((TBL_OPT_BOX | TBL_OPT_DBOX) & sp->opts->opts || sp->head->vert) term_word(tp, TBL_SPAN_HORIZ == sp->pos || ! TBL_SPAN_DHORIZ == sp->pos ? "+" : "|"); /* * Now print the actual data itself depending on the span type. --- 104,110 ---- if ((TBL_OPT_BOX | TBL_OPT_DBOX) & sp->opts->opts || sp->head->vert) term_word(tp, TBL_SPAN_HORIZ == sp->pos || ! TBL_SPAN_DHORIZ == sp->pos ? "+" : "|"); /* * Now print the actual data itself depending on the span type. *************** *** 113,130 **** */ switch (sp->pos) { ! case (TBL_SPAN_HORIZ): /* FALLTHROUGH */ ! case (TBL_SPAN_DHORIZ): tbl_hrule(tp, sp); break; ! case (TBL_SPAN_DATA): /* Iterate over template headers. */ dp = sp->first; spans = 0; for (hp = sp->head; hp; hp = hp->next) { ! /* * If the current data header is invoked during * a spanner ("spans" > 0), don't emit anything * at all. --- 113,130 ---- */ switch (sp->pos) { ! case TBL_SPAN_HORIZ: /* FALLTHROUGH */ ! case TBL_SPAN_DHORIZ: tbl_hrule(tp, sp); break; ! case TBL_SPAN_DATA: /* Iterate over template headers. */ dp = sp->first; spans = 0; for (hp = sp->head; hp; hp = hp->next) { ! /* * If the current data header is invoked during * a spanner ("spans" > 0), don't emit anything * at all. *************** *** 141,147 **** col = &tp->tbl.cols[hp->ident]; tbl_data(tp, sp->opts, dp, col); ! /* * Go to the next data cell and assign the * number of subsequent spans, if applicable. */ --- 141,147 ---- col = &tp->tbl.cols[hp->ident]; tbl_data(tp, sp->opts, dp, col); ! /* * Go to the next data cell and assign the * number of subsequent spans, if applicable. */ *************** *** 159,165 **** if ((TBL_OPT_BOX | TBL_OPT_DBOX) & sp->opts->opts || sp->layout->vert) term_word(tp, TBL_SPAN_HORIZ == sp->pos || ! TBL_SPAN_DHORIZ == sp->pos ? "+" : " |"); term_flushln(tp); /* --- 159,165 ---- if ((TBL_OPT_BOX | TBL_OPT_DBOX) & sp->opts->opts || sp->layout->vert) term_word(tp, TBL_SPAN_HORIZ == sp->pos || ! TBL_SPAN_DHORIZ == sp->pos ? "+" : " |"); term_flushln(tp); /* *************** *** 253,260 **** static void tbl_data(struct termp *tp, const struct tbl_opts *opts, ! const struct tbl_dat *dp, ! const struct roffcol *col) { if (NULL == dp) { --- 253,260 ---- static void tbl_data(struct termp *tp, const struct tbl_opts *opts, ! const struct tbl_dat *dp, ! const struct roffcol *col) { if (NULL == dp) { *************** *** 264,306 **** assert(dp->layout); switch (dp->pos) { ! case (TBL_DATA_NONE): tbl_char(tp, ASCII_NBRSP, col->width); return; ! case (TBL_DATA_HORIZ): /* FALLTHROUGH */ ! case (TBL_DATA_NHORIZ): tbl_char(tp, '-', col->width); return; ! case (TBL_DATA_NDHORIZ): /* FALLTHROUGH */ ! case (TBL_DATA_DHORIZ): tbl_char(tp, '=', col->width); return; default: break; } ! switch (dp->layout->pos) { ! case (TBL_CELL_HORIZ): tbl_char(tp, '-', col->width); break; ! case (TBL_CELL_DHORIZ): tbl_char(tp, '=', col->width); break; ! case (TBL_CELL_LONG): /* FALLTHROUGH */ ! case (TBL_CELL_CENTRE): /* FALLTHROUGH */ ! case (TBL_CELL_LEFT): /* FALLTHROUGH */ ! case (TBL_CELL_RIGHT): tbl_literal(tp, dp, col); break; ! case (TBL_CELL_NUMBER): tbl_number(tp, opts, dp, col); break; ! case (TBL_CELL_DOWN): tbl_char(tp, ASCII_NBRSP, col->width); break; default: --- 264,306 ---- assert(dp->layout); switch (dp->pos) { ! case TBL_DATA_NONE: tbl_char(tp, ASCII_NBRSP, col->width); return; ! case TBL_DATA_HORIZ: /* FALLTHROUGH */ ! case TBL_DATA_NHORIZ: tbl_char(tp, '-', col->width); return; ! case TBL_DATA_NDHORIZ: /* FALLTHROUGH */ ! case TBL_DATA_DHORIZ: tbl_char(tp, '=', col->width); return; default: break; } ! switch (dp->layout->pos) { ! case TBL_CELL_HORIZ: tbl_char(tp, '-', col->width); break; ! case TBL_CELL_DHORIZ: tbl_char(tp, '=', col->width); break; ! case TBL_CELL_LONG: /* FALLTHROUGH */ ! case TBL_CELL_CENTRE: /* FALLTHROUGH */ ! case TBL_CELL_LEFT: /* FALLTHROUGH */ ! case TBL_CELL_RIGHT: tbl_literal(tp, dp, col); break; ! case TBL_CELL_NUMBER: tbl_number(tp, opts, dp, col); break; ! case TBL_CELL_DOWN: tbl_char(tp, ASCII_NBRSP, col->width); break; default: *************** *** 336,342 **** } static void ! tbl_literal(struct termp *tp, const struct tbl_dat *dp, const struct roffcol *col) { struct tbl_head *hp; --- 336,342 ---- } static void ! tbl_literal(struct termp *tp, const struct tbl_dat *dp, const struct roffcol *col) { struct tbl_head *hp; *************** *** 355,371 **** padl = 0; switch (dp->layout->pos) { ! case (TBL_CELL_LONG): padl = term_len(tp, 1); padr = padr > padl ? padr - padl : 0; break; ! case (TBL_CELL_CENTRE): if (2 > padr) break; padl = padr / 2; padr -= padl; break; ! case (TBL_CELL_RIGHT): padl = padr; padr = 0; break; --- 355,371 ---- padl = 0; switch (dp->layout->pos) { ! case TBL_CELL_LONG: padl = term_len(tp, 1); padr = padr > padl ? padr - padl : 0; break; ! case TBL_CELL_CENTRE: if (2 > padr) break; padl = padr / 2; padr -= padl; break; ! case TBL_CELL_RIGHT: padl = padr; padr = 0; break;