#ifndef EL__DOCUMENT_HTML_RENDERER_H
#define EL__DOCUMENT_HTML_RENDERER_H
#include "document/document.h"
struct box;
struct cache_entry;
struct html_context;
struct string;
void render_html_document(struct cache_entry *cached, struct document *document, struct string *buffer);
/* Interface with tables.c */
/* This holds some context about what we're currently rendering. We only need
* one of these, until we start dealing with tables, at which point the table
* code will create short-lived parts to provide context when it calls routines
* in the renderer or the parser. */
struct part {
struct document *document;
unsigned char *spaces;
int spaces_len;
struct box box;
int max_width;
int xa;
int cx, cy;
int link_num;
};
void expand_lines(struct html_context *html_context, struct part *part,
int x, int y, int lines, color_T bgcolor);
void check_html_form_hierarchy(struct part *part);
void draw_frame_hchars(struct part *, int, int, int, unsigned char data, color_T bgcolor, color_T fgcolor, struct html_context *html_context);
void draw_frame_vchars(struct part *, int, int, int, unsigned char data, color_T bgcolor, color_T fgcolor, struct html_context *html_context);
void free_table_cache(void);
struct part *format_html_part(struct html_context *html_context, unsigned char *, unsigned char *, int, int, int, struct document *, int, int, unsigned char *, int);
int find_tag(struct document *document, unsigned char *name, int namelen);
#endif