version 1.26, 2014/12/01 08:05:52 |
version 1.35, 2022/09/11 09:13:48 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
|
* Copyright (c) 2014, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|
* |
|
* Utilities for use by multiple mandoc(1) formatters. |
*/ |
*/ |
|
|
enum roffscale { |
enum roffscale { |
|
|
|
|
struct roffcol { |
struct roffcol { |
size_t width; /* width of cell */ |
size_t width; /* width of cell */ |
|
size_t nwidth; /* max. width of number in cell */ |
size_t decimal; /* decimal position in cell */ |
size_t decimal; /* decimal position in cell */ |
|
size_t spacing; /* spacing after the column */ |
int flags; /* layout flags, see tbl_cell */ |
int flags; /* layout flags, see tbl_cell */ |
}; |
}; |
|
|
|
|
double scale; |
double scale; |
}; |
}; |
|
|
|
typedef size_t (*tbl_sulen)(const struct roffsu *, void *); |
typedef size_t (*tbl_strlen)(const char *, void *); |
typedef size_t (*tbl_strlen)(const char *, void *); |
typedef size_t (*tbl_len)(size_t, void *); |
typedef size_t (*tbl_len)(size_t, void *); |
|
|
struct rofftbl { |
struct rofftbl { |
|
tbl_sulen sulen; /* calculate scaling unit length */ |
tbl_strlen slen; /* calculate string length */ |
tbl_strlen slen; /* calculate string length */ |
tbl_len len; /* produce width of empty space */ |
tbl_len len; /* produce width of empty space */ |
struct roffcol *cols; /* master column specifiers */ |
struct roffcol *cols; /* master column specifiers */ |
void *arg; /* passed to slen and len */ |
void *arg; /* passed to sulen, slen, and len */ |
}; |
}; |
|
|
#define SCALE_VS_INIT(p, v) \ |
|
do { (p)->unit = SCALE_VS; \ |
|
(p)->scale = (v); } \ |
|
while (/* CONSTCOND */ 0) |
|
|
|
#define SCALE_HS_INIT(p, v) \ |
|
do { (p)->unit = SCALE_EN; \ |
|
(p)->scale = (v); } \ |
|
while (/* CONSTCOND */ 0) |
|
|
|
__BEGIN_DECLS |
|
|
|
struct tbl_span; |
struct tbl_span; |
|
|
int a2roffsu(const char *, struct roffsu *, enum roffscale); |
const char *a2roffsu(const char *, struct roffsu *, enum roffscale); |
void tblcalc(struct rofftbl *tbl, |
void tblcalc(struct rofftbl *, |
const struct tbl_span *, size_t); |
const struct tbl_span *, size_t, size_t); |
|
|
__END_DECLS |
|