From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]); by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id db3b2cf5; for ; Tue, 27 Jan 2015 23:20:05 -0500 (EST) Date: Tue, 27 Jan 2015 23:20:05 -0500 (EST) Message-Id: <14965663987573997446.enqueue@fantadrom.bsd.lv> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: implement the tbl(7) "center" layout option X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- implement the tbl(7) "center" layout option Modified Files: -------------- mdocml: tbl.7 tbl_term.c Revision Data ------------- Index: tbl.7 =================================================================== RCS file: /home/cvs/mdocml/mdocml/tbl.7,v retrieving revision 1.24 retrieving revision 1.25 diff -Ltbl.7 -Ltbl.7 -u -p -r1.24 -r1.25 --- tbl.7 +++ tbl.7 @@ -152,7 +152,6 @@ For GNU compatibility, this may also be .Cm frame . .It Cm center Center the table instead of left-adjusting it. -Currently ignored. For GNU compatibility, this may also be invoked with .Cm centre . .It Cm decimalpoint Index: tbl_term.c =================================================================== RCS file: /home/cvs/mdocml/mdocml/tbl_term.c,v retrieving revision 1.33 retrieving revision 1.34 diff -Ltbl_term.c -Ltbl_term.c -u -p -r1.33 -r1.34 --- tbl_term.c +++ tbl_term.c @@ -63,8 +63,9 @@ term_tbl(struct termp *tp, const struct const struct tbl_head *hp; const struct tbl_cell *cp; const struct tbl_dat *dp; + static size_t offset; + size_t rmargin, maxrmargin, tsz; int horiz, spans, vert; - size_t rmargin, maxrmargin; rmargin = tp->rmargin; maxrmargin = tp->maxrmargin; @@ -90,6 +91,21 @@ term_tbl(struct termp *tp, const struct tblcalc(&tp->tbl, sp, rmargin - tp->offset); + /* Center the table as a whole. */ + + offset = tp->offset; + if (sp->opts->opts & TBL_OPT_CENTRE) { + tsz = sp->opts->opts & (TBL_OPT_BOX | TBL_OPT_DBOX) + ? 2 : !!sp->opts->lvert + !!sp->opts->rvert; + for (hp = sp->head; hp != NULL; hp = hp->next) + tsz += tp->tbl.cols[hp->ident].width + 3; + tsz -= 3; + if (offset + tsz > rmargin) + tsz -= 1; + tp->offset = (offset + rmargin > tsz) ? + (offset + rmargin - tsz) / 2 : 0; + } + /* Horizontal frame at the start of boxed tables. */ if (sp->opts->opts & TBL_OPT_DBOX) @@ -189,12 +205,12 @@ term_tbl(struct termp *tp, const struct assert(tp->tbl.cols); free(tp->tbl.cols); tp->tbl.cols = NULL; + tp->offset = offset; } tp->flags &= ~TERMP_NONOSPACE; tp->rmargin = rmargin; tp->maxrmargin = maxrmargin; - } /* -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv