version 1.19, 2011/04/09 15:29:40 |
version 1.32, 2018/06/25 16:54:59 |
|
|
/* $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 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 |
|
|
* 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. |
*/ |
*/ |
#ifndef OUT_H |
|
#define OUT_H |
|
|
|
enum roffscale { |
enum roffscale { |
SCALE_CM, /* centimeters (c) */ |
SCALE_CM, /* centimeters (c) */ |
|
|
SCALE_MAX |
SCALE_MAX |
}; |
}; |
|
|
enum chars { |
|
CHARS_ASCII, /* 7-bit ascii representation */ |
|
CHARS_HTML /* unicode values */ |
|
}; |
|
|
|
struct roffcol { |
struct roffcol { |
size_t width; /* width of cell */ |
size_t width; /* width of 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 */ |
}; |
}; |
|
|
struct roffsu { |
struct roffsu { |
|
|
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 */ |
}; |
}; |
|
|
__BEGIN_DECLS |
|
|
|
#define SCALE_VS_INIT(p, v) \ |
|
do { (p)->unit = SCALE_VS; \ |
|
(p)->scale = (v); } \ |
|
while (/* CONSTCOND */ 0) |
|
|
|
#define SCALE_HS_INIT(p, v) \ |
#define SCALE_HS_INIT(p, v) \ |
do { (p)->unit = SCALE_BU; \ |
do { (p)->unit = SCALE_EN; \ |
(p)->scale = (v); } \ |
(p)->scale = (v); } \ |
while (/* CONSTCOND */ 0) |
while (/* CONSTCOND */ 0) |
|
|
int a2roffsu(const char *, struct roffsu *, enum roffscale); |
|
void time2a(time_t, char *, size_t); |
|
void tblcalc(struct rofftbl *tbl, const struct tbl_span *); |
|
|
|
void *chars_init(enum chars); |
struct tbl_span; |
const char *chars_num2char(const char *, size_t); |
|
const char *chars_spec2str(void *, const char *, size_t, size_t *); |
|
int chars_spec2cp(void *, const char *, size_t); |
|
const char *chars_res2str(void *, const char *, size_t, size_t *); |
|
int chars_res2cp(void *, const char *, size_t); |
|
void chars_free(void *); |
|
|
|
__END_DECLS |
const char *a2roffsu(const char *, struct roffsu *, enum roffscale); |
|
void tblcalc(struct rofftbl *tbl, |
#endif /*!OUT_H*/ |
const struct tbl_span *, size_t, size_t); |