mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
LibHTML: Give LayoutNodes a rect.
Also improve the layout tree dump format somewhat.
This commit is contained in:
parent
c52d553249
commit
fec098b5cd
Notes:
sideshowbarker
2024-07-19 13:35:04 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/fec098b5cd1
2 changed files with 32 additions and 8 deletions
|
@ -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;
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <AK/Retained.h>
|
||||
#include <AK/Vector.h>
|
||||
#include <SharedGraphics/Rect.h>
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue