Print this page
9718 update mandoc to 1.14.4
   1 /*      $Id: out.h,v 1.31 2017/06/27 18:25:02 schwarze Exp $ */
   2 /*
   3  * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
   4  * Copyright (c) 2014, 2017 Ingo Schwarze <schwarze@openbsd.org>
   5  *
   6  * Permission to use, copy, modify, and distribute this software for any
   7  * purpose with or without fee is hereby granted, provided that the above
   8  * copyright notice and this permission notice appear in all copies.
   9  *
  10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  17  */
  18 
  19 enum    roffscale {
  20         SCALE_CM, /* centimeters (c) */
  21         SCALE_IN, /* inches (i) */


  37         int              flags; /* layout flags, see tbl_cell */
  38 };
  39 
  40 struct  roffsu {
  41         enum roffscale    unit;
  42         double            scale;
  43 };
  44 
  45 typedef size_t  (*tbl_sulen)(const struct roffsu *, void *);
  46 typedef size_t  (*tbl_strlen)(const char *, void *);
  47 typedef size_t  (*tbl_len)(size_t, void *);
  48 
  49 struct  rofftbl {
  50         tbl_sulen        sulen; /* calculate scaling unit length */
  51         tbl_strlen       slen; /* calculate string length */
  52         tbl_len          len; /* produce width of empty space */
  53         struct roffcol  *cols; /* master column specifiers */
  54         void            *arg; /* passed to sulen, slen, and len */
  55 };
  56 
  57 #define SCALE_VS_INIT(p, v) \
  58         do { (p)->unit = SCALE_VS; \
  59              (p)->scale = (v); } \
  60         while (/* CONSTCOND */ 0)
  61 
  62 #define SCALE_HS_INIT(p, v) \
  63         do { (p)->unit = SCALE_EN; \
  64              (p)->scale = (v); } \
  65         while (/* CONSTCOND */ 0)
  66 
  67 
  68 struct  tbl_span;
  69 
  70 const char       *a2roffsu(const char *, struct roffsu *, enum roffscale);
  71 void              tblcalc(struct rofftbl *tbl,
  72                         const struct tbl_span *, size_t, size_t);
   1 /*      $Id: out.h,v 1.32 2018/06/25 16:54:59 schwarze Exp $ */
   2 /*
   3  * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
   4  * Copyright (c) 2014, 2017 Ingo Schwarze <schwarze@openbsd.org>
   5  *
   6  * Permission to use, copy, modify, and distribute this software for any
   7  * purpose with or without fee is hereby granted, provided that the above
   8  * copyright notice and this permission notice appear in all copies.
   9  *
  10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  17  */
  18 
  19 enum    roffscale {
  20         SCALE_CM, /* centimeters (c) */
  21         SCALE_IN, /* inches (i) */


  37         int              flags; /* layout flags, see tbl_cell */
  38 };
  39 
  40 struct  roffsu {
  41         enum roffscale    unit;
  42         double            scale;
  43 };
  44 
  45 typedef size_t  (*tbl_sulen)(const struct roffsu *, void *);
  46 typedef size_t  (*tbl_strlen)(const char *, void *);
  47 typedef size_t  (*tbl_len)(size_t, void *);
  48 
  49 struct  rofftbl {
  50         tbl_sulen        sulen; /* calculate scaling unit length */
  51         tbl_strlen       slen; /* calculate string length */
  52         tbl_len          len; /* produce width of empty space */
  53         struct roffcol  *cols; /* master column specifiers */
  54         void            *arg; /* passed to sulen, slen, and len */
  55 };
  56 





  57 #define SCALE_HS_INIT(p, v) \
  58         do { (p)->unit = SCALE_EN; \
  59              (p)->scale = (v); } \
  60         while (/* CONSTCOND */ 0)
  61 
  62 
  63 struct  tbl_span;
  64 
  65 const char       *a2roffsu(const char *, struct roffsu *, enum roffscale);
  66 void              tblcalc(struct rofftbl *tbl,
  67                         const struct tbl_span *, size_t, size_t);