diff --git a/LibHTML/Dump.cpp b/LibHTML/Dump.cpp index 21339e39b1..8fbaec164d 100644 --- a/LibHTML/Dump.cpp +++ b/LibHTML/Dump.cpp @@ -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(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(*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(layout_node).text().characters()); printf("\n"); ++indent; - node.for_each_child([](auto& child) { + layout_node.for_each_child([](auto& child) { dump_tree(child); }); --indent; diff --git a/LibHTML/Layout/LayoutNode.h b/LibHTML/Layout/LayoutNode.h index cc83db6fd9..0e47154992 100644 --- a/LibHTML/Layout/LayoutNode.h +++ b/LibHTML/Layout/LayoutNode.h @@ -2,6 +2,7 @@ #include #include +#include class Node; @@ -13,6 +14,10 @@ public: void release(); int retain_count() const { return m_retain_count; } + const Rect& rect() const { return m_rect; } + void set_rect(const Rect& rect) { m_rect = rect; } + + bool is_anonymous() const { return !m_node; } const Node* node() const { return m_node; } LayoutNode* next_sibling() { return m_next_sibling; } @@ -50,5 +55,5 @@ private: LayoutNode* m_last_child { nullptr }; LayoutNode* m_next_sibling { nullptr }; LayoutNode* m_previous_sibling { nullptr }; + Rect m_rect; }; -