LayoutBox.h 1.1 KB

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