From 9165faca5e74502458a6cee4907057fda4e1b0ec Mon Sep 17 00:00:00 2001 From: Zac Brannelly Date: Sun, 3 Mar 2024 14:59:02 +1100 Subject: [PATCH] LibWeb: Support CSS property `background-clip: text` From https://drafts.csswg.org/css-backgrounds-4/#background-clip "The background is painted within (clipped to) the intersection of the border box and the geometry of the text in the element and its in-flow and floated descendants" This change implements it in the following way: 1. Traverse the descendants of the element, collecting the Gfx::Path of glyphs into a vector. 2. The vector of collected paths is saved in the background painting command. 3. The painting commands executor uses the list of glyphs to paint a mask for background clipping. Co-authored-by: Aliaksandr Kalenik --- .../LibWeb/Ref/css-background-clip-text.html | 84 ++++++++++++++ .../css-background-clip-text-ref.html | 15 +++ .../images/css-background-clip-text.png | Bin 0 -> 208305 bytes .../CSS/StyleValues/AbstractImageStyleValue.h | 2 +- .../StyleValues/ConicGradientStyleValue.cpp | 4 +- .../CSS/StyleValues/ConicGradientStyleValue.h | 2 +- .../CSS/StyleValues/ImageStyleValue.cpp | 4 +- .../LibWeb/CSS/StyleValues/ImageStyleValue.h | 2 +- .../StyleValues/LinearGradientStyleValue.cpp | 4 +- .../StyleValues/LinearGradientStyleValue.h | 2 +- .../StyleValues/RadialGradientStyleValue.cpp | 5 +- .../StyleValues/RadialGradientStyleValue.h | 2 +- .../LibWeb/Painting/BackgroundPainting.cpp | 11 +- .../LibWeb/Painting/BackgroundPainting.h | 2 +- Userland/Libraries/LibWeb/Painting/Command.h | 6 + .../LibWeb/Painting/CommandExecutorCPU.cpp | 109 ++++++++++++++---- .../LibWeb/Painting/CommandExecutorCPU.h | 12 +- .../LibWeb/Painting/CommandExecutorGPU.cpp | 16 ++- .../LibWeb/Painting/CommandExecutorGPU.h | 12 +- .../Libraries/LibWeb/Painting/CommandList.cpp | 13 ++- .../Libraries/LibWeb/Painting/CommandList.h | 13 ++- .../LibWeb/Painting/GradientPainting.cpp | 12 +- .../LibWeb/Painting/GradientPainting.h | 6 +- .../LibWeb/Painting/PaintableBox.cpp | 68 ++++++++++- .../Libraries/LibWeb/Painting/PaintableBox.h | 2 + .../LibWeb/Painting/RecordingPainter.cpp | 34 +++--- .../LibWeb/Painting/RecordingPainter.h | 16 +-- 27 files changed, 353 insertions(+), 105 deletions(-) create mode 100644 Tests/LibWeb/Ref/css-background-clip-text.html create mode 100644 Tests/LibWeb/Ref/reference/css-background-clip-text-ref.html create mode 100644 Tests/LibWeb/Ref/reference/images/css-background-clip-text.png diff --git a/Tests/LibWeb/Ref/css-background-clip-text.html b/Tests/LibWeb/Ref/css-background-clip-text.html new file mode 100644 index 0000000000..a9c3c256ea --- /dev/null +++ b/Tests/LibWeb/Ref/css-background-clip-text.html @@ -0,0 +1,84 @@ + + + + + + + Document + + + + + + + +

The background extends behind the border.

+

+ The background extends to the inside edge of the border. +

+

+ The background extends only to the edge of the content box. +

+
+ The background is clipped to the foreground text. + Some other text in a sub-element +
+
+ The background is clipped to the foreground text. + Some other text in a sub-element +
+
+ The background is clipped to the foreground text. + Some other text in a sub-element +
+
+ Testing text. +
+
The is nested text that should still be clipped to the background
+
+
+ + diff --git a/Tests/LibWeb/Ref/reference/css-background-clip-text-ref.html b/Tests/LibWeb/Ref/reference/css-background-clip-text-ref.html new file mode 100644 index 0000000000..5cfb475e25 --- /dev/null +++ b/Tests/LibWeb/Ref/reference/css-background-clip-text-ref.html @@ -0,0 +1,15 @@ + + + diff --git a/Tests/LibWeb/Ref/reference/images/css-background-clip-text.png b/Tests/LibWeb/Ref/reference/images/css-background-clip-text.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6617f9bd0dc19470f968de2928b26974794921 GIT binary patch literal 208305 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

