diff options
author | Vincent Sanders <vince@kyllikki.org> | 2020-04-28 23:30:20 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2020-04-28 23:30:20 +0100 |
commit | c0ef8ce645d6077831877b5a8499b89c18df7bf9 (patch) | |
tree | 28cb9813cdfaac57218ebf24264c124af92e6584 /content/handlers/html/box_normalise.h | |
parent | f6883d6761975c6512455f0c854b683240c7cd48 (diff) | |
download | netsurf-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.h | 50 |
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 |