enum termenc {
TERMENC_ASCII,
TERMENC_LOCALE,
TERMENC_UTF8
};
enum termtype {
TERMTYPE_CHAR,
TERMTYPE_PS,
TERMTYPE_PDF
};
enum termfont {
TERMFONT_NONE = 0,
TERMFONT_BOLD,
TERMFONT_UNDER,
TERMFONT_BI,
TERMFONT__MAX
};
struct eqn_box;
struct roff_meta;
struct roff_node;
struct tbl_span;
struct termp;
typedef void (*term_margin)(struct termp *, const struct roff_meta *);
struct termp_col {
int *buf;
size_t maxcols;
size_t lastcol;
size_t col;
size_t rmargin;
size_t offset;
size_t taboff;
};
struct termp {
struct rofftbl tbl;
struct termp_col *tcols;
struct termp_col *tcol;
size_t maxtcol;
size_t lasttcol;
size_t line;
size_t defindent;
size_t defrmargin;
size_t lastrmargin;
size_t maxrmargin;
size_t col;
size_t viscol;
size_t trailspace;
size_t minbl;
int synopsisonly;
int ti;
int skipvsp;
int flags;
#define TERMP_SENTENCE (1 << 0)
#define TERMP_NOSPACE (1 << 1)
#define TERMP_NONOSPACE (1 << 2)
#define TERMP_NBRWORD (1 << 3)
#define TERMP_KEEP (1 << 4)
#define TERMP_PREKEEP (1 << 5)
#define TERMP_BACKAFTER (1 << 6)
#define TERMP_BACKBEFORE (1 << 7)
#define TERMP_NOBREAK (1 << 8)
#define TERMP_BRTRSP (1 << 9)
#define TERMP_BRIND (1 << 10)
#define TERMP_HANG (1 << 11)
#define TERMP_NOPAD (1 << 12)
#define TERMP_NOSPLIT (1 << 13)
#define TERMP_SPLIT (1 << 14)
#define TERMP_NONEWLINE (1 << 15)
#define TERMP_BRNEVER (1 << 16)
#define TERMP_NOBUF (1 << 17)
#define TERMP_NEWMC (1 << 18)
#define TERMP_ENDMC (1 << 19)
#define TERMP_MULTICOL (1 << 20)
#define TERMP_CENTER (1 << 21)
#define TERMP_RIGHT (1 << 22)
enum termtype type;
enum termenc enc;
enum termfont fontl;
enum termfont *fontq;
int fontsz;
int fonti;
int fontibi;
term_margin headf;
term_margin footf;
void (*letter)(struct termp *, int);
void (*begin)(struct termp *);
void (*end)(struct termp *);
void (*endline)(struct termp *);
void (*advance)(struct termp *, size_t);
void (*setwidth)(struct termp *, int, size_t);
size_t (*getwidth)(const struct termp *, int);
int (*hspan)(const struct termp *,
const struct roffsu *);
const void *argf;
const char *mc;
struct termp_ps *ps;
};
const char *ascii_uc2str(int);
void roff_term_pre(struct termp *, const struct roff_node *);
void term_eqn(struct termp *, const struct eqn_box *);
void term_tbl(struct termp *, const struct tbl_span *);
void term_free(struct termp *);
void term_setcol(struct termp *, size_t);
void term_newln(struct termp *);
void term_vspace(struct termp *);
void term_word(struct termp *, const char *);
void term_flushln(struct termp *);
void term_begin(struct termp *, term_margin,
term_margin, const struct roff_meta *);
void term_end(struct termp *);
void term_setwidth(struct termp *, const char *);
int term_hspan(const struct termp *, const struct roffsu *);
int term_vspan(const struct termp *, const struct roffsu *);
size_t term_strlen(const struct termp *, const char *);
size_t term_len(const struct termp *, size_t);
void term_tab_set(const struct termp *, const char *);
void term_tab_ref(struct termp *);
size_t term_tab_next(size_t);
void term_tab_free(void);
void term_fontpush(struct termp *, enum termfont);
void term_fontpop(struct termp *);
void term_fontpopq(struct termp *, int);
void term_fontrepl(struct termp *, enum termfont);
void term_fontlast(struct termp *);