LayoutText.h 931 B

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