summaryrefslogtreecommitdiff
path: root/render/layout.h
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2016-04-23 23:32:21 +0100
committerVincent Sanders <vince@kyllikki.org>2016-04-23 23:32:21 +0100
commit974a4a21e16a2da85a66aae9b80eeca15ca26dd6 (patch)
tree4433113896c8f5aec5a3f4130b50f9a73075907c /render/layout.h
parentcdd53bcffb00819360b3e62ef41de6607aca2c76 (diff)
downloadnetsurf-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.h47
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