LayoutText.h 962 B

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include <LibHTML/DOM/Text.h>
  3. #include <LibHTML/Layout/LayoutInline.h>
  4. class Font;
  5. class LineBoxFragment;
  6. class LayoutText : public LayoutInline {
  7. public:
  8. explicit LayoutText(const Text&);
  9. virtual ~LayoutText() override;
  10. const Text& node() const { return static_cast<const Text&>(*LayoutNode::node()); }
  11. const String& text_for_style(const StyleProperties&) const;
  12. virtual const char* class_name() const override { return "LayoutText"; }
  13. virtual bool is_text() const final { return true; }
  14. void render_fragment(RenderingContext&, const LineBoxFragment&) const;
  15. virtual void split_into_lines(LayoutBlock& container) override;
  16. const StyleProperties& style() const { return parent()->style(); }
  17. private:
  18. template<typename Callback>
  19. void for_each_word(Callback) const;
  20. template<typename Callback>
  21. void for_each_source_line(Callback) const;
  22. void load_font();
  23. RefPtr<Font> m_font;
  24. };