LayoutText.h 941 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include <LibHTML/DOM/Text.h>
  3. #include <LibHTML/Layout/LayoutNode.h>
  4. class Font;
  5. class LayoutText : public LayoutNode {
  6. public:
  7. LayoutText(const Text&, StyleProperties&&);
  8. virtual ~LayoutText() override;
  9. const Text& node() const { return static_cast<const Text&>(*LayoutNode::node()); }
  10. const String& text() const;
  11. virtual const char* class_name() const override { return "LayoutText"; }
  12. virtual bool is_text() const final { return true; }
  13. virtual void layout() override;
  14. virtual void render(RenderingContext&) override;
  15. struct Run {
  16. Point pos;
  17. String text;
  18. };
  19. const Vector<Run>& runs() const { return m_runs; }
  20. virtual HitTestResult hit_test(const Point&) const override;
  21. private:
  22. template<typename Callback>
  23. void for_each_run(Callback) const;
  24. void load_font();
  25. void compute_runs();
  26. Vector<Run> m_runs;
  27. RefPtr<Font> m_font;
  28. };