/* * Copyright 2003 James Bursa * * This file is part of NetSurf, http://www.netsurf-browser.org/ * * NetSurf is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * NetSurf is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file * HTML layout (interface). * * The main interface to the layout code is layout_document(), which takes a * normalized box tree and assigns coordinates and dimensions to the boxes, and * also adds boxes to the tree (eg. when formatting lines of text). */ #ifndef _NETSURF_RENDER_LAYOUT_H_ #define _NETSURF_RENDER_LAYOUT_H_ 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); /** * Layout lines of text or inline boxes with floats. * * \param box 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); /** * 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