LayoutBlock.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include <LibHTML/Layout/LayoutNode.h>
  3. #include <LibHTML/Layout/LineBox.h>
  4. class Element;
  5. class LayoutBlock : public LayoutNode {
  6. public:
  7. LayoutBlock(const Node*, NonnullRefPtr<StyleProperties>);
  8. virtual ~LayoutBlock() override;
  9. virtual const char* class_name() const override { return "LayoutBlock"; }
  10. virtual void layout() override;
  11. virtual void render(RenderingContext&) override;
  12. virtual LayoutNode& inline_wrapper() override;
  13. bool children_are_inline() const;
  14. Vector<LineBox>& line_boxes() { return m_line_boxes; }
  15. const Vector<LineBox>& line_boxes() const { return m_line_boxes; }
  16. virtual HitTestResult hit_test(const Point&) const override;
  17. private:
  18. virtual bool is_block() const override { return true; }
  19. NonnullRefPtr<StyleProperties> style_for_anonymous_block() const;
  20. void layout_inline_children();
  21. void layout_block_children();
  22. void compute_width();
  23. void compute_position();
  24. void compute_height();
  25. Vector<LineBox> m_line_boxes;
  26. };