diff options
author | Vincent Sanders <vince@kyllikki.org> | 2016-04-23 23:32:21 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2016-04-23 23:32:21 +0100 |
commit | 974a4a21e16a2da85a66aae9b80eeca15ca26dd6 (patch) | |
tree | 4433113896c8f5aec5a3f4130b50f9a73075907c /render/layout.h | |
parent | cdd53bcffb00819360b3e62ef41de6607aca2c76 (diff) | |
download | netsurf-974a4a21e16a2da85a66aae9b80eeca15ca26dd6.tar.gz netsurf-974a4a21e16a2da85a66aae9b80eeca15ca26dd6.tar.bz2 |
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.
Diffstat (limited to 'render/layout.h')
-rw-r--r-- | render/layout.h | 47 |
1 files changed, 42 insertions, 5 deletions
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 <http://www.gnu.org/licenses/>. */ -/** \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 |