LayoutNode.cpp 616 B

12345678910111213141516171819202122232425262728
  1. #include <LibHTML/Layout/LayoutBlock.h>
  2. #include <LibHTML/Layout/LayoutNode.h>
  3. LayoutNode::LayoutNode(const Node* node, StyleProperties&& style_properties)
  4. : m_node(node)
  5. , m_style_properties(style_properties)
  6. {
  7. }
  8. LayoutNode::~LayoutNode()
  9. {
  10. }
  11. void LayoutNode::layout()
  12. {
  13. for_each_child([](auto& child) {
  14. child.layout();
  15. });
  16. }
  17. const LayoutBlock* LayoutNode::containing_block() const
  18. {
  19. for (auto* ancestor = parent(); ancestor; ancestor = ancestor->parent()) {
  20. if (ancestor->is_block())
  21. return static_cast<const LayoutBlock*>(ancestor);
  22. }
  23. return nullptr;
  24. }