1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 19:27:44 +00:00

LibWeb: Virtualize Layout::Node::paint_fragment()

LineBoxFragment no longer needs to care what type of layout node a
fragment refers to during paint, it can just call paint_fragment(). :^)
This commit is contained in:
Andreas Kling 2020-12-03 19:30:48 +01:00
parent c189897e29
commit f35b406dfb
4 changed files with 4 additions and 8 deletions

View file

@ -36,7 +36,7 @@ public:
virtual ~InlineNode() override;
virtual const char* class_name() const override { return "InlineNode"; }
void paint_fragment(PaintContext&, const LineBoxFragment&, PaintPhase) const;
virtual void paint_fragment(PaintContext&, const LineBoxFragment&, PaintPhase) const override;
virtual void split_into_lines(BlockBox& containing_block, LayoutMode) override;

View file

@ -29,7 +29,6 @@
#include <LibWeb/Layout/InitialContainingBlockBox.h>
#include <LibWeb/Layout/LineBoxFragment.h>
#include <LibWeb/Layout/TextNode.h>
#include <LibWeb/Layout/InlineNode.h>
#include <LibWeb/Painting/PaintContext.h>
#include <ctype.h>
@ -42,11 +41,7 @@ void LineBoxFragment::paint(PaintContext& context, PaintPhase phase)
return;
}
if (is<InlineNode>(layout_node()))
downcast<InlineNode>(layout_node()).paint_fragment(context, *this, phase);
if (is<TextNode>(layout_node()))
downcast<TextNode>(layout_node()).paint_fragment(context, *this, phase);
layout_node().paint_fragment(context, *this, phase);
}
bool LineBoxFragment::ends_in_whitespace() const

View file

@ -127,6 +127,7 @@ public:
virtual void before_children_paint(PaintContext&, PaintPhase) {};
virtual void paint(PaintContext&, PaintPhase);
virtual void paint_fragment(PaintContext&, const LineBoxFragment&, PaintPhase) const { }
virtual void after_children_paint(PaintContext&, PaintPhase) {};
bool is_floating() const;

View file

@ -46,7 +46,7 @@ public:
virtual const char* class_name() const override { return "TextNode"; }
virtual bool is_text() const final { return true; }
void paint_fragment(PaintContext&, const LineBoxFragment&, PaintPhase) const;
virtual void paint_fragment(PaintContext&, const LineBoxFragment&, PaintPhase) const override;
virtual void split_into_lines(BlockBox& container, LayoutMode) override;