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

LibWeb: Convert border painting to new pixel units

This commit is contained in:
Sam Atkins 2022-10-27 16:02:32 +01:00 committed by Linus Groh
parent 0233627545
commit 0bf4089af9
12 changed files with 135 additions and 140 deletions

View file

@ -23,7 +23,7 @@ public:
No
};
static ErrorOr<BorderRadiusCornerClipper> create(Gfx::IntRect const& border_rect, BorderRadiiData const& border_radii, CornerClip corner_clip = CornerClip::Outside, UseCachedBitmap use_cached_bitmap = UseCachedBitmap::Yes);
static ErrorOr<BorderRadiusCornerClipper> create(PaintContext&, DevicePixelRect const& border_rect, BorderRadiiData const& border_radii, CornerClip corner_clip = CornerClip::Outside, UseCachedBitmap use_cached_bitmap = UseCachedBitmap::Yes);
void sample_under_corners(Gfx::Painter& page_painter);
void blit_corner_clipping(Gfx::Painter& page_painter);
@ -38,14 +38,14 @@ private:
CornerRadius bottom_left;
} corner_radii;
struct CornerLocations {
Gfx::IntPoint top_left;
Gfx::IntPoint top_right;
Gfx::IntPoint bottom_right;
Gfx::IntPoint bottom_left;
DevicePixelPoint top_left;
DevicePixelPoint top_right;
DevicePixelPoint bottom_right;
DevicePixelPoint bottom_left;
};
CornerLocations page_locations;
CornerLocations bitmap_locations;
Gfx::IntSize corner_bitmap_size;
DevicePixelSize corner_bitmap_size;
} m_data;
NonnullRefPtr<Gfx::Bitmap> m_corner_bitmap;
@ -61,11 +61,11 @@ private:
};
struct ScopedCornerRadiusClip {
ScopedCornerRadiusClip(Gfx::Painter& painter, Gfx::IntRect const& border_rect, BorderRadiiData const& border_radii, CornerClip corner_clip = CornerClip::Outside, BorderRadiusCornerClipper::UseCachedBitmap use_cached_bitmap = BorderRadiusCornerClipper::UseCachedBitmap::Yes)
ScopedCornerRadiusClip(PaintContext& context, Gfx::Painter& painter, DevicePixelRect const& border_rect, BorderRadiiData const& border_radii, CornerClip corner_clip = CornerClip::Outside, BorderRadiusCornerClipper::UseCachedBitmap use_cached_bitmap = BorderRadiusCornerClipper::UseCachedBitmap::Yes)
: m_painter(painter)
{
if (border_radii.has_any_radius()) {
auto clipper = BorderRadiusCornerClipper::create(border_rect, border_radii, corner_clip, use_cached_bitmap);
auto clipper = BorderRadiusCornerClipper::create(context, border_rect, border_radii, corner_clip, use_cached_bitmap);
if (!clipper.is_error()) {
m_corner_clipper = clipper.release_value();
m_corner_clipper->sample_under_corners(m_painter);