U 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 NgQu&X%Q~loCIFKvTRQ*% literal 0 HcmV?d00001 diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/AbstractImageStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/AbstractImageStyleValue.h index e0338a5247..1327198b4c 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/AbstractImageStyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/AbstractImageStyleValue.h @@ -36,7 +36,7 @@ public: virtual void resolve_for_size(Layout::NodeWithStyleAndBoxModelMetrics const&, CSSPixelSize) const {}; virtual bool is_paintable() const = 0; - virtual void paint(PaintContext& context, DevicePixelRect const& dest_rect, ImageRendering) const = 0; + virtual void paint(PaintContext& context, DevicePixelRect const& dest_rect, ImageRendering, Vector const& clip_paths = {}) const = 0; virtual Optional color_if_single_pixel_bitmap() const { return {}; } }; diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/ConicGradientStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/ConicGradientStyleValue.cpp index efe6ae695f..72e7e20973 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/ConicGradientStyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/ConicGradientStyleValue.cpp @@ -42,10 +42,10 @@ void ConicGradientStyleValue::resolve_for_size(Layout::NodeWithStyleAndBoxModelM m_resolved->position = m_properties.position->resolved(node, CSSPixelRect { { 0, 0 }, size }); } -void ConicGradientStyleValue::paint(PaintContext& context, DevicePixelRect const& dest_rect, CSS::ImageRendering) const +void ConicGradientStyleValue::paint(PaintContext& context, DevicePixelRect const& dest_rect, CSS::ImageRendering, Vector const& clip_paths) const { VERIFY(m_resolved.has_value()); - Painting::paint_conic_gradient(context, dest_rect, m_resolved->data, context.rounded_device_point(m_resolved->position)); + Painting::paint_conic_gradient(context, dest_rect, m_resolved->data, context.rounded_device_point(m_resolved->position), clip_paths); } bool ConicGradientStyleValue::equals(StyleValue const& other) const diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/ConicGradientStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/ConicGradientStyleValue.h index 4b1bad4fff..2a5a73b138 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/ConicGradientStyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/ConicGradientStyleValue.h @@ -25,7 +25,7 @@ public: virtual String to_string() const override; - void paint(PaintContext&, DevicePixelRect const& dest_rect, CSS::ImageRendering) const override; + void paint(PaintContext&, DevicePixelRect const& dest_rect, CSS::ImageRendering, Vector const& clip_paths = {}) const override; virtual bool equals(StyleValue const& other) const override; diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.cpp index 587f0602b7..b88253d37b 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.cpp @@ -131,11 +131,11 @@ Optional ImageStyleValue::natural_aspect_ratio() const return {}; } -void ImageStyleValue::paint(PaintContext& context, DevicePixelRect const& dest_rect, CSS::ImageRendering image_rendering) const +void ImageStyleValue::paint(PaintContext& context, DevicePixelRect const& dest_rect, CSS::ImageRendering image_rendering, Vector const& clip_paths) const { if (auto const* b = bitmap(m_current_frame_index, dest_rect.size().to_type()); b != nullptr) { auto scaling_mode = to_gfx_scaling_mode(image_rendering, b->rect(), dest_rect.to_type()); - context.recording_painter().draw_scaled_immutable_bitmap(dest_rect.to_type(), *b, b->rect(), scaling_mode); + context.recording_painter().draw_scaled_immutable_bitmap(dest_rect.to_type(), *b, b->rect(), scaling_mode, clip_paths); } } diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.h index 875f65c1ce..b237a26e37 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.h @@ -45,7 +45,7 @@ public: Optional natural_aspect_ratio() const override; virtual bool is_paintable() const override; - void paint(PaintContext& context, DevicePixelRect const& dest_rect, CSS::ImageRendering image_rendering) const override; + void paint(PaintContext& context, DevicePixelRect const& dest_rect, CSS::ImageRendering image_rendering, Vector const& clip_paths = {}) const override; virtual Optional color_if_single_pixel_bitmap() const override; diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/LinearGradientStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/LinearGradientStyleValue.cpp index 5a623b1604..842bb32061 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/LinearGradientStyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/LinearGradientStyleValue.cpp @@ -109,10 +109,10 @@ void LinearGradientStyleValue::resolve_for_size(Layout::NodeWithStyleAndBoxModel m_resolved = ResolvedData { Painting::resolve_linear_gradient_data(node, size, *this), size }; } -void LinearGradientStyleValue::paint(PaintContext& context, DevicePixelRect const& dest_rect, CSS::ImageRendering) const +void LinearGradientStyleValue::paint(PaintContext& context, DevicePixelRect const& dest_rect, CSS::ImageRendering, Vector const& clip_paths) const { VERIFY(m_resolved.has_value()); - Painting::paint_linear_gradient(context, dest_rect, m_resolved->data); + Painting::paint_linear_gradient(context, dest_rect, m_resolved->data, clip_paths); } } diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/LinearGradientStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/LinearGradientStyleValue.h index 74f84de786..06b46e192f 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/LinearGradientStyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/LinearGradientStyleValue.h @@ -60,7 +60,7 @@ public: void resolve_for_size(Layout::NodeWithStyleAndBoxModelMetrics const&, CSSPixelSize) const override; bool is_paintable() const override { return true; } - void paint(PaintContext& context, DevicePixelRect const& dest_rect, CSS::ImageRendering image_rendering) const override; + void paint(PaintContext& context, DevicePixelRect const& dest_rect, CSS::ImageRendering image_rendering, Vector const& clip_paths = {}) const override; private: LinearGradientStyleValue(GradientDirection direction, Vector color_stop_list, GradientType type, GradientRepeating repeating) diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/RadialGradientStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/RadialGradientStyleValue.cpp index 94dcc17942..fbaa48f871 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/RadialGradientStyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/RadialGradientStyleValue.cpp @@ -207,12 +207,13 @@ bool RadialGradientStyleValue::equals(StyleValue const& other) const return m_properties == other_gradient.m_properties; } -void RadialGradientStyleValue::paint(PaintContext& context, DevicePixelRect const& dest_rect, CSS::ImageRendering) const +void RadialGradientStyleValue::paint(PaintContext& context, DevicePixelRect const& dest_rect, CSS::ImageRendering, Vector const& clip_paths) const { VERIFY(m_resolved.has_value()); Painting::paint_radial_gradient(context, dest_rect, m_resolved->data, context.rounded_device_point(m_resolved->center), - context.rounded_device_size(m_resolved->gradient_size)); + context.rounded_device_size(m_resolved->gradient_size), + clip_paths); } } diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/RadialGradientStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/RadialGradientStyleValue.h index 2f8c6bd795..bfe5556de8 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/RadialGradientStyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/RadialGradientStyleValue.h @@ -51,7 +51,7 @@ public: virtual String to_string() const override; - void paint(PaintContext&, DevicePixelRect const& dest_rect, CSS::ImageRendering) const override; + void paint(PaintContext&, DevicePixelRect const& dest_rect, CSS::ImageRendering, Vector const& clip_paths = {}) const override; virtual bool equals(StyleValue const& other) const override; diff --git a/Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp b/Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp index 1be5c43df4..de24a0f556 100644 --- a/Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp +++ b/Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp @@ -61,7 +61,7 @@ static CSSPixelSize run_default_sizing_algorithm( } // https://www.w3.org/TR/css-backgrounds-3/#backgrounds -void paint_background(PaintContext& context, Layout::NodeWithStyleAndBoxModelMetrics const& layout_node, CSSPixelRect const& border_rect, Color background_color, CSS::ImageRendering image_rendering, Vector const* background_layers, BorderRadiiData const& border_radii) +void paint_background(PaintContext& context, Layout::NodeWithStyleAndBoxModelMetrics const& layout_node, CSSPixelRect const& border_rect, Color background_color, CSS::ImageRendering image_rendering, Vector const* background_layers, BorderRadiiData const& border_radii, Vector const& clip_paths) { auto& painter = context.recording_painter(); @@ -118,13 +118,14 @@ void paint_background(PaintContext& context, Layout::NodeWithStyleAndBoxModelMet } } - context.recording_painter().fill_rect_with_rounded_corners( + painter.fill_rect_with_rounded_corners( context.rounded_device_rect(color_box.rect).to_type(), background_color, color_box.radii.top_left.as_corner(context), color_box.radii.top_right.as_corner(context), color_box.radii.bottom_right.as_corner(context), - color_box.radii.bottom_left.as_corner(context)); + color_box.radii.bottom_left.as_corner(context), + clip_paths); if (!has_paintable_layers) return; @@ -388,10 +389,10 @@ void paint_background(PaintContext& context, Layout::NodeWithStyleAndBoxModelMet fill_rect = fill_rect->united(image_device_rect); } }); - painter.fill_rect(fill_rect->to_type(), color.value()); + painter.fill_rect(fill_rect->to_type(), color.value(), clip_paths); } else { for_each_image_device_rect([&](auto const& image_device_rect) { - image.paint(context, image_device_rect, image_rendering); + image.paint(context, image_device_rect, image_rendering, clip_paths); }); } } diff --git a/Userland/Libraries/LibWeb/Painting/BackgroundPainting.h b/Userland/Libraries/LibWeb/Painting/BackgroundPainting.h index 32c5fbad40..8da6a9240c 100644 --- a/Userland/Libraries/LibWeb/Painting/BackgroundPainting.h +++ b/Userland/Libraries/LibWeb/Painting/BackgroundPainting.h @@ -12,6 +12,6 @@ namespace Web::Painting { -void paint_background(PaintContext&, Layout::NodeWithStyleAndBoxModelMetrics const&, CSSPixelRect const&, Color background_color, CSS::ImageRendering, Vector const*, BorderRadiiData const&); +void paint_background(PaintContext&, Layout::NodeWithStyleAndBoxModelMetrics const&, CSSPixelRect const&, Color background_color, CSS::ImageRendering, Vector const*, BorderRadiiData const&, Vector const& clip_paths = {}); } diff --git a/Userland/Libraries/LibWeb/Painting/Command.h b/Userland/Libraries/LibWeb/Painting/Command.h index 7bf45740b5..6943aed39b 100644 --- a/Userland/Libraries/LibWeb/Painting/Command.h +++ b/Userland/Libraries/LibWeb/Painting/Command.h @@ -65,6 +65,7 @@ struct DrawText { struct FillRect { Gfx::IntRect rect; Color color; + Vector clip_paths; [[nodiscard]] Gfx::IntRect bounding_rect() const { return rect; } void translate_by(Gfx::IntPoint const& offset) { rect.translate_by(offset); } @@ -85,6 +86,7 @@ struct DrawScaledImmutableBitmap { NonnullRefPtr bitmap; Gfx::IntRect src_rect; Gfx::Painter::ScalingMode scaling_mode; + Vector clip_paths; [[nodiscard]] Gfx::IntRect bounding_rect() const { return dst_rect; } void translate_by(Gfx::IntPoint const& offset) { dst_rect.translate_by(offset); } @@ -128,6 +130,7 @@ struct PopStackingContext { }; struct PaintLinearGradient { Gfx::IntRect gradient_rect; LinearGradientData linear_gradient_data; + Vector clip_paths; [[nodiscard]] Gfx::IntRect bounding_rect() const { return gradient_rect; } @@ -170,6 +173,7 @@ struct FillRectWithRoundedCorners { Gfx::AntiAliasingPainter::CornerRadius top_right_radius; Gfx::AntiAliasingPainter::CornerRadius bottom_left_radius; Gfx::AntiAliasingPainter::CornerRadius bottom_right_radius; + Vector clip_paths; [[nodiscard]] Gfx::IntRect bounding_rect() const { return rect; } void translate_by(Gfx::IntPoint const& offset) { rect.translate_by(offset); } @@ -334,6 +338,7 @@ struct PaintRadialGradient { RadialGradientData radial_gradient_data; Gfx::IntPoint center; Gfx::IntSize size; + Vector clip_paths; [[nodiscard]] Gfx::IntRect bounding_rect() const { return rect; } @@ -344,6 +349,7 @@ struct PaintConicGradient { Gfx::IntRect rect; ConicGradientData conic_gradient_data; Gfx::IntPoint position; + Vector clip_paths; [[nodiscard]] Gfx::IntRect bounding_rect() const { return rect; } diff --git a/Userland/Libraries/LibWeb/Painting/CommandExecutorCPU.cpp b/Userland/Libraries/LibWeb/Painting/CommandExecutorCPU.cpp index 40e3e5cabe..9f1844c3db 100644 --- a/Userland/Libraries/LibWeb/Painting/CommandExecutorCPU.cpp +++ b/Userland/Libraries/LibWeb/Painting/CommandExecutorCPU.cpp @@ -55,10 +55,38 @@ CommandResult CommandExecutorCPU::draw_text(Gfx::IntRect const& rect, String con return CommandResult::Continue; } -CommandResult CommandExecutorCPU::fill_rect(Gfx::IntRect const& rect, Color const& color) +template +void apply_clip_paths_to_painter(Gfx::IntRect const& rect, Callback callback, Vector const& clip_paths, Gfx::Painter& target_painter) { - auto& painter = this->painter(); - painter.fill_rect(rect, color); + // Setup a painter for a background canvas that we will paint to first. + auto background_canvas = Gfx::Bitmap::create(Gfx::BitmapFormat::BGRA8888, rect.size()).release_value_but_fixme_should_propagate_errors(); + Gfx::Painter painter(*background_canvas); + + // Offset the painter to paint in the correct location. + painter.translate(-rect.location()); + + // Paint the background canvas. + callback(painter); + + // Apply the clip path to the target painter. + Gfx::AntiAliasingPainter aa_painter(target_painter); + for (auto const& clip_path : clip_paths) { + auto fill_offset = clip_path.bounding_box().location().to_type() - rect.location(); + auto paint_style = Gfx::BitmapPaintStyle::create(*background_canvas, fill_offset).release_value_but_fixme_should_propagate_errors(); + aa_painter.fill_path(clip_path, paint_style); + } +} + +CommandResult CommandExecutorCPU::fill_rect(Gfx::IntRect const& rect, Color const& color, Vector const& clip_paths) +{ + auto paint_op = [&](Gfx::Painter& painter) { + painter.fill_rect(rect, color); + }; + if (clip_paths.is_empty()) { + paint_op(painter()); + } else { + apply_clip_paths_to_painter(rect, paint_op, clip_paths, painter()); + } return CommandResult::Continue; } @@ -69,10 +97,16 @@ CommandResult CommandExecutorCPU::draw_scaled_bitmap(Gfx::IntRect const& dst_rec return CommandResult::Continue; } -CommandResult CommandExecutorCPU::draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const& immutable_bitmap, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode) +CommandResult CommandExecutorCPU::draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const& immutable_bitmap, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode, Vector const& clip_paths) { - auto& painter = this->painter(); - painter.draw_scaled_bitmap(dst_rect, immutable_bitmap.bitmap(), src_rect, 1, scaling_mode); + auto paint_op = [&](Gfx::Painter& painter) { + painter.draw_scaled_bitmap(dst_rect, immutable_bitmap.bitmap(), src_rect, 1, scaling_mode); + }; + if (clip_paths.is_empty()) { + paint_op(painter()); + } else { + apply_clip_paths_to_painter(dst_rect, paint_op, clip_paths, painter()); + } return CommandResult::Continue; } @@ -200,12 +234,18 @@ CommandResult CommandExecutorCPU::pop_stacking_context() return CommandResult::Continue; } -CommandResult CommandExecutorCPU::paint_linear_gradient(Gfx::IntRect const& gradient_rect, Web::Painting::LinearGradientData const& linear_gradient_data) +CommandResult CommandExecutorCPU::paint_linear_gradient(Gfx::IntRect const& gradient_rect, Web::Painting::LinearGradientData const& linear_gradient_data, Vector const& clip_paths) { - auto const& data = linear_gradient_data; - painter().fill_rect_with_linear_gradient( - gradient_rect, data.color_stops.list, - data.gradient_angle, data.color_stops.repeat_length); + auto paint_op = [&](Gfx::Painter& painter) { + painter.fill_rect_with_linear_gradient( + gradient_rect, linear_gradient_data.color_stops.list, + linear_gradient_data.gradient_angle, linear_gradient_data.color_stops.repeat_length); + }; + if (clip_paths.is_empty()) { + paint_op(painter()); + } else { + apply_clip_paths_to_painter(gradient_rect, paint_op, clip_paths, painter()); + } return CommandResult::Continue; } @@ -255,16 +295,23 @@ CommandResult CommandExecutorCPU::paint_text_shadow(int blur_radius, Gfx::IntRec return CommandResult::Continue; } -CommandResult CommandExecutorCPU::fill_rect_with_rounded_corners(Gfx::IntRect const& rect, Color const& color, Gfx::AntiAliasingPainter::CornerRadius const& top_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& top_right_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_right_radius) +CommandResult CommandExecutorCPU::fill_rect_with_rounded_corners(Gfx::IntRect const& rect, Color const& color, Gfx::AntiAliasingPainter::CornerRadius const& top_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& top_right_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_right_radius, Vector const& clip_paths) { - Gfx::AntiAliasingPainter aa_painter(painter()); - aa_painter.fill_rect_with_rounded_corners( - rect, - color, - top_left_radius, - top_right_radius, - bottom_right_radius, - bottom_left_radius); + auto paint_op = [&](Gfx::Painter& painter) { + Gfx::AntiAliasingPainter aa_painter(painter); + aa_painter.fill_rect_with_rounded_corners( + rect, + color, + top_left_radius, + top_right_radius, + bottom_right_radius, + bottom_left_radius); + }; + if (clip_paths.is_empty()) { + paint_op(painter()); + } else { + apply_clip_paths_to_painter(rect, paint_op, clip_paths, painter()); + } return CommandResult::Continue; } @@ -380,15 +427,29 @@ CommandResult CommandExecutorCPU::draw_rect(Gfx::IntRect const& rect, Color cons return CommandResult::Continue; } -CommandResult CommandExecutorCPU::paint_radial_gradient(Gfx::IntRect const& rect, Web::Painting::RadialGradientData const& radial_gradient_data, Gfx::IntPoint const& center, Gfx::IntSize const& size) +CommandResult CommandExecutorCPU::paint_radial_gradient(Gfx::IntRect const& rect, Web::Painting::RadialGradientData const& radial_gradient_data, Gfx::IntPoint const& center, Gfx::IntSize const& size, Vector const& clip_paths) { - painter().fill_rect_with_radial_gradient(rect, radial_gradient_data.color_stops.list, center, size, radial_gradient_data.color_stops.repeat_length); + auto paint_op = [&](Gfx::Painter& painter) { + painter.fill_rect_with_radial_gradient(rect, radial_gradient_data.color_stops.list, center, size, radial_gradient_data.color_stops.repeat_length); + }; + if (clip_paths.is_empty()) { + paint_op(painter()); + } else { + apply_clip_paths_to_painter(rect, paint_op, clip_paths, painter()); + } return CommandResult::Continue; } -CommandResult CommandExecutorCPU::paint_conic_gradient(Gfx::IntRect const& rect, Web::Painting::ConicGradientData const& conic_gradient_data, Gfx::IntPoint const& position) +CommandResult CommandExecutorCPU::paint_conic_gradient(Gfx::IntRect const& rect, Web::Painting::ConicGradientData const& conic_gradient_data, Gfx::IntPoint const& position, Vector const& clip_paths) { - painter().fill_rect_with_conic_gradient(rect, conic_gradient_data.color_stops.list, position, conic_gradient_data.start_angle, conic_gradient_data.color_stops.repeat_length); + auto paint_op = [&](Gfx::Painter& painter) { + painter.fill_rect_with_conic_gradient(rect, conic_gradient_data.color_stops.list, position, conic_gradient_data.start_angle, conic_gradient_data.color_stops.repeat_length); + }; + if (clip_paths.is_empty()) { + paint_op(painter()); + } else { + apply_clip_paths_to_painter(rect, paint_op, clip_paths, painter()); + } return CommandResult::Continue; } diff --git a/Userland/Libraries/LibWeb/Painting/CommandExecutorCPU.h b/Userland/Libraries/LibWeb/Painting/CommandExecutorCPU.h index 1e7b01385d..333d0a6394 100644 --- a/Userland/Libraries/LibWeb/Painting/CommandExecutorCPU.h +++ b/Userland/Libraries/LibWeb/Painting/CommandExecutorCPU.h @@ -15,18 +15,18 @@ class CommandExecutorCPU : public CommandExecutor { public: CommandResult draw_glyph_run(Vector const& glyph_run, Color const&, Gfx::FloatPoint translation, double scale) override; CommandResult draw_text(Gfx::IntRect const& rect, String const& raw_text, Gfx::TextAlignment alignment, Color const&, Gfx::TextElision, Gfx::TextWrapping, Optional> const&) override; - CommandResult fill_rect(Gfx::IntRect const& rect, Color const&) override; + CommandResult fill_rect(Gfx::IntRect const& rect, Color const&, Vector const& clip_paths) override; CommandResult draw_scaled_bitmap(Gfx::IntRect const& dst_rect, Gfx::Bitmap const& bitmap, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode) override; - CommandResult draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const&, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode) override; + CommandResult draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const&, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode, Vector const& clip_paths = {}) override; CommandResult set_clip_rect(Gfx::IntRect const& rect) override; CommandResult clear_clip_rect() override; CommandResult push_stacking_context(float opacity, bool is_fixed_position, Gfx::IntRect const& source_paintable_rect, Gfx::IntPoint post_transform_translation, CSS::ImageRendering image_rendering, StackingContextTransform transform, Optional mask) override; CommandResult pop_stacking_context() override; - CommandResult paint_linear_gradient(Gfx::IntRect const&, Web::Painting::LinearGradientData const&) override; + CommandResult paint_linear_gradient(Gfx::IntRect const&, Web::Painting::LinearGradientData const&, Vector const& clip_paths = {}) override; CommandResult paint_outer_box_shadow(PaintOuterBoxShadowParams const&) override; CommandResult paint_inner_box_shadow(PaintOuterBoxShadowParams const&) override; CommandResult paint_text_shadow(int blur_radius, Gfx::IntRect const& shadow_bounding_rect, Gfx::IntRect const& text_rect, Span, Color const&, int fragment_baseline, Gfx::IntPoint const& draw_location) override; - CommandResult fill_rect_with_rounded_corners(Gfx::IntRect const&, Color const&, Gfx::AntiAliasingPainter::CornerRadius const& top_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& top_right_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_right_radius) override; + CommandResult fill_rect_with_rounded_corners(Gfx::IntRect const&, Color const&, Gfx::AntiAliasingPainter::CornerRadius const& top_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& top_right_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_right_radius, Vector const& clip_paths) override; CommandResult fill_path_using_color(Gfx::Path const&, Color const&, Gfx::Painter::WindingRule winding_rule, Gfx::FloatPoint const& aa_translation) override; CommandResult fill_path_using_paint_style(Gfx::Path const&, Gfx::PaintStyle const& paint_style, Gfx::Painter::WindingRule winding_rule, float opacity, Gfx::FloatPoint const& aa_translation) override; CommandResult stroke_path_using_color(Gfx::Path const&, Color const& color, float thickness, Gfx::FloatPoint const& aa_translation) override; @@ -38,8 +38,8 @@ public: CommandResult paint_frame(Gfx::IntRect const& rect, Palette const&, Gfx::FrameStyle) override; CommandResult apply_backdrop_filter(Gfx::IntRect const& backdrop_region, Web::CSS::ResolvedBackdropFilter const& backdrop_filter) override; CommandResult draw_rect(Gfx::IntRect const& rect, Color const&, bool rough) override; - CommandResult paint_radial_gradient(Gfx::IntRect const& rect, Web::Painting::RadialGradientData const& radial_gradient_data, Gfx::IntPoint const& center, Gfx::IntSize const& size) override; - CommandResult paint_conic_gradient(Gfx::IntRect const& rect, Web::Painting::ConicGradientData const& conic_gradient_data, Gfx::IntPoint const& position) override; + CommandResult paint_radial_gradient(Gfx::IntRect const& rect, Web::Painting::RadialGradientData const& radial_gradient_data, Gfx::IntPoint const& center, Gfx::IntSize const& size, Vector const& clip_paths = {}) override; + CommandResult paint_conic_gradient(Gfx::IntRect const& rect, Web::Painting::ConicGradientData const& conic_gradient_data, Gfx::IntPoint const& position, Vector const& clip_paths = {}) override; CommandResult draw_triangle_wave(Gfx::IntPoint const& p1, Gfx::IntPoint const& p2, Color const&, int amplitude, int thickness) override; CommandResult sample_under_corners(u32 id, CornerRadii const&, Gfx::IntRect const&, CornerClip) override; CommandResult blit_corner_clipping(u32 id) override; diff --git a/Userland/Libraries/LibWeb/Painting/CommandExecutorGPU.cpp b/Userland/Libraries/LibWeb/Painting/CommandExecutorGPU.cpp index 4d8779180e..e21c64df6d 100644 --- a/Userland/Libraries/LibWeb/Painting/CommandExecutorGPU.cpp +++ b/Userland/Libraries/LibWeb/Painting/CommandExecutorGPU.cpp @@ -53,8 +53,9 @@ CommandResult CommandExecutorGPU::draw_text(Gfx::IntRect const&, String const&, return CommandResult::Continue; } -CommandResult CommandExecutorGPU::fill_rect(Gfx::IntRect const& rect, Color const& color) +CommandResult CommandExecutorGPU::fill_rect(Gfx::IntRect const& rect, Color const& color, Vector const&) { + // FIXME: Support clip paths painter().fill_rect(rect, color); return CommandResult::Continue; } @@ -80,8 +81,9 @@ CommandResult CommandExecutorGPU::draw_scaled_bitmap(Gfx::IntRect const& dst_rec return CommandResult::Continue; } -CommandResult CommandExecutorGPU::draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const& immutable_bitmap, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode) +CommandResult CommandExecutorGPU::draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const& immutable_bitmap, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode, Vector const&) { + // TODO: Support clip paths painter().draw_scaled_immutable_bitmap(dst_rect, immutable_bitmap, src_rect, to_accelgfx_scaling_mode(scaling_mode)); return CommandResult::Continue; } @@ -160,8 +162,9 @@ CommandResult CommandExecutorGPU::pop_stacking_context() return CommandResult::Continue; } -CommandResult CommandExecutorGPU::paint_linear_gradient(Gfx::IntRect const& rect, Web::Painting::LinearGradientData const& data) +CommandResult CommandExecutorGPU::paint_linear_gradient(Gfx::IntRect const& rect, Web::Painting::LinearGradientData const& data, Vector const&) { + // FIXME: Support clip paths painter().fill_rect_with_linear_gradient(rect, data.color_stops.list, data.gradient_angle, data.color_stops.repeat_length); return CommandResult::Continue; } @@ -201,8 +204,9 @@ CommandResult CommandExecutorGPU::paint_text_shadow(int blur_radius, Gfx::IntRec return CommandResult::Continue; } -CommandResult CommandExecutorGPU::fill_rect_with_rounded_corners(Gfx::IntRect const& rect, Color const& color, Gfx::AntiAliasingPainter::CornerRadius const& top_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& top_right_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_right_radius) +CommandResult CommandExecutorGPU::fill_rect_with_rounded_corners(Gfx::IntRect const& rect, Color const& color, Gfx::AntiAliasingPainter::CornerRadius const& top_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& top_right_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_right_radius, Vector const&) { + // FIXME: Support clip paths painter().fill_rect_with_rounded_corners( rect, color, { static_cast(top_left_radius.horizontal_radius), static_cast(top_left_radius.vertical_radius) }, @@ -286,13 +290,13 @@ CommandResult CommandExecutorGPU::draw_rect(Gfx::IntRect const&, Color const&, b return CommandResult::Continue; } -CommandResult CommandExecutorGPU::paint_radial_gradient(Gfx::IntRect const&, Web::Painting::RadialGradientData const&, Gfx::IntPoint const&, Gfx::IntSize const&) +CommandResult CommandExecutorGPU::paint_radial_gradient(Gfx::IntRect const&, Web::Painting::RadialGradientData const&, Gfx::IntPoint const&, Gfx::IntSize const&, Vector const&) { // FIXME return CommandResult::Continue; } -CommandResult CommandExecutorGPU::paint_conic_gradient(Gfx::IntRect const&, Web::Painting::ConicGradientData const&, Gfx::IntPoint const&) +CommandResult CommandExecutorGPU::paint_conic_gradient(Gfx::IntRect const&, Web::Painting::ConicGradientData const&, Gfx::IntPoint const&, Vector const&) { // FIXME return CommandResult::Continue; diff --git a/Userland/Libraries/LibWeb/Painting/CommandExecutorGPU.h b/Userland/Libraries/LibWeb/Painting/CommandExecutorGPU.h index e78344fb7e..8a09d52ab0 100644 --- a/Userland/Libraries/LibWeb/Painting/CommandExecutorGPU.h +++ b/Userland/Libraries/LibWeb/Painting/CommandExecutorGPU.h @@ -16,18 +16,18 @@ class CommandExecutorGPU : public CommandExecutor { public: CommandResult draw_glyph_run(Vector const& glyph_run, Color const&, Gfx::FloatPoint translation, double scale) override; CommandResult draw_text(Gfx::IntRect const& rect, String const& raw_text, Gfx::TextAlignment alignment, Color const&, Gfx::TextElision, Gfx::TextWrapping, Optional> const&) override; - CommandResult fill_rect(Gfx::IntRect const& rect, Color const&) override; + CommandResult fill_rect(Gfx::IntRect const& rect, Color const&, Vector const& clip_paths) override; CommandResult draw_scaled_bitmap(Gfx::IntRect const& dst_rect, Gfx::Bitmap const& bitmap, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode) override; - CommandResult draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const&, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode) override; + CommandResult draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const&, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode, Vector const& clip_paths = {}) override; CommandResult set_clip_rect(Gfx::IntRect const& rect) override; CommandResult clear_clip_rect() override; CommandResult push_stacking_context(float opacity, bool, Gfx::IntRect const& source_paintable_rect, Gfx::IntPoint post_transform_translation, CSS::ImageRendering image_rendering, StackingContextTransform transform, Optional mask) override; CommandResult pop_stacking_context() override; - CommandResult paint_linear_gradient(Gfx::IntRect const&, Web::Painting::LinearGradientData const&) override; + CommandResult paint_linear_gradient(Gfx::IntRect const&, Web::Painting::LinearGradientData const&, Vector const& clip_paths = {}) override; CommandResult paint_outer_box_shadow(PaintOuterBoxShadowParams const&) override; CommandResult paint_inner_box_shadow(PaintOuterBoxShadowParams const&) override; CommandResult paint_text_shadow(int blur_radius, Gfx::IntRect const& shadow_bounding_rect, Gfx::IntRect const& text_rect, Span, Color const&, int fragment_baseline, Gfx::IntPoint const& draw_location) override; - CommandResult fill_rect_with_rounded_corners(Gfx::IntRect const&, Color const&, Gfx::AntiAliasingPainter::CornerRadius const& top_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& top_right_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_right_radius) override; + CommandResult fill_rect_with_rounded_corners(Gfx::IntRect const&, Color const&, Gfx::AntiAliasingPainter::CornerRadius const& top_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& top_right_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_right_radius, Vector const& clip_paths) override; CommandResult fill_path_using_color(Gfx::Path const&, Color const&, Gfx::Painter::WindingRule winding_rule, Gfx::FloatPoint const& aa_translation) override; CommandResult fill_path_using_paint_style(Gfx::Path const&, Gfx::PaintStyle const& paint_style, Gfx::Painter::WindingRule winding_rule, float opacity, Gfx::FloatPoint const& aa_translation) override; CommandResult stroke_path_using_color(Gfx::Path const&, Color const& color, float thickness, Gfx::FloatPoint const& aa_translation) override; @@ -39,8 +39,8 @@ public: CommandResult paint_frame(Gfx::IntRect const& rect, Palette const&, Gfx::FrameStyle) override; CommandResult apply_backdrop_filter(Gfx::IntRect const& backdrop_region, Web::CSS::ResolvedBackdropFilter const& backdrop_filter) override; CommandResult draw_rect(Gfx::IntRect const& rect, Color const&, bool rough) override; - CommandResult paint_radial_gradient(Gfx::IntRect const& rect, Web::Painting::RadialGradientData const& radial_gradient_data, Gfx::IntPoint const& center, Gfx::IntSize const& size) override; - CommandResult paint_conic_gradient(Gfx::IntRect const& rect, Web::Painting::ConicGradientData const& conic_gradient_data, Gfx::IntPoint const& position) override; + CommandResult paint_radial_gradient(Gfx::IntRect const& rect, Web::Painting::RadialGradientData const& radial_gradient_data, Gfx::IntPoint const& center, Gfx::IntSize const& size, Vector const& clip_paths = {}) override; + CommandResult paint_conic_gradient(Gfx::IntRect const& rect, Web::Painting::ConicGradientData const& conic_gradient_data, Gfx::IntPoint const& position, Vector const& clip_paths = {}) override; CommandResult draw_triangle_wave(Gfx::IntPoint const& p1, Gfx::IntPoint const& p2, Color const&, int amplitude, int thickness) override; CommandResult sample_under_corners(u32 id, CornerRadii const&, Gfx::IntRect const&, CornerClip) override; CommandResult blit_corner_clipping(u32) override; diff --git a/Userland/Libraries/LibWeb/Painting/CommandList.cpp b/Userland/Libraries/LibWeb/Painting/CommandList.cpp index 22f3b716b6..7bc14df967 100644 --- a/Userland/Libraries/LibWeb/Painting/CommandList.cpp +++ b/Userland/Libraries/LibWeb/Painting/CommandList.cpp @@ -96,7 +96,7 @@ void CommandList::execute(CommandExecutor& executor) command.elision, command.wrapping, command.font); }, [&](FillRect const& command) { - return executor.fill_rect(command.rect, command.color); + return executor.fill_rect(command.rect, command.color, command.clip_paths); }, [&](DrawScaledBitmap const& command) { return executor.draw_scaled_bitmap(command.dst_rect, command.bitmap, command.src_rect, @@ -104,7 +104,7 @@ void CommandList::execute(CommandExecutor& executor) }, [&](DrawScaledImmutableBitmap const& command) { return executor.draw_scaled_immutable_bitmap(command.dst_rect, command.bitmap, command.src_rect, - command.scaling_mode); + command.scaling_mode, command.clip_paths); }, [&](SetClipRect const& command) { return executor.set_clip_rect(command.rect); @@ -122,15 +122,15 @@ void CommandList::execute(CommandExecutor& executor) return executor.pop_stacking_context(); }, [&](PaintLinearGradient const& command) { - return executor.paint_linear_gradient(command.gradient_rect, command.linear_gradient_data); + return executor.paint_linear_gradient(command.gradient_rect, command.linear_gradient_data, command.clip_paths); }, [&](PaintRadialGradient const& command) { return executor.paint_radial_gradient(command.rect, command.radial_gradient_data, - command.center, command.size); + command.center, command.size, command.clip_paths); }, [&](PaintConicGradient const& command) { return executor.paint_conic_gradient(command.rect, command.conic_gradient_data, - command.position); + command.position, command.clip_paths); }, [&](PaintOuterBoxShadow const& command) { return executor.paint_outer_box_shadow(command.outer_box_shadow_params); @@ -148,7 +148,8 @@ void CommandList::execute(CommandExecutor& executor) command.top_left_radius, command.top_right_radius, command.bottom_left_radius, - command.bottom_right_radius); + command.bottom_right_radius, + command.clip_paths); }, [&](FillPathUsingColor const& command) { return executor.fill_path_using_color(command.path, command.color, command.winding_rule, diff --git a/Userland/Libraries/LibWeb/Painting/CommandList.h b/Userland/Libraries/LibWeb/Painting/CommandList.h index 849f9c142b..d06569eaf6 100644 --- a/Userland/Libraries/LibWeb/Painting/CommandList.h +++ b/Userland/Libraries/LibWeb/Painting/CommandList.h @@ -49,16 +49,16 @@ public: virtual CommandResult draw_glyph_run(Vector const& glyph_run, Color const&, Gfx::FloatPoint translation, double scale) = 0; virtual CommandResult draw_text(Gfx::IntRect const&, String const&, Gfx::TextAlignment alignment, Color const&, Gfx::TextElision, Gfx::TextWrapping, Optional> const&) = 0; - virtual CommandResult fill_rect(Gfx::IntRect const&, Color const&) = 0; + virtual CommandResult fill_rect(Gfx::IntRect const&, Color const&, Vector const& clip_paths) = 0; virtual CommandResult draw_scaled_bitmap(Gfx::IntRect const& dst_rect, Gfx::Bitmap const& bitmap, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode) = 0; - virtual CommandResult draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const&, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode) = 0; + virtual CommandResult draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const&, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode, Vector const& clip_paths = {}) = 0; virtual CommandResult set_clip_rect(Gfx::IntRect const& rect) = 0; virtual CommandResult clear_clip_rect() = 0; virtual CommandResult push_stacking_context(float opacity, bool is_fixed_position, Gfx::IntRect const& source_paintable_rect, Gfx::IntPoint post_transform_translation, CSS::ImageRendering image_rendering, StackingContextTransform transform, Optional mask) = 0; virtual CommandResult pop_stacking_context() = 0; - virtual CommandResult paint_linear_gradient(Gfx::IntRect const&, LinearGradientData const&) = 0; - virtual CommandResult paint_radial_gradient(Gfx::IntRect const& rect, RadialGradientData const&, Gfx::IntPoint const& center, Gfx::IntSize const& size) = 0; - virtual CommandResult paint_conic_gradient(Gfx::IntRect const& rect, ConicGradientData const&, Gfx::IntPoint const& position) = 0; + virtual CommandResult paint_linear_gradient(Gfx::IntRect const&, LinearGradientData const&, Vector const& clip_paths = {}) = 0; + virtual CommandResult paint_radial_gradient(Gfx::IntRect const& rect, RadialGradientData const&, Gfx::IntPoint const& center, Gfx::IntSize const& size, Vector const& clip_paths = {}) = 0; + virtual CommandResult paint_conic_gradient(Gfx::IntRect const& rect, ConicGradientData const&, Gfx::IntPoint const& position, Vector const& clip_paths = {}) = 0; virtual CommandResult paint_outer_box_shadow(PaintOuterBoxShadowParams const&) = 0; virtual CommandResult paint_inner_box_shadow(PaintOuterBoxShadowParams const&) = 0; virtual CommandResult paint_text_shadow(int blur_radius, Gfx::IntRect const& shadow_bounding_rect, Gfx::IntRect const& text_rect, Span, Color const&, int fragment_baseline, Gfx::IntPoint const& draw_location) = 0; @@ -66,7 +66,8 @@ public: Gfx::AntiAliasingPainter::CornerRadius const& top_left_radius, Gfx::AntiAliasingPainter::CornerRadius const& top_right_radius, Gfx::AntiAliasingPainter::CornerRadius const& bottom_left_radius, - Gfx::AntiAliasingPainter::CornerRadius const& bottom_right_radius) + Gfx::AntiAliasingPainter::CornerRadius const& bottom_right_radius, + Vector const& clip_paths = {}) = 0; virtual CommandResult fill_path_using_color(Gfx::Path const&, Color const& color, Gfx::Painter::WindingRule, Gfx::FloatPoint const& aa_translation) = 0; virtual CommandResult fill_path_using_paint_style(Gfx::Path const&, Gfx::PaintStyle const& paint_style, Gfx::Painter::WindingRule winding_rule, float opacity, Gfx::FloatPoint const& aa_translation) = 0; diff --git a/Userland/Libraries/LibWeb/Painting/GradientPainting.cpp b/Userland/Libraries/LibWeb/Painting/GradientPainting.cpp index c66d632eaf..bab6894850 100644 --- a/Userland/Libraries/LibWeb/Painting/GradientPainting.cpp +++ b/Userland/Libraries/LibWeb/Painting/GradientPainting.cpp @@ -146,19 +146,19 @@ RadialGradientData resolve_radial_gradient_data(Layout::NodeWithStyleAndBoxModel return { resolved_color_stops }; } -void paint_linear_gradient(PaintContext& context, DevicePixelRect const& gradient_rect, LinearGradientData const& data) +void paint_linear_gradient(PaintContext& context, DevicePixelRect const& gradient_rect, LinearGradientData const& data, Vector const& clip_paths) { - context.recording_painter().fill_rect_with_linear_gradient(gradient_rect.to_type(), data); + context.recording_painter().fill_rect_with_linear_gradient(gradient_rect.to_type(), data, clip_paths); } -void paint_conic_gradient(PaintContext& context, DevicePixelRect const& gradient_rect, ConicGradientData const& data, DevicePixelPoint position) +void paint_conic_gradient(PaintContext& context, DevicePixelRect const& gradient_rect, ConicGradientData const& data, DevicePixelPoint position, Vector const& clip_paths) { - context.recording_painter().fill_rect_with_conic_gradient(gradient_rect.to_type(), data, position.to_type()); + context.recording_painter().fill_rect_with_conic_gradient(gradient_rect.to_type(), data, position.to_type(), clip_paths); } -void paint_radial_gradient(PaintContext& context, DevicePixelRect const& gradient_rect, RadialGradientData const& data, DevicePixelPoint center, DevicePixelSize size) +void paint_radial_gradient(PaintContext& context, DevicePixelRect const& gradient_rect, RadialGradientData const& data, DevicePixelPoint center, DevicePixelSize size, Vector const& clip_paths) { - context.recording_painter().fill_rect_with_radial_gradient(gradient_rect.to_type(), data, center.to_type(), size.to_type()); + context.recording_painter().fill_rect_with_radial_gradient(gradient_rect.to_type(), data, center.to_type(), size.to_type(), clip_paths); } } diff --git a/Userland/Libraries/LibWeb/Painting/GradientPainting.h b/Userland/Libraries/LibWeb/Painting/GradientPainting.h index c4e7c55017..a6ac04b51f 100644 --- a/Userland/Libraries/LibWeb/Painting/GradientPainting.h +++ b/Userland/Libraries/LibWeb/Painting/GradientPainting.h @@ -20,8 +20,8 @@ LinearGradientData resolve_linear_gradient_data(Layout::NodeWithStyleAndBoxModel ConicGradientData resolve_conic_gradient_data(Layout::NodeWithStyleAndBoxModelMetrics const&, CSS::ConicGradientStyleValue const&); RadialGradientData resolve_radial_gradient_data(Layout::NodeWithStyleAndBoxModelMetrics const&, CSSPixelSize, CSS::RadialGradientStyleValue const&); -void paint_linear_gradient(PaintContext&, DevicePixelRect const&, LinearGradientData const&); -void paint_conic_gradient(PaintContext&, DevicePixelRect const&, ConicGradientData const&, DevicePixelPoint position); -void paint_radial_gradient(PaintContext&, DevicePixelRect const&, RadialGradientData const&, DevicePixelPoint position, DevicePixelSize size); +void paint_linear_gradient(PaintContext&, DevicePixelRect const&, LinearGradientData const&, Vector const& clip_paths = {}); +void paint_conic_gradient(PaintContext&, DevicePixelRect const&, ConicGradientData const&, DevicePixelPoint position, Vector const& clip_paths = {}); +void paint_radial_gradient(PaintContext&, DevicePixelRect const&, RadialGradientData const&, DevicePixelPoint position, DevicePixelSize size, Vector const& clip_paths = {}); } diff --git a/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp b/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp index 0a3f8cd5b0..ca5436aafe 100644 --- a/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp +++ b/Userland/Libraries/LibWeb/Painting/PaintableBox.cpp @@ -6,6 +6,7 @@ */ #include +#include #include #include #include @@ -455,7 +456,72 @@ void PaintableBox::paint_background(PaintContext& context) const if (computed_values().border_top().width != 0 || computed_values().border_right().width != 0 || computed_values().border_bottom().width != 0 || computed_values().border_left().width != 0) background_rect = absolute_border_box_rect(); - Painting::paint_background(context, layout_box(), background_rect, background_color, computed_values().image_rendering(), background_layers, normalized_border_radii_data()); + Vector text_clip_paths {}; + if (background_layers && !background_layers->is_empty() && background_layers->last().clip == CSS::BackgroundBox::Text) { + text_clip_paths = compute_text_clip_paths(context); + } + + Painting::paint_background(context, layout_box(), background_rect, background_color, computed_values().image_rendering(), background_layers, normalized_border_radii_data(), text_clip_paths); +} + +Vector PaintableBox::compute_text_clip_paths(PaintContext& context) const +{ + Vector text_clip_paths; + auto add_text_clip_path = [&](PaintableFragment const& fragment) { + // Scale to the device pixels. + Gfx::Path glyph_run_path; + for (auto glyph : fragment.glyph_run().glyphs()) { + glyph.visit([&](auto& glyph) { + glyph.font = *glyph.font->with_size(glyph.font->point_size() * static_cast(context.device_pixels_per_css_pixel())); + glyph.position = glyph.position.scaled(context.device_pixels_per_css_pixel()); + }); + + if (glyph.has()) { + auto const& draw_glyph = glyph.get(); + + // Get the path for the glyph. + Gfx::Path glyph_path; + auto const& scaled_font = static_cast(*draw_glyph.font); + auto glyph_id = scaled_font.glyph_id_for_code_point(draw_glyph.code_point); + scaled_font.append_glyph_path_to(glyph_path, glyph_id); + + // Transform the path to the fragment's position. + // FIXME: Record glyphs and use Painter::draw_glyphs() instead to avoid this duplicated code. + auto top_left = draw_glyph.position + Gfx::FloatPoint(scaled_font.glyph_left_bearing(draw_glyph.code_point), 0); + auto glyph_position = Gfx::GlyphRasterPosition::get_nearest_fit_for(top_left); + auto transform = Gfx::AffineTransform {}.translate(glyph_position.blit_position.to_type()); + glyph_run_path.append_path(glyph_path.copy_transformed(transform)); + } + } + + // Calculate the baseline start position. + auto fragment_absolute_rect = fragment.absolute_rect(); + auto fragment_absolute_device_rect = context.enclosing_device_rect(fragment_absolute_rect); + DevicePixelPoint baseline_start { fragment_absolute_device_rect.x(), fragment_absolute_device_rect.y() + context.rounded_device_pixels(fragment.baseline()) }; + + // Add the path to text_clip_paths. + auto transform = Gfx::AffineTransform {}.translate(baseline_start.to_type().to_type()); + text_clip_paths.append(glyph_run_path.copy_transformed(transform)); + }; + + for_each_in_inclusive_subtree([&](auto& paintable) { + if (is(paintable)) { + auto const& paintable_lines = static_cast(paintable); + for (auto const& fragment : paintable_lines.fragments()) { + if (is(fragment.layout_node())) + add_text_clip_path(fragment); + } + } else if (is(paintable)) { + auto const& inline_paintable = static_cast(paintable); + for (auto const& fragment : inline_paintable.fragments()) { + if (is(fragment.layout_node())) + add_text_clip_path(fragment); + } + } + return TraversalDecision::Continue; + }); + + return text_clip_paths; } void PaintableBox::paint_box_shadow(PaintContext& context) const diff --git a/Userland/Libraries/LibWeb/Painting/PaintableBox.h b/Userland/Libraries/LibWeb/Painting/PaintableBox.h index 5a4ea66430..31d3b454e4 100644 --- a/Userland/Libraries/LibWeb/Painting/PaintableBox.h +++ b/Userland/Libraries/LibWeb/Painting/PaintableBox.h @@ -227,6 +227,8 @@ protected: virtual CSSPixelRect compute_absolute_paint_rect() const; private: + Vector compute_text_clip_paths(PaintContext&) const; + [[nodiscard]] virtual bool is_paintable_box() const final { return true; } enum class ScrollDirection { diff --git a/Userland/Libraries/LibWeb/Painting/RecordingPainter.cpp b/Userland/Libraries/LibWeb/Painting/RecordingPainter.cpp index 3b6e9d446e..4cf9f73883 100644 --- a/Userland/Libraries/LibWeb/Painting/RecordingPainter.cpp +++ b/Userland/Libraries/LibWeb/Painting/RecordingPainter.cpp @@ -34,11 +34,12 @@ void RecordingPainter::blit_corner_clipping(u32 id, Gfx::IntRect border_rect) append(BlitCornerClipping { id, border_rect = state().translation.map(border_rect) }); } -void RecordingPainter::fill_rect(Gfx::IntRect const& rect, Color color) +void RecordingPainter::fill_rect(Gfx::IntRect const& rect, Color color, Vector const& clip_paths) { append(FillRect { .rect = state().translation.map(rect), .color = color, + .clip_paths = clip_paths, }); } @@ -118,29 +119,31 @@ void RecordingPainter::fill_ellipse(Gfx::IntRect const& a_rect, Color color, Gfx }); } -void RecordingPainter::fill_rect_with_linear_gradient(Gfx::IntRect const& gradient_rect, LinearGradientData const& data) +void RecordingPainter::fill_rect_with_linear_gradient(Gfx::IntRect const& gradient_rect, LinearGradientData const& data, Vector const& clip_paths) { append(PaintLinearGradient { .gradient_rect = state().translation.map(gradient_rect), .linear_gradient_data = data, - }); + .clip_paths = clip_paths }); } -void RecordingPainter::fill_rect_with_conic_gradient(Gfx::IntRect const& rect, ConicGradientData const& data, Gfx::IntPoint const& position) +void RecordingPainter::fill_rect_with_conic_gradient(Gfx::IntRect const& rect, ConicGradientData const& data, Gfx::IntPoint const& position, Vector const& clip_paths) { append(PaintConicGradient { .rect = state().translation.map(rect), .conic_gradient_data = data, - .position = position }); + .position = position, + .clip_paths = clip_paths }); } -void RecordingPainter::fill_rect_with_radial_gradient(Gfx::IntRect const& rect, RadialGradientData const& data, Gfx::IntPoint center, Gfx::IntSize size) +void RecordingPainter::fill_rect_with_radial_gradient(Gfx::IntRect const& rect, RadialGradientData const& data, Gfx::IntPoint center, Gfx::IntSize size, Vector const& clip_paths) { append(PaintRadialGradient { .rect = state().translation.map(rect), .radial_gradient_data = data, .center = center, - .size = size }); + .size = size, + .clip_paths = clip_paths }); } void RecordingPainter::draw_rect(Gfx::IntRect const& rect, Color color, bool rough) @@ -161,13 +164,14 @@ void RecordingPainter::draw_scaled_bitmap(Gfx::IntRect const& dst_rect, Gfx::Bit }); } -void RecordingPainter::draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const& bitmap, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode) +void RecordingPainter::draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const& bitmap, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode, Vector const& clip_paths) { append(DrawScaledImmutableBitmap { .dst_rect = state().translation.map(dst_rect), .bitmap = bitmap, .src_rect = src_rect, .scaling_mode = scaling_mode, + .clip_paths = clip_paths, }); } @@ -327,10 +331,10 @@ void RecordingPainter::paint_text_shadow(int blur_radius, Gfx::IntRect bounding_ .draw_location = state().translation.map(draw_location) }); } -void RecordingPainter::fill_rect_with_rounded_corners(Gfx::IntRect const& rect, Color color, Gfx::AntiAliasingPainter::CornerRadius top_left_radius, Gfx::AntiAliasingPainter::CornerRadius top_right_radius, Gfx::AntiAliasingPainter::CornerRadius bottom_right_radius, Gfx::AntiAliasingPainter::CornerRadius bottom_left_radius) +void RecordingPainter::fill_rect_with_rounded_corners(Gfx::IntRect const& rect, Color color, Gfx::AntiAliasingPainter::CornerRadius top_left_radius, Gfx::AntiAliasingPainter::CornerRadius top_right_radius, Gfx::AntiAliasingPainter::CornerRadius bottom_right_radius, Gfx::AntiAliasingPainter::CornerRadius bottom_left_radius, Vector const& clip_paths) { if (!top_left_radius && !top_right_radius && !bottom_right_radius && !bottom_left_radius) { - fill_rect(rect, color); + fill_rect(rect, color, clip_paths); return; } @@ -341,21 +345,23 @@ void RecordingPainter::fill_rect_with_rounded_corners(Gfx::IntRect const& rect, .top_right_radius = top_right_radius, .bottom_left_radius = bottom_left_radius, .bottom_right_radius = bottom_right_radius, + .clip_paths = clip_paths, }); } -void RecordingPainter::fill_rect_with_rounded_corners(Gfx::IntRect const& a_rect, Color color, int radius) +void RecordingPainter::fill_rect_with_rounded_corners(Gfx::IntRect const& a_rect, Color color, int radius, Vector const& clip_paths) { - fill_rect_with_rounded_corners(a_rect, color, radius, radius, radius, radius); + fill_rect_with_rounded_corners(a_rect, color, radius, radius, radius, radius, clip_paths); } -void RecordingPainter::fill_rect_with_rounded_corners(Gfx::IntRect const& a_rect, Color color, int top_left_radius, int top_right_radius, int bottom_right_radius, int bottom_left_radius) +void RecordingPainter::fill_rect_with_rounded_corners(Gfx::IntRect const& a_rect, Color color, int top_left_radius, int top_right_radius, int bottom_right_radius, int bottom_left_radius, Vector const& clip_paths) { fill_rect_with_rounded_corners(a_rect, color, { top_left_radius, top_left_radius }, { top_right_radius, top_right_radius }, { bottom_right_radius, bottom_right_radius }, - { bottom_left_radius, bottom_left_radius }); + { bottom_left_radius, bottom_left_radius }, + clip_paths); } void RecordingPainter::draw_triangle_wave(Gfx::IntPoint a_p1, Gfx::IntPoint a_p2, Color color, int amplitude, int thickness = 1) diff --git a/Userland/Libraries/LibWeb/Painting/RecordingPainter.h b/Userland/Libraries/LibWeb/Painting/RecordingPainter.h index a1cf69317d..16d743a6d3 100644 --- a/Userland/Libraries/LibWeb/Painting/RecordingPainter.h +++ b/Userland/Libraries/LibWeb/Painting/RecordingPainter.h @@ -44,7 +44,7 @@ class RecordingPainter { AK_MAKE_NONMOVABLE(RecordingPainter); public: - void fill_rect(Gfx::IntRect const& rect, Color color); + void fill_rect(Gfx::IntRect const& rect, Color color, Vector const& clip_paths = {}); struct FillPathUsingColorParams { Gfx::Path path; @@ -84,14 +84,14 @@ public: void fill_ellipse(Gfx::IntRect const& a_rect, Color color, Gfx::AntiAliasingPainter::BlendMode blend_mode = Gfx::AntiAliasingPainter::BlendMode::Normal); - void fill_rect_with_linear_gradient(Gfx::IntRect const& gradient_rect, LinearGradientData const& data); - void fill_rect_with_conic_gradient(Gfx::IntRect const& rect, ConicGradientData const& data, Gfx::IntPoint const& position); - void fill_rect_with_radial_gradient(Gfx::IntRect const& rect, RadialGradientData const& data, Gfx::IntPoint center, Gfx::IntSize size); + void fill_rect_with_linear_gradient(Gfx::IntRect const& gradient_rect, LinearGradientData const& data, Vector const& clip_paths = {}); + void fill_rect_with_conic_gradient(Gfx::IntRect const& rect, ConicGradientData const& data, Gfx::IntPoint const& position, Vector const& clip_paths = {}); + void fill_rect_with_radial_gradient(Gfx::IntRect const& rect, RadialGradientData const& data, Gfx::IntPoint center, Gfx::IntSize size, Vector const& clip_paths = {}); void draw_rect(Gfx::IntRect const& rect, Color color, bool rough = false); void draw_scaled_bitmap(Gfx::IntRect const& dst_rect, Gfx::Bitmap const& bitmap, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode = Gfx::Painter::ScalingMode::NearestNeighbor); - void draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const& bitmap, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode = Gfx::Painter::ScalingMode::NearestNeighbor); + void draw_scaled_immutable_bitmap(Gfx::IntRect const& dst_rect, Gfx::ImmutableBitmap const& bitmap, Gfx::IntRect const& src_rect, Gfx::Painter::ScalingMode scaling_mode = Gfx::Painter::ScalingMode::NearestNeighbor, Vector const& clip_paths = {}); void draw_line(Gfx::IntPoint from, Gfx::IntPoint to, Color color, int thickness = 1, Gfx::Painter::LineStyle style = Gfx::Painter::LineStyle::Solid, Color alternate_color = Color::Transparent); @@ -137,9 +137,9 @@ public: void paint_inner_box_shadow_params(PaintOuterBoxShadowParams params); void paint_text_shadow(int blur_radius, Gfx::IntRect bounding_rect, Gfx::IntRect text_rect, Span glyph_run, Color color, int fragment_baseline, Gfx::IntPoint draw_location); - void fill_rect_with_rounded_corners(Gfx::IntRect const& rect, Color color, Gfx::AntiAliasingPainter::CornerRadius top_left_radius, Gfx::AntiAliasingPainter::CornerRadius top_right_radius, Gfx::AntiAliasingPainter::CornerRadius bottom_right_radius, Gfx::AntiAliasingPainter::CornerRadius bottom_left_radius); - void fill_rect_with_rounded_corners(Gfx::IntRect const& a_rect, Color color, int radius); - void fill_rect_with_rounded_corners(Gfx::IntRect const& a_rect, Color color, int top_left_radius, int top_right_radius, int bottom_right_radius, int bottom_left_radius); + void fill_rect_with_rounded_corners(Gfx::IntRect const& rect, Color color, Gfx::AntiAliasingPainter::CornerRadius top_left_radius, Gfx::AntiAliasingPainter::CornerRadius top_right_radius, Gfx::AntiAliasingPainter::CornerRadius bottom_right_radius, Gfx::AntiAliasingPainter::CornerRadius bottom_left_radius, Vector const& clip_paths = {}); + void fill_rect_with_rounded_corners(Gfx::IntRect const& a_rect, Color color, int radius, Vector const& clip_paths = {}); + void fill_rect_with_rounded_corners(Gfx::IntRect const& a_rect, Color color, int top_left_radius, int top_right_radius, int bottom_right_radius, int bottom_left_radius, Vector const& clip_paths = {}); void draw_triangle_wave(Gfx::IntPoint a_p1, Gfx::IntPoint a_p2, Color color, int amplitude, int thickness);