mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 05:27:46 +00:00
LibGfx: Optimize rounded rectangle with all radii 50% to single ellipse
It's a common pattern on the web to draw a circle/ellipse by setting the border-radius to 50%. Previously the painter would do a lot of extra work painting and clipping each corner, this now detects that case and replaces it with a single call to fill_ellipse().
This commit is contained in:
parent
16c4b606f6
commit
c0486f93d4
1 changed files with 4 additions and 0 deletions
|
@ -470,6 +470,10 @@ void Gfx::AntiAliasingPainter::fill_rect_with_rounded_corners(IntRect const& a_r
|
|||
a_rect.y() + a_rect.height() - bottom_right.vertical_radius
|
||||
};
|
||||
|
||||
// All corners are centered at the same point, so this can be painted as a single ellipse.
|
||||
if (top_left_corner == top_right_corner && top_right_corner == bottom_left_corner && bottom_left_corner == bottom_right_corner)
|
||||
return fill_ellipse(a_rect, color);
|
||||
|
||||
IntRect top_rect {
|
||||
a_rect.x() + top_left.horizontal_radius,
|
||||
a_rect.y(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue