#pragma once #include #include class Element; class LayoutBlock : public LayoutNodeWithStyle { public: LayoutBlock(const Node*, NonnullRefPtr); virtual ~LayoutBlock() override; virtual const char* class_name() const override { return "LayoutBlock"; } virtual void layout() override; virtual void render(RenderingContext&) override; virtual LayoutNode& inline_wrapper() override; bool children_are_inline() const; Vector& line_boxes() { return m_line_boxes; } const Vector& line_boxes() const { return m_line_boxes; } virtual HitTestResult hit_test(const Point&) const override; private: virtual bool is_block() const override { return true; } NonnullRefPtr style_for_anonymous_block() const; void layout_inline_children(); void layout_block_children(); void compute_width(); void compute_position(); void compute_height(); Vector m_line_boxes; };