1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 05:45:06 +00:00
serenity/Libraries/LibHTML/DOM
Andreas Kling 4814253589 LibHTML: Introduce LayoutBox and LayoutNodeWithStyleAndBoxModelMetrics
To streamline the layout tree and remove irrelevant data from classes
that don't need it, this patch adds two new LayoutNode subclasses.

LayoutNodeWithStyleAndBoxModelMetrics should be inherited by any layout
node that cares about box model metrics (margin, border, and padding.)
LayoutBox should be inherited by any layout node that can have a rect.

This makes LayoutText significantly smaller (from 140 to 40 bytes) and
clarifies a lot of things about the layout tree.

I'm also adding next_sibling() and previous_sibling() overloads to
LayoutBlock that return a LayoutBlock*. This is okay since blocks only
ever have block siblings.

Do also note that the semantics of is<T> slightly change in this patch:
is<T>(nullptr) now returns true, to facilitate allowing to<T>(nullptr).
2019-10-15 16:48:38 +02:00
..
CharacterData.cpp LibHTML: Add Comment and CharacterData nodes and improve HTML parsing 2019-10-12 23:34:05 +02:00
CharacterData.h LibHTML: Add Comment and CharacterData nodes and improve HTML parsing 2019-10-12 23:34:05 +02:00
Comment.cpp LibHTML: Add Comment and CharacterData nodes and improve HTML parsing 2019-10-12 23:34:05 +02:00
Comment.h LibHTML: Add Comment and CharacterData nodes and improve HTML parsing 2019-10-12 23:34:05 +02:00
Document.cpp LibHTML: Simplify Node::create_layout_node() 2019-10-15 15:06:16 +02:00
Document.h LibHTML: Simplify Node::create_layout_node() 2019-10-15 15:06:16 +02:00
DocumentType.cpp LibHTML: Add basic <!DOCTYPE> parsing and a DocumentType class 2019-10-09 20:17:01 +02:00
DocumentType.h LibHTML: Add Comment and CharacterData nodes and improve HTML parsing 2019-10-12 23:34:05 +02:00
Element.cpp LibHTML: Simplify Node::create_layout_node() 2019-10-15 15:06:16 +02:00
Element.h LibHTML: Simplify Node::create_layout_node() 2019-10-15 15:06:16 +02:00
ElementFactory.cpp LibHTML: Implement the <br> element for line breaking 2019-10-12 13:47:49 +02:00
ElementFactory.h LibHTML: Move Element construction to a separate file 2019-10-12 13:02:38 +02:00
HTMLAnchorElement.cpp LibHTML: Detect hovering over links 2019-09-29 11:59:38 +02:00
HTMLAnchorElement.h LibHTML: Add is<ElementType> and to<ElementType> helper functions 2019-10-06 20:38:26 +02:00
HTMLBlinkElement.cpp LibHTML: Implement the <blink> element 2019-10-09 21:25:29 +02:00
HTMLBlinkElement.h LibHTML: Implement the <blink> element 2019-10-09 21:25:29 +02:00
HTMLBodyElement.cpp LibHTML: Use an enum for CSS property ID's 2019-10-08 15:35:05 +02:00
HTMLBodyElement.h LibHTML: Templatize Node::first_child_of_type<T>() 2019-10-06 20:47:57 +02:00
HTMLBRElement.cpp LibHTML: Simplify Node::create_layout_node() 2019-10-15 15:06:16 +02:00
HTMLBRElement.h LibHTML: Simplify Node::create_layout_node() 2019-10-15 15:06:16 +02:00
HTMLElement.cpp LibHTML: Detect hovering over links 2019-09-29 11:59:38 +02:00
HTMLElement.h LibHTML: Add is<ElementType> and to<ElementType> helper functions 2019-10-06 20:38:26 +02:00
HTMLFontElement.cpp LibHTML: Use an enum for CSS property ID's 2019-10-08 15:35:05 +02:00
HTMLFontElement.h LibHTML: Add support for <font color> 2019-10-04 21:14:59 +02:00
HTMLHeadElement.cpp LibHTML: Add a way to get a Document's title 2019-09-29 16:24:57 +02:00
HTMLHeadElement.h LibHTML: Templatize Node::first_child_of_type<T>() 2019-10-06 20:47:57 +02:00
HTMLHeadingElement.cpp LibHTML: Add HTMLHeadingElement for <h1> through <h6> 2019-09-29 12:26:15 +02:00
HTMLHeadingElement.h LibHTML: Add HTMLHeadingElement for <h1> through <h6> 2019-09-29 12:26:15 +02:00
HTMLHRElement.cpp LibHTML: Implement the <hr> element 2019-10-01 20:50:11 +02:00
HTMLHRElement.h LibHTML: Implement the <hr> element 2019-10-01 20:50:11 +02:00
HTMLHtmlElement.cpp LibHTML: Add a way to get a Document's title 2019-09-29 16:24:57 +02:00
HTMLHtmlElement.h LibHTML: Add is<ElementType> and to<ElementType> helper functions 2019-10-06 20:38:26 +02:00
HTMLImageElement.cpp LibHTML: Simplify Node::create_layout_node() 2019-10-15 15:06:16 +02:00
HTMLImageElement.h LibHTML: Simplify Node::create_layout_node() 2019-10-15 15:06:16 +02:00
HTMLLinkElement.cpp LibHTML: Rename Document's invalidate_{style,layout}() to update_foo() 2019-10-14 17:57:06 +02:00
HTMLLinkElement.h LibHTML: Start adding support for <link rel="stylesheet"> 2019-10-07 19:06:47 +02:00
HTMLStyleElement.cpp LibHTML: Add a simple <style> element for inline CSS 2019-09-29 17:45:42 +02:00
HTMLStyleElement.h LibHTML: Add a simple <style> element for inline CSS 2019-09-29 17:45:42 +02:00
HTMLTitleElement.cpp LibHTML: Add a way to get a Document's title 2019-09-29 16:24:57 +02:00
HTMLTitleElement.h LibHTML: Templatize Node::first_child_of_type<T>() 2019-10-06 20:47:57 +02:00
Node.cpp LibHTML: Simplify Node::create_layout_node() 2019-10-15 15:06:16 +02:00
Node.h LibHTML: Introduce LayoutBox and LayoutNodeWithStyleAndBoxModelMetrics 2019-10-15 16:48:38 +02:00
ParentNode.cpp Libraries: Create top level directory for libraries. 2019-07-04 16:16:50 +02:00
ParentNode.h LibHTML: Make sure every DOM Node belongs to a Document 2019-09-29 11:43:07 +02:00
Text.cpp LibHTML: Simplify Node::create_layout_node() 2019-10-15 15:06:16 +02:00
Text.h LibHTML: Simplify Node::create_layout_node() 2019-10-15 15:06:16 +02:00