version 1.13, 2009/10/13 10:21:24 |
version 1.24, 2010/06/19 20:46:27 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se> |
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv> |
* |
* |
* 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_DIV, |
TAG_DIV, |
TAG_H1, |
TAG_H1, |
TAG_H2, |
TAG_H2, |
TAG_P, |
|
TAG_SPAN, |
TAG_SPAN, |
TAG_LINK, |
TAG_LINK, |
TAG_BR, |
TAG_BR, |
|
|
TAG_LI, |
TAG_LI, |
TAG_UL, |
TAG_UL, |
TAG_OL, |
TAG_OL, |
TAG_BASE, |
|
TAG_MAX |
TAG_MAX |
}; |
}; |
|
|
|
|
ATTR_VALIGN, |
ATTR_VALIGN, |
ATTR_TARGET, |
ATTR_TARGET, |
ATTR_ID, |
ATTR_ID, |
|
ATTR_SUMMARY, |
ATTR_MAX |
ATTR_MAX |
}; |
}; |
|
|
|
enum htmlfont { |
|
HTMLFONT_NONE = 0, |
|
HTMLFONT_BOLD, |
|
HTMLFONT_ITALIC, |
|
HTMLFONT_MAX |
|
}; |
|
|
struct tag { |
struct tag { |
|
struct tag *next; |
enum htmltag tag; |
enum htmltag tag; |
SLIST_ENTRY(tag) entry; |
|
}; |
}; |
|
|
struct ord { |
struct ord { |
int pos; |
struct ord *next; |
const void *cookie; |
const void *cookie; |
SLIST_ENTRY(ord) entry; |
int pos; |
}; |
}; |
|
|
SLIST_HEAD(tagq, tag); |
struct tagq { |
SLIST_HEAD(ordq, ord); |
struct tag *head; |
|
}; |
|
struct ordq { |
|
struct ord *head; |
|
}; |
|
|
struct htmlpair { |
struct htmlpair { |
enum htmlattr key; |
enum htmlattr key; |
const char *val; |
const char *val; |
}; |
}; |
|
|
#define PAIR_CLASS_INIT(p, v) \ |
#define PAIR_INIT(p, t, v) \ |
do { (p)->key = ATTR_CLASS; \ |
do { \ |
(p)->val = (v); } while (/* CONSTCOND */ 0) |
(p)->key = (t); \ |
#define PAIR_HREF_INIT(p, v) \ |
(p)->val = (v); \ |
do { (p)->key = ATTR_HREF; \ |
} while (/* CONSTCOND */ 0) |
(p)->val = (v); } while (/* CONSTCOND */ 0) |
|
#define PAIR_STYLE_INIT(p, h) \ |
|
do { (p)->key = ATTR_STYLE; \ |
|
(p)->val = (h)->buf; } while (/* CONSTCOND */ 0) |
|
|
|
|
#define PAIR_ID_INIT(p, v) PAIR_INIT(p, ATTR_ID, v) |
|
#define PAIR_CLASS_INIT(p, v) PAIR_INIT(p, ATTR_CLASS, v) |
|
#define PAIR_HREF_INIT(p, v) PAIR_INIT(p, ATTR_HREF, v) |
|
#define PAIR_STYLE_INIT(p, h) PAIR_INIT(p, ATTR_STYLE, (h)->buf) |
|
#define PAIR_SUMMARY_INIT(p, v) PAIR_INIT(p, ATTR_SUMMARY, v) |
|
|
|
enum htmltype { |
|
HTML_HTML_4_01_STRICT, |
|
HTML_XHTML_1_0_STRICT |
|
}; |
|
|
struct html { |
struct html { |
int flags; |
int flags; |
#define HTML_NOSPACE (1 << 0) |
#define HTML_NOSPACE (1 << 0) |
#define HTML_NEWLINE (1 << 1) |
|
#define HTML_IGNDELIM (1 << 2) |
#define HTML_IGNDELIM (1 << 2) |
struct tagq tags; |
struct tagq tags; |
struct ordq ords; |
struct ordq ords; |
|
|
char *style; |
char *style; |
char buf[BUFSIZ]; |
char buf[BUFSIZ]; |
size_t buflen; |
size_t buflen; |
|
struct tag *metaf; |
|
enum htmlfont metal; |
|
enum htmlfont metac; |
|
enum htmltype type; |
}; |
}; |
|
|
struct roffsu; |
struct roffsu; |
|
|
void print_gen_doctype(struct html *); |
void print_gen_decls(struct html *); |
void print_gen_head(struct html *); |
void print_gen_head(struct html *); |
|
struct tag *print_ofont(struct html *, enum htmlfont); |
struct tag *print_otag(struct html *, enum htmltag, |
struct tag *print_otag(struct html *, enum htmltag, |
int, const struct htmlpair *); |
int, const struct htmlpair *); |
void print_tagq(struct html *, const struct tag *); |
void print_tagq(struct html *, const struct tag *); |
Line 127 void bufcat_style(struct html *, |
|
Line 148 void bufcat_style(struct html *, |
|
const char *, const char *); |
const char *, const char *); |
void bufncat(struct html *, const char *, size_t); |
void bufncat(struct html *, const char *, size_t); |
void bufinit(struct html *); |
void bufinit(struct html *); |
|
|
|
void html_idcat(char *, const char *, int); |
|
|
__END_DECLS |
__END_DECLS |
|
|