]> git.cameronkatri.com Git - mandoc.git/blobdiff - out.h
If PATH_INFO contains a complete and correct path to a manual page
[mandoc.git] / out.h
diff --git a/out.h b/out.h
index db956b5b171eaf070dbd95b9d895387ac6f0e710..2c1cf3fe9701986b45c547155700c5a95d78c8e1 100644 (file)
--- a/out.h
+++ b/out.h
@@ -1,6 +1,6 @@
-/*     $Id: out.h,v 1.3 2009/10/07 12:35:24 kristaps Exp $ */
+/*     $Id: out.h,v 1.27 2015/11/07 14:01:16 schwarze Exp $ */
 /*
- * Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
+ * 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
  * 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
-
-__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
 };
 
+struct roffcol {
+       size_t           width; /* width of cell */
+       size_t           decimal; /* decimal position in cell */
+       int              flags; /* layout flags, see tbl_cell */
+};
+
 struct roffsu {
        enum roffscale    unit;
-       int               scale;
+       double            scale;
+};
+
+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_INVERT(p) \
-       do { (p)->scale = -(p)->scale; } while (/*CONSTCOND*/0)
 #define        SCALE_VS_INIT(p, v) \
        do { (p)->unit = SCALE_VS; \
-            (p)->scale = (v); } while (/*CONSTCOND*/0)
+            (p)->scale = (v); } \
+       while (/* CONSTCOND */ 0)
+
 #define        SCALE_HS_INIT(p, v) \
-       do { (p)->unit = SCALE_BU; \
-            (p)->scale = (v); } while (/*CONSTCOND*/0)
+       do { (p)->unit = SCALE_EN; \
+            (p)->scale = (v); } \
+       while (/* CONSTCOND */ 0)
 
-int              a2roffsu(const char *, struct roffsu *);
 
-__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);