1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-05 07:47:36 +00:00

LibHTML: Give LayoutNodes a rect.

Also improve the layout tree dump format somewhat.
This commit is contained in:
Andreas Kling 2019-06-16 11:28:47 +02:00
parent c52d553249
commit fec098b5cd
2 changed files with 32 additions and 8 deletions

View file

@ -10,7 +10,7 @@ void dump_tree(const Node& node)
{
static int indent = 0;
for (int i = 0; i < indent; ++i)
printf(" ");
printf(" ");
if (node.is_document()) {
printf("*Document*\n");
} else if (node.is_element()) {
@ -31,17 +31,36 @@ void dump_tree(const Node& node)
--indent;
}
void dump_tree(const LayoutNode& node)
void dump_tree(const LayoutNode& layout_node)
{
static int indent = 0;
for (int i = 0; i < indent; ++i)
printf(" ");
printf("%s{%p}", node.class_name(), &node);
if (node.is_text())
printf(" \"%s\"", static_cast<const LayoutText&>(node).text().characters());
printf(" ");
String tag_name;
if (layout_node.is_anonymous())
tag_name = "(anonymous)";
else if (layout_node.node()->is_text())
tag_name = "#text";
else if (layout_node.node()->is_document())
tag_name = "#document";
else if (layout_node.node()->is_element())
tag_name = static_cast<const Element&>(*layout_node.node()).tag_name();
else
tag_name = "???";
printf("%s {%s} at (%d,%d) size %dx%d",
layout_node.class_name(),
tag_name.characters(),
layout_node.rect().x(),
layout_node.rect().y(),
layout_node.rect().width(),
layout_node.rect().height());
if (layout_node.is_text())
printf(" \"%s\"", static_cast<const LayoutText&>(layout_node).text().characters());
printf("\n");
++indent;
node.for_each_child([](auto& child) {
layout_node.for_each_child([](auto& child) {
dump_tree(child);
});
--indent;