mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 04:17:35 +00:00
LibWeb: Add 'inside' clip mode to BorderRadiusCornerClipper
The default clip mode 'outside' clips everything outside the corner, 'inside' does the opposite :^)
This commit is contained in:
parent
08baeb1e7d
commit
13c4c735b8
2 changed files with 14 additions and 5 deletions
|
@ -11,9 +11,14 @@
|
|||
|
||||
namespace Web::Painting {
|
||||
|
||||
enum class CornerClip {
|
||||
Outside,
|
||||
Inside
|
||||
};
|
||||
|
||||
class BorderRadiusCornerClipper {
|
||||
public:
|
||||
static ErrorOr<BorderRadiusCornerClipper> create(Gfx::IntRect const& border_rect, BorderRadiiData const& border_radii);
|
||||
static ErrorOr<BorderRadiusCornerClipper> create(Gfx::IntRect const& border_rect, BorderRadiiData const& border_radii, CornerClip corner_clip = CornerClip::Outside);
|
||||
|
||||
void sample_under_corners(Gfx::Painter& page_painter);
|
||||
void blit_corner_clipping(Gfx::Painter& page_painter);
|
||||
|
@ -40,10 +45,12 @@ private:
|
|||
|
||||
NonnullRefPtr<Gfx::Bitmap> m_corner_bitmap;
|
||||
bool m_has_sampled { false };
|
||||
CornerClip m_corner_clip { false };
|
||||
|
||||
BorderRadiusCornerClipper(CornerData corner_data, NonnullRefPtr<Gfx::Bitmap> corner_bitmap)
|
||||
BorderRadiusCornerClipper(CornerData corner_data, NonnullRefPtr<Gfx::Bitmap> corner_bitmap, CornerClip corner_clip)
|
||||
: m_data(move(corner_data))
|
||||
, m_corner_bitmap(corner_bitmap)
|
||||
, m_corner_clip(corner_clip)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue