X-Git-Url: https://git.cameronkatri.com/mandoc.git/blobdiff_plain/90a857ce9552c29d8ca231cc331d97c187b74f9d..d44afd04277797fc00e15bbd5a98a196404fb778:/out.c diff --git a/out.c b/out.c index 8dbd68ac..96d1d771 100644 --- a/out.c +++ b/out.c @@ -1,4 +1,4 @@ -/* $Id: out.c,v 1.43 2011/09/20 23:05:49 schwarze Exp $ */ +/* $Id: out.c,v 1.47 2014/03/23 11:25:26 schwarze Exp $ */ /* * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2011 Ingo Schwarze @@ -28,15 +28,16 @@ #include #include +#include "mandoc_aux.h" #include "mandoc.h" #include "out.h" static void tblcalc_data(struct rofftbl *, struct roffcol *, - const struct tbl *, const struct tbl_dat *); + const struct tbl_opts *, const struct tbl_dat *); static void tblcalc_literal(struct rofftbl *, struct roffcol *, const struct tbl_dat *); static void tblcalc_number(struct rofftbl *, struct roffcol *, - const struct tbl *, const struct tbl_dat *); + const struct tbl_opts *, const struct tbl_dat *); /* * Convert a `scaling unit' to a consistent form, or fail. Scaling @@ -142,7 +143,6 @@ void tblcalc(struct rofftbl *tbl, const struct tbl_span *sp) { const struct tbl_dat *dp; - const struct tbl_head *hp; struct roffcol *col; int spans; @@ -154,9 +154,7 @@ tblcalc(struct rofftbl *tbl, const struct tbl_span *sp) assert(NULL == tbl->cols); tbl->cols = mandoc_calloc - ((size_t)sp->tbl->cols, sizeof(struct roffcol)); - - hp = sp->head; + ((size_t)sp->opts->cols, sizeof(struct roffcol)); for ( ; sp; sp = sp->next) { if (TBL_SPAN_DATA != sp->pos) @@ -175,33 +173,14 @@ tblcalc(struct rofftbl *tbl, const struct tbl_span *sp) continue; assert(dp->layout); col = &tbl->cols[dp->layout->head->ident]; - tblcalc_data(tbl, col, sp->tbl, dp); - } - } - - /* - * Calculate width of the spanners. These get one space for a - * vertical line, two for a double-vertical line. - */ - - for ( ; hp; hp = hp->next) { - col = &tbl->cols[hp->ident]; - switch (hp->pos) { - case (TBL_HEAD_VERT): - col->width = (*tbl->len)(1, tbl->arg); - break; - case (TBL_HEAD_DVERT): - col->width = (*tbl->len)(2, tbl->arg); - break; - default: - break; + tblcalc_data(tbl, col, sp->opts, dp); } } } static void tblcalc_data(struct rofftbl *tbl, struct roffcol *col, - const struct tbl *tp, const struct tbl_dat *dp) + const struct tbl_opts *opts, const struct tbl_dat *dp) { size_t sz; @@ -225,7 +204,7 @@ tblcalc_data(struct rofftbl *tbl, struct roffcol *col, tblcalc_literal(tbl, col, dp); break; case (TBL_CELL_NUMBER): - tblcalc_number(tbl, col, tp, dp); + tblcalc_number(tbl, col, opts, dp); break; case (TBL_CELL_DOWN): break; @@ -251,7 +230,7 @@ tblcalc_literal(struct rofftbl *tbl, struct roffcol *col, static void tblcalc_number(struct rofftbl *tbl, struct roffcol *col, - const struct tbl *tp, const struct tbl_dat *dp) + const struct tbl_opts *opts, const struct tbl_dat *dp) { int i; size_t sz, psz, ssz, d; @@ -273,12 +252,12 @@ tblcalc_number(struct rofftbl *tbl, struct roffcol *col, /* FIXME: TBL_DATA_HORIZ et al.? */ - buf[0] = tp->decimal; + buf[0] = opts->decimal; buf[1] = '\0'; psz = (*tbl->slen)(buf, tbl->arg); - if (NULL != (cp = strrchr(str, tp->decimal))) { + if (NULL != (cp = strrchr(str, opts->decimal))) { buf[1] = '\0'; for (ssz = 0, i = 0; cp != &str[i]; i++) { buf[0] = str[i];