LayoutText.h 750 B

12345678910111213141516171819202122232425262728293031323334
  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. struct Run {
  15. Point pos;
  16. String text;
  17. };
  18. const Vector<Run>& runs() const { return m_runs; }
  19. private:
  20. void load_font();
  21. void compute_runs();
  22. Vector<Run> m_runs;
  23. RefPtr<Font> m_font;
  24. };