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

LibWeb: Move border radius sampling config preparation into a function

In upcoming changes this code is going to be reused in GPU painter.
This commit is contained in:
Aliaksandr Kalenik 2023-12-17 14:30:56 +01:00 committed by Andreas Kling
parent a05fd28b7b
commit 177e7df1c5
2 changed files with 38 additions and 28 deletions

View file

@ -16,6 +16,21 @@ enum class CornerClip {
Inside
};
struct BorderRadiusSamplingConfig {
CornerRadii corner_radii;
struct CornerLocations {
Gfx::IntPoint top_left;
Gfx::IntPoint top_right;
Gfx::IntPoint bottom_right;
Gfx::IntPoint bottom_left;
};
CornerLocations page_locations;
CornerLocations bitmap_locations;
Gfx::IntSize corners_bitmap_size;
};
BorderRadiusSamplingConfig calculate_border_radius_sampling_config(CornerRadii const& corner_radii, Gfx::IntRect const& border_rect);
class BorderRadiusCornerClipper : public RefCounted<BorderRadiusCornerClipper> {
public:
static ErrorOr<NonnullRefPtr<BorderRadiusCornerClipper>> create(CornerRadii const&, DevicePixelRect const& border_rect, CornerClip corner_clip = CornerClip::Outside);
@ -23,22 +38,12 @@ public:
void sample_under_corners(Gfx::Painter& page_painter);
void blit_corner_clipping(Gfx::Painter& page_painter);
struct CornerData {
CornerRadii corner_radii;
struct CornerLocations {
DevicePixelPoint top_left;
DevicePixelPoint top_right;
DevicePixelPoint bottom_right;
DevicePixelPoint bottom_left;
};
CornerLocations page_locations;
CornerLocations bitmap_locations;
} m_data;
BorderRadiusSamplingConfig m_data;
DevicePixelRect border_rect() const { return m_border_rect; }
BorderRadiusCornerClipper(CornerData corner_data, NonnullRefPtr<Gfx::Bitmap> corner_bitmap, CornerClip corner_clip, DevicePixelRect const& border_rect)
: m_data(move(corner_data))
BorderRadiusCornerClipper(BorderRadiusSamplingConfig corner_data, NonnullRefPtr<Gfx::Bitmap> corner_bitmap, CornerClip corner_clip, DevicePixelRect const& border_rect)
: m_data(corner_data)
, m_corner_bitmap(corner_bitmap)
, m_corner_clip(corner_clip)
, m_border_rect(border_rect)