LayoutBox.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #pragma once
  2. #include <LibHTML/Layout/LayoutNode.h>
  3. class LayoutBox : public LayoutNodeWithStyleAndBoxModelMetrics {
  4. public:
  5. const Rect& rect() const { return m_rect; }
  6. Rect& rect() { return m_rect; }
  7. void set_rect(const Rect& rect) { m_rect = rect; }
  8. int x() const { return rect().x(); }
  9. int y() const { return rect().y(); }
  10. int width() const { return rect().width(); }
  11. int height() const { return rect().height(); }
  12. Size size() const { return rect().size(); }
  13. Point position() const { return rect().location(); }
  14. virtual HitTestResult hit_test(const Point& position) const override;
  15. virtual void set_needs_display() override;
  16. bool is_body() const;
  17. protected:
  18. LayoutBox(const Node* node, NonnullRefPtr<StyleProperties> style)
  19. : LayoutNodeWithStyleAndBoxModelMetrics(node, move(style))
  20. {
  21. }
  22. virtual void render(RenderingContext&) override;
  23. private:
  24. virtual bool is_box() const override { return true; }
  25. Rect m_rect;
  26. };
  27. template<>
  28. inline bool is<LayoutBox>(const LayoutNode& node)
  29. {
  30. return node.is_box();
  31. }