summaryrefslogtreecommitdiff
path: root/content/handlers/html/box_normalise.h
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2020-04-28 23:30:20 +0100
committerVincent Sanders <vince@kyllikki.org>2020-04-28 23:30:20 +0100
commitc0ef8ce645d6077831877b5a8499b89c18df7bf9 (patch)
tree28cb9813cdfaac57218ebf24264c124af92e6584 /content/handlers/html/box_normalise.h
parentf6883d6761975c6512455f0c854b683240c7cd48 (diff)
downloadnetsurf-c0ef8ce645d6077831877b5a8499b89c18df7bf9.tar.gz
netsurf-c0ef8ce645d6077831877b5a8499b89c18df7bf9.tar.bz2
clean up html box, no functionality change just cosmetic
split up the html box headers tidy up the documentation comments avoid forward declarations in normalisation implementation
Diffstat (limited to 'content/handlers/html/box_normalise.h')
-rw-r--r--content/handlers/html/box_normalise.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/content/handlers/html/box_normalise.h b/content/handlers/html/box_normalise.h
new file mode 100644
index 000000000..60f259189
--- /dev/null
+++ b/content/handlers/html/box_normalise.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2020 Vincent Sanders <vince@netsurf-browser.org>
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * \file
+ * HTML Box tree normalise interface.
+ */
+
+#ifndef NETSURF_HTML_BOX_NORMALISE_H
+#define NETSURF_HTML_BOX_NORMALISE_H
+
+/**
+ * Ensure the box tree is correctly nested by adding and removing nodes.
+ *
+ * \param block box of type BLOCK, INLINE_BLOCK, or TABLE_CELL
+ * \param root root box of document
+ * \param c content of boxes
+ * \return true on success, false on memory exhaustion
+ *
+ * The tree is modified to satisfy the following:
+ * \code
+ * parent permitted child nodes
+ * BLOCK, INLINE_BLOCK BLOCK, INLINE_CONTAINER, TABLE
+ * INLINE_CONTAINER INLINE, INLINE_BLOCK, FLOAT_LEFT, FLOAT_RIGHT, BR, TEXT
+ * INLINE, TEXT none
+ * TABLE at least 1 TABLE_ROW_GROUP
+ * TABLE_ROW_GROUP at least 1 TABLE_ROW
+ * TABLE_ROW at least 1 TABLE_CELL
+ * TABLE_CELL BLOCK, INLINE_CONTAINER, TABLE (same as BLOCK)
+ * FLOAT_(LEFT|RIGHT) exactly 1 BLOCK or TABLE
+ * \endcode
+ */
+bool box_normalise_block(struct box *block, const struct box *root, struct html_content *c);
+
+#endif