![]() ![]() | ![]() |
version 1.95, 2013/12/22 23:34:13 | version 1.104, 2014/10/26 17:12:03 | ||
---|---|---|---|
|
|
||
/* $Id$ */ | /* $Id$ */ | ||
/* | /* | ||
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> | * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> | ||
* Copyright (c) 2011, 2012, 2013 Ingo Schwarze <schwarze@openbsd.org> | * Copyright (c) 2011, 2012, 2013, 2014 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 | ||
|
|
||
struct termp { | struct termp { | ||
enum termtype type; | enum termtype type; | ||
struct rofftbl tbl; /* table configuration */ | struct rofftbl tbl; /* table configuration */ | ||
int synopsisonly; /* print the synopsis only */ | |||
int mdocstyle; /* imitate mdoc(7) output */ | int mdocstyle; /* imitate mdoc(7) output */ | ||
size_t defindent; /* Default indent for text. */ | size_t defindent; /* Default indent for text. */ | ||
size_t defrmargin; /* Right margin of the device. */ | size_t defrmargin; /* Right margin of the device. */ | ||
size_t lastrmargin; /* Right margin before the last ll. */ | |||
size_t rmargin; /* Current right margin. */ | size_t rmargin; /* Current right margin. */ | ||
size_t maxrmargin; /* Max right margin. */ | size_t maxrmargin; /* Max right margin. */ | ||
size_t maxcols; /* Max size of buf. */ | size_t maxcols; /* Max size of buf. */ | ||
|
|
||
int flags; | int flags; | ||
#define TERMP_SENTENCE (1 << 1) /* Space before a sentence. */ | #define TERMP_SENTENCE (1 << 1) /* Space before a sentence. */ | ||
#define TERMP_NOSPACE (1 << 2) /* No space before words. */ | #define TERMP_NOSPACE (1 << 2) /* No space before words. */ | ||
#define TERMP_NOBREAK (1 << 4) /* See term_flushln(). */ | #define TERMP_NONOSPACE (1 << 3) /* No space (no autounset). */ | ||
#define TERMP_IGNDELIM (1 << 6) /* Delims like regulars. */ | #define TERMP_NBRWORD (1 << 4) /* Make next word nonbreaking. */ | ||
#define TERMP_NONOSPACE (1 << 7) /* No space (no autounset). */ | #define TERMP_KEEP (1 << 5) /* Keep words together. */ | ||
#define TERMP_DANGLE (1 << 8) /* See term_flushln(). */ | #define TERMP_PREKEEP (1 << 6) /* ...starting with the next one. */ | ||
#define TERMP_HANG (1 << 9) /* See term_flushln(). */ | #define TERMP_SKIPCHAR (1 << 7) /* Skip the next character. */ | ||
#define TERMP_NOSPLIT (1 << 11) /* See termp_an_pre/post(). */ | #define TERMP_NOBREAK (1 << 8) /* See term_flushln(). */ | ||
#define TERMP_SPLIT (1 << 12) /* See termp_an_pre/post(). */ | #define TERMP_BRIND (1 << 9) /* See term_flushln(). */ | ||
#define TERMP_ANPREC (1 << 13) /* See termp_an_pre(). */ | #define TERMP_DANGLE (1 << 10) /* See term_flushln(). */ | ||
#define TERMP_KEEP (1 << 14) /* Keep words together. */ | #define TERMP_HANG (1 << 11) /* See term_flushln(). */ | ||
#define TERMP_PREKEEP (1 << 15) /* ...starting with the next one. */ | #define TERMP_NOSPLIT (1 << 12) /* Do not break line before .An. */ | ||
#define TERMP_SKIPCHAR (1 << 16) /* Skip the next character. */ | #define TERMP_SPLIT (1 << 13) /* Break line before .An. */ | ||
int *buf; /* Output buffer. */ | int *buf; /* Output buffer. */ | ||
enum termenc enc; /* Type of encoding. */ | enum termenc enc; /* Type of encoding. */ | ||
struct mchars *symtab; /* Encoded-symbol table. */ | struct mchars *symtab; /* Encoded-symbol table. */ | ||
|
|
||
void (*end)(struct termp *); | void (*end)(struct termp *); | ||
void (*endline)(struct termp *); | void (*endline)(struct termp *); | ||
void (*advance)(struct termp *, size_t); | void (*advance)(struct termp *, size_t); | ||
void (*setwidth)(struct termp *, int, size_t); | |||
size_t (*width)(const struct termp *, int); | size_t (*width)(const struct termp *, int); | ||
double (*hspan)(const struct termp *, | double (*hspan)(const struct termp *, | ||
const struct roffsu *); | const struct roffsu *); | ||
|
|
||
struct termp_ps *ps; | struct termp_ps *ps; | ||
}; | }; | ||
const char *ascii_uc2str(int); | |||
void term_eqn(struct termp *, const struct eqn *); | void term_eqn(struct termp *, const struct eqn *); | ||
void term_tbl(struct termp *, const struct tbl_span *); | void term_tbl(struct termp *, const struct tbl_span *); | ||
void term_free(struct termp *); | void term_free(struct termp *); | ||
|
|
||
void term_vspace(struct termp *); | void term_vspace(struct termp *); | ||
void term_word(struct termp *, const char *); | void term_word(struct termp *, const char *); | ||
void term_flushln(struct termp *); | void term_flushln(struct termp *); | ||
void term_begin(struct termp *, term_margin, | void term_begin(struct termp *, term_margin, | ||
term_margin, const void *); | term_margin, const void *); | ||
void term_end(struct termp *); | void term_end(struct termp *); | ||
size_t term_hspan(const struct termp *, | void term_setwidth(struct termp *, const char *); | ||
size_t term_hspan(const struct termp *, | |||
const struct roffsu *); | const struct roffsu *); | ||
size_t term_vspan(const struct termp *, | size_t term_vspan(const struct termp *, | ||
const struct roffsu *); | const struct roffsu *); |