X-Git-Url: https://git.cameronkatri.com/mandoc.git/blobdiff_plain/ecde8066e9fefa3134fec10222f61596f76ae94d..45fc5a37fb711aa526cb48490fba3c3c2ec09adc:/out.h

diff --git a/out.h b/out.h
index fd1e5bd8..2c1cf3fe 100644
--- a/out.h
+++ b/out.h
@@ -1,6 +1,6 @@
-/*	$Id: out.h,v 1.13 2010/07/18 22:55:06 kristaps Exp $ */
+/*	$Id: out.h,v 1.27 2015/11/07 14:01:16 schwarze Exp $ */
 /*
- * Copyright (c) 2009 Kristaps Dzonsons <kristaps@bsd.lv>
+ * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -14,39 +14,25 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
-#ifndef OUT_H
-#define OUT_H
-
-#define	DATESIZ		24
-
-__BEGIN_DECLS
 
 enum	roffscale {
-	SCALE_CM,
-	SCALE_IN,
-	SCALE_PC,
-	SCALE_PT,
-	SCALE_EM,
-	SCALE_MM,
-	SCALE_EN,
-	SCALE_BU,
-	SCALE_VS,
-	SCALE_FS,
+	SCALE_CM, /* centimeters (c) */
+	SCALE_IN, /* inches (i) */
+	SCALE_PC, /* pica (P) */
+	SCALE_PT, /* points (p) */
+	SCALE_EM, /* ems (m) */
+	SCALE_MM, /* mini-ems (M) */
+	SCALE_EN, /* ens (n) */
+	SCALE_BU, /* default horizontal (u) */
+	SCALE_VS, /* default vertical (v) */
+	SCALE_FS, /* syn. for u (f) */
 	SCALE_MAX
 };
 
-enum	roffdeco {
-	DECO_NONE,
-	DECO_SPECIAL,
-	DECO_RESERVED,
-	DECO_BOLD,
-	DECO_ITALIC,
-	DECO_ROMAN,
-	DECO_PREVIOUS,
-	DECO_NOSPACE,
-	DECO_FONT, /* font */
-	DECO_FFONT, /* font family */
-	DECO_MAX
+struct	roffcol {
+	size_t		 width; /* width of cell */
+	size_t		 decimal; /* decimal position in cell */
+	int		 flags; /* layout flags, see tbl_cell */
 };
 
 struct	roffsu {
@@ -54,9 +40,15 @@ struct	roffsu {
 	double		  scale;
 };
 
-#define	SCALE_INVERT(p) \
-	do { (p)->scale = -(p)->scale; } \
-	while (/* CONSTCOND */ 0)
+typedef	size_t	(*tbl_strlen)(const char *, void *);
+typedef	size_t	(*tbl_len)(size_t, void *);
+
+struct	rofftbl {
+	tbl_strlen	 slen; /* calculate string length */
+	tbl_len		 len; /* produce width of empty space */
+	struct roffcol	*cols; /* master column specifiers */
+	void		*arg; /* passed to slen and len */
+};
 
 #define	SCALE_VS_INIT(p, v) \
 	do { (p)->unit = SCALE_VS; \
@@ -64,15 +56,13 @@ struct	roffsu {
 	while (/* CONSTCOND */ 0)
 
 #define	SCALE_HS_INIT(p, v) \
-	do { (p)->unit = SCALE_BU; \
+	do { (p)->unit = SCALE_EN; \
 	     (p)->scale = (v); } \
 	while (/* CONSTCOND */ 0)
 
-int		  a2roffsu(const char *, 
-			struct roffsu *, enum roffscale);
-int		  a2roffdeco(enum roffdeco *, const char **, size_t *);
-void		  time2a(time_t, char *, size_t);
 
-__END_DECLS
+struct	tbl_span;
 
-#endif /*!HTML_H*/
+int		  a2roffsu(const char *, struct roffsu *, enum roffscale);
+void		  tblcalc(struct rofftbl *tbl,
+			const struct tbl_span *, size_t);