version 1.75, 2017/01/17 15:32:43 |
version 1.96, 2018/12/16 00:17:02 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2017 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 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 |
|
|
TAG_META, |
TAG_META, |
TAG_TITLE, |
TAG_TITLE, |
TAG_DIV, |
TAG_DIV, |
|
TAG_IDIV, |
TAG_H1, |
TAG_H1, |
TAG_H2, |
TAG_H2, |
TAG_SPAN, |
TAG_SPAN, |
|
|
TAG_BR, |
TAG_BR, |
TAG_A, |
TAG_A, |
TAG_TABLE, |
TAG_TABLE, |
TAG_TBODY, |
|
TAG_COL, |
|
TAG_TR, |
TAG_TR, |
TAG_TD, |
TAG_TD, |
TAG_LI, |
TAG_LI, |
|
|
TAG_DL, |
TAG_DL, |
TAG_DT, |
TAG_DT, |
TAG_DD, |
TAG_DD, |
TAG_BLOCKQUOTE, |
|
TAG_PRE, |
TAG_PRE, |
|
TAG_VAR, |
|
TAG_CITE, |
TAG_B, |
TAG_B, |
TAG_I, |
TAG_I, |
TAG_CODE, |
TAG_CODE, |
|
|
TAG_MATH, |
TAG_MATH, |
TAG_MROW, |
TAG_MROW, |
TAG_MI, |
TAG_MI, |
|
TAG_MN, |
TAG_MO, |
TAG_MO, |
TAG_MSUP, |
TAG_MSUP, |
TAG_MSUB, |
TAG_MSUB, |
|
|
HTMLFONT_BOLD, |
HTMLFONT_BOLD, |
HTMLFONT_ITALIC, |
HTMLFONT_ITALIC, |
HTMLFONT_BI, |
HTMLFONT_BI, |
|
HTMLFONT_CW, |
HTMLFONT_MAX |
HTMLFONT_MAX |
}; |
}; |
|
|
|
|
enum htmltag tag; |
enum htmltag tag; |
}; |
}; |
|
|
struct tagq { |
|
struct tag *head; |
|
}; |
|
|
|
struct html { |
struct html { |
int flags; |
int flags; |
#define HTML_NOSPACE (1 << 0) /* suppress next space */ |
#define HTML_NOSPACE (1 << 0) /* suppress next space */ |
|
|
#define HTML_NOSPLIT (1 << 7) /* do not break line before .An */ |
#define HTML_NOSPLIT (1 << 7) /* do not break line before .An */ |
#define HTML_SPLIT (1 << 8) /* break line before .An */ |
#define HTML_SPLIT (1 << 8) /* break line before .An */ |
#define HTML_NONEWLINE (1 << 9) /* No line break in nofill mode. */ |
#define HTML_NONEWLINE (1 << 9) /* No line break in nofill mode. */ |
struct tagq tags; /* stack of open tags */ |
#define HTML_BUFFER (1 << 10) /* Collect a word to see if it fits. */ |
|
#define HTML_TOCDONE (1 << 11) /* The TOC was already written. */ |
|
size_t indent; /* current output indentation level */ |
|
int noindent; /* indent disabled by <pre> */ |
|
size_t col; /* current output byte position */ |
|
size_t bufcol; /* current buf byte position */ |
|
char buf[80]; /* output buffer */ |
|
struct tag *tag; /* last open tag */ |
struct rofftbl tbl; /* current table */ |
struct rofftbl tbl; /* current table */ |
struct tag *tblt; /* current open table scope */ |
struct tag *tblt; /* current open table scope */ |
char *base_man; /* base for manpage href */ |
char *base_man1; /* bases for manpage href */ |
|
char *base_man2; |
char *base_includes; /* base for include href */ |
char *base_includes; /* base for include href */ |
char *style; /* style-sheet URI */ |
char *style; /* style-sheet URI */ |
struct tag *metaf; /* current open font scope */ |
struct tag *metaf; /* current open font scope */ |
|
|
enum htmlfont metac; /* current font mode */ |
enum htmlfont metac; /* current font mode */ |
int oflags; /* output options */ |
int oflags; /* output options */ |
#define HTML_FRAGMENT (1 << 0) /* don't emit HTML/HEAD/BODY */ |
#define HTML_FRAGMENT (1 << 0) /* don't emit HTML/HEAD/BODY */ |
|
#define HTML_TOC (1 << 1) /* emit a table of contents */ |
}; |
}; |
|
|
|
|
|
struct roff_node; |
struct tbl_span; |
struct tbl_span; |
struct eqn; |
struct eqn_box; |
|
|
|
void roff_html_pre(struct html *, const struct roff_node *); |
|
|
|
void print_gen_comment(struct html *, struct roff_node *); |
void print_gen_decls(struct html *); |
void print_gen_decls(struct html *); |
void print_gen_head(struct html *); |
void print_gen_head(struct html *); |
|
void print_metaf(struct html *, enum mandoc_esc); |
struct tag *print_otag(struct html *, enum htmltag, const char *, ...); |
struct tag *print_otag(struct html *, enum htmltag, const char *, ...); |
void print_tagq(struct html *, const struct tag *); |
void print_tagq(struct html *, const struct tag *); |
void print_stagq(struct html *, const struct tag *); |
void print_stagq(struct html *, const struct tag *); |
void print_text(struct html *, const char *); |
void print_text(struct html *, const char *); |
void print_tblclose(struct html *); |
void print_tblclose(struct html *); |
void print_tbl(struct html *, const struct tbl_span *); |
void print_tbl(struct html *, const struct tbl_span *); |
void print_eqn(struct html *, const struct eqn *); |
void print_eqn(struct html *, const struct eqn_box *); |
void print_paragraph(struct html *); |
void print_paragraph(struct html *); |
|
void print_endline(struct html *); |
|
|
int html_strlen(const char *); |
char *html_make_id(const struct roff_node *, int); |