From 974a4a21e16a2da85a66aae9b80eeca15ca26dd6 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sat, 23 Apr 2016 23:32:21 +0100 Subject: split out the layout glyph sizing and splitting API This refactors the core "font" sizing API to be handled through gui function tables similar to every other core/frontend calling API. --- render/layout.h | 47 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) (limited to 'render/layout.h') diff --git a/render/layout.h b/render/layout.h index f4117e286..ff0da5a53 100644 --- a/render/layout.h +++ b/render/layout.h @@ -16,7 +16,8 @@ * along with this program. If not, see . */ -/** \file +/** + * \file * HTML layout (interface). * * The main interface to the layout code is layout_document(), which takes a @@ -29,11 +30,47 @@ struct box; struct html_content; +struct gui_layout_table; +/** + * Calculate positions of boxes in a document. + * + * \param content content of type CONTENT_HTML + * \param width available width + * \param height available height + * \return true on success, false on memory exhaustion + */ bool layout_document(struct html_content *content, int width, int height); -bool layout_inline_container(struct box *box, int width, - struct box *cont, int cx, int cy, struct html_content *content); + +/** + * Layout lines of text or inline boxes with floats. + * + * \param inline_container inline container box + * \param width horizontal space available + * \param cont ancestor box which defines horizontal space, for floats + * \param cx box position relative to cont + * \param cy box position relative to cont + * \param content memory pool for any new boxes + * \return true on success, false on memory exhaustion + */ +bool layout_inline_container(struct box *box, int width, struct box *cont, int cx, int cy, struct html_content *content); + +/** + * Recursively calculate the descendant_[xy][01] values for a laid-out box tree + * and inform iframe browser windows of their size and position. + * + * \param box tree of boxes to update + */ void layout_calculate_descendant_bboxes(struct box *box); -void layout_minmax_table(struct box *table, - const struct font_functions *font_func); + +/** + * Calculate minimum and maximum width of a table. + * + * \param table box of type TABLE + * \param font_func Font functions + * \post table->min_width and table->max_width filled in, + * 0 <= table->min_width <= table->max_width + */ +void layout_minmax_table(struct box *table, const struct gui_layout_table *font_func); + #endif -- cgit v1.2.3