diff options
author | Andreas Kling <kling@serenityos.org> | 2022-03-10 15:50:57 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-03-11 00:21:49 +0100 |
commit | 053766d79cc0916d073a96c3b4a515ba9d714cf6 (patch) | |
tree | 48f92ceeaeb5bc19dc262f6174749b249f1514f7 /Userland/Libraries/LibWeb/Painting/Paintable.cpp | |
parent | 0500dbc3f6e132cc4cb25b53812e2e71d04ff326 (diff) | |
download | serenity-053766d79cc0916d073a96c3b4a515ba9d714cf6.zip |
LibWeb: Split Paintable into Paintable and PaintableBox
To prepare for paintable inline content, we take the basic painting
functionality and hoist it into a base class.
Diffstat (limited to 'Userland/Libraries/LibWeb/Painting/Paintable.cpp')
-rw-r--r-- | Userland/Libraries/LibWeb/Painting/Paintable.cpp | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/Userland/Libraries/LibWeb/Painting/Paintable.cpp b/Userland/Libraries/LibWeb/Painting/Paintable.cpp index 4471bd7a84..dd2b2c176b 100644 --- a/Userland/Libraries/LibWeb/Painting/Paintable.cpp +++ b/Userland/Libraries/LibWeb/Painting/Paintable.cpp @@ -13,17 +13,22 @@ namespace Web::Painting { -Paintable::Paintable(Layout::Box const& layout_box) - : m_layout_box(layout_box) +NonnullOwnPtr<PaintableBox> PaintableBox::create(Layout::Box const& layout_box) { + return adopt_own(*new PaintableBox(layout_box)); } -Paintable::~Paintable() +PaintableBox::PaintableBox(Layout::Box const& layout_box) + : Paintable(layout_box) +{ +} + +PaintableBox::~PaintableBox() { } PaintableWithLines::PaintableWithLines(Layout::BlockContainer const& layout_box) - : Paintable(layout_box) + : PaintableBox(layout_box) { } @@ -31,7 +36,7 @@ PaintableWithLines::~PaintableWithLines() { } -void Paintable::set_offset(const Gfx::FloatPoint& offset) +void PaintableBox::set_offset(const Gfx::FloatPoint& offset) { if (m_offset == offset) return; @@ -40,7 +45,7 @@ void Paintable::set_offset(const Gfx::FloatPoint& offset) const_cast<Layout::Box&>(layout_box()).did_set_rect(); } -void Paintable::set_content_size(Gfx::FloatSize const& size) +void PaintableBox::set_content_size(Gfx::FloatSize const& size) { if (m_content_size == size) return; @@ -49,7 +54,7 @@ void Paintable::set_content_size(Gfx::FloatSize const& size) const_cast<Layout::Box&>(layout_box()).did_set_rect(); } -Gfx::FloatPoint Paintable::effective_offset() const +Gfx::FloatPoint PaintableBox::effective_offset() const { if (m_containing_line_box_fragment.has_value()) { auto const& fragment = layout_box().containing_block()->paint_box()->line_boxes()[m_containing_line_box_fragment->line_box_index].fragments()[m_containing_line_box_fragment->fragment_index]; @@ -58,7 +63,7 @@ Gfx::FloatPoint Paintable::effective_offset() const return m_offset; } -Gfx::FloatRect Paintable::absolute_rect() const +Gfx::FloatRect PaintableBox::absolute_rect() const { Gfx::FloatRect rect { effective_offset(), content_size() }; for (auto* block = layout_box().containing_block(); block; block = block->containing_block()) @@ -66,12 +71,12 @@ Gfx::FloatRect Paintable::absolute_rect() const return rect; } -void Paintable::set_containing_line_box_fragment(Optional<Layout::LineBoxFragmentCoordinate> fragment_coordinate) +void PaintableBox::set_containing_line_box_fragment(Optional<Layout::LineBoxFragmentCoordinate> fragment_coordinate) { m_containing_line_box_fragment = fragment_coordinate; } -Painting::StackingContext* Paintable::enclosing_stacking_context() +Painting::StackingContext* PaintableBox::enclosing_stacking_context() { for (auto* ancestor = layout_box().parent(); ancestor; ancestor = ancestor->parent()) { if (!is<Layout::Box>(ancestor)) @@ -86,7 +91,7 @@ Painting::StackingContext* Paintable::enclosing_stacking_context() VERIFY_NOT_REACHED(); } -void Paintable::paint(PaintContext& context, PaintPhase phase) const +void PaintableBox::paint(PaintContext& context, PaintPhase phase) const { if (!is_visible()) return; @@ -145,7 +150,7 @@ void Paintable::paint(PaintContext& context, PaintPhase phase) const } } -void Paintable::paint_border(PaintContext& context) const +void PaintableBox::paint_border(PaintContext& context) const { auto borders_data = BordersData { .top = computed_values().border_top(), @@ -156,7 +161,7 @@ void Paintable::paint_border(PaintContext& context) const paint_all_borders(context, absolute_border_box_rect(), normalized_border_radius_data(), borders_data); } -void Paintable::paint_background(PaintContext& context) const +void PaintableBox::paint_background(PaintContext& context) const { // If the body's background properties were propagated to the root element, do no re-paint the body's background. if (layout_box().is_body() && document().html_element()->should_use_body_background_properties()) @@ -188,7 +193,7 @@ void Paintable::paint_background(PaintContext& context) const Painting::paint_background(context, layout_box(), background_rect, background_color, background_layers, normalized_border_radius_data()); } -void Paintable::paint_box_shadow(PaintContext& context) const +void PaintableBox::paint_box_shadow(PaintContext& context) const { auto box_shadow_data = computed_values().box_shadow(); if (box_shadow_data.is_empty()) @@ -208,7 +213,7 @@ void Paintable::paint_box_shadow(PaintContext& context) const Painting::paint_box_shadow(context, enclosing_int_rect(absolute_border_box_rect()), resolved_box_shadow_data); } -BorderRadiusData Paintable::normalized_border_radius_data() const +BorderRadiusData PaintableBox::normalized_border_radius_data() const { return Painting::normalized_border_radius_data(layout_box(), absolute_border_box_rect(), computed_values().border_top_left_radius(), @@ -217,7 +222,7 @@ BorderRadiusData Paintable::normalized_border_radius_data() const computed_values().border_bottom_left_radius()); } -void Paintable::before_children_paint(PaintContext& context, PaintPhase) const +void PaintableBox::before_children_paint(PaintContext& context, PaintPhase) const { // FIXME: Support more overflow variations. if (computed_values().overflow_x() == CSS::Overflow::Hidden && computed_values().overflow_y() == CSS::Overflow::Hidden) { @@ -226,7 +231,7 @@ void Paintable::before_children_paint(PaintContext& context, PaintPhase) const } } -void Paintable::after_children_paint(PaintContext& context, PaintPhase) const +void PaintableBox::after_children_paint(PaintContext& context, PaintPhase) const { // FIXME: Support more overflow variations. if (computed_values().overflow_x() == CSS::Overflow::Hidden && computed_values().overflow_y() == CSS::Overflow::Hidden) @@ -238,7 +243,7 @@ void PaintableWithLines::paint(PaintContext& context, PaintPhase phase) const if (!is_visible()) return; - Paintable::paint(context, phase); + PaintableBox::paint(context, phase); if (m_line_boxes.is_empty()) return; |