/** * $Id: content.h,v 1.1 2003/02/09 12:58:14 bursa Exp $ */ #ifndef _NETSURF_DESKTOP_CONTENT_H_ #define _NETSURF_DESKTOP_CONTENT_H_ #include "libxml/HTMLparser.h" #include "netsurf/content/cache.h" #include "netsurf/render/css.h" #include "netsurf/render/box.h" #include "netsurf/riscos/font.h" /** * A struct content corresponds to a single url. * * It is in one of the following states: * CONTENT_FETCHING - the data is being fetched and/or converted * for use by the browser * CONTENT_READY - the content has been processed and is ready * to display * * The converted data is stored in the cache, not the source data. * Users of the structure are counted in use_count; when use_count = 0 * the content may be removed from the memory cache. */ typedef enum {CONTENT_HTML, CONTENT_TEXTPLAIN, CONTENT_CSS, CONTENT_PNG, CONTENT_OTHER} content_type; struct box_position { struct box* box; int actual_box_x; int actual_box_y; int plot_index; int pixel_offset; int char_offset; }; struct content { char *url; content_type type; enum {CONTENT_LOADING, CONTENT_READY} status; union { struct { htmlParserCtxt* parser; xmlDoc* document; xmlNode* markup; struct box* layout; struct css_stylesheet* stylesheet; struct css_style* style; struct { struct box_position start; struct box_position end; enum {alter_UNKNOWN, alter_START, alter_END} altering; int selected; /* 0 = unselected, 1 = selected */ } text_selection; struct font_set* fonts; struct page_elements elements; } html; struct { struct css_stylesheet * stylesheet; } css; struct { unsigned long width, height; char * sprite; } image; } data; struct cache_entry *cache; unsigned long size; char *title; }; content_type content_lookup(const char *mime_type); struct content * content_create(content_type type, char *url); void content_process_data(struct content *c, char *data, unsigned long size); int content_convert(struct content *c, unsigned long width, unsigned long height); void content_revive(struct content *c, unsigned long width, unsigned long height); void content_reformat(struct content *c, unsigned long width, unsigned long height); void content_destroy(struct content *c); #endif