From 49e1f5cf487fd2c297036e1873f357463817c13d Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Mon, 3 Jan 2011 13:59:21 +0000 Subject: Make width calculations occur within tbl_term.c, not tbl.c. This allows for front-ends to make decisions about widths, not the back-end. To pull this off, first make each tbl_head contain a unique index value (0 <= index < total tbl_head elements) and remove the tbl_calc() routine from the back-end. Then, when encountering the first tbl_span in the front-end, dynamically create an array of configurations (termp_tbl) keyed on each tbl_head's unique index value. Construct the decimals and widths at this time, then continue parsing as before. The termp_tbl and indexes are required because we pass a const tbl AST into the front-end. --- term.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'term.h') diff --git a/term.h b/term.h index 3dc282fa..0fdad78a 100644 --- a/term.h +++ b/term.h @@ -1,4 +1,4 @@ -/* $Id: term.h,v 1.77 2011/01/02 12:21:07 kristaps Exp $ */ +/* $Id: term.h,v 1.78 2011/01/03 13:59:21 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons * @@ -71,9 +71,15 @@ struct termp_ps { size_t pdfobjsz; /* size of pdfobjs */ }; +struct termp_tbl { + int width; /* width in fixed chars */ + int decimal; /* decimal point position */ +}; + struct termp { enum termtype type; - size_t defrmargin; /* Right margin of the device.. */ + struct termp_tbl *tbl; /* table configuration */ + size_t defrmargin; /* Right margin of the device. */ size_t rmargin; /* Current right margin. */ size_t maxrmargin; /* Max right margin. */ size_t maxcols; /* Max size of buf. */ -- cgit v1.2.3