mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:47:45 +00:00
LibWeb: Don't draw text fragments that would be clipped by the painter
This avoids a ton of work when painting large documents. Even though it would eventually get clipped by the painter anyway, by bailing out earlier, we avoid a lot more work (UTF-8 iteration, OpenType lookups, etc). It would be even nicer if we could skip entire line boxes, but we don't have a fast way to get the bounding rect of a line box at the moment.
This commit is contained in:
parent
df1bb0ff49
commit
fe92b54137
3 changed files with 13 additions and 2 deletions
|
@ -5,6 +5,7 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibGfx/Painter.h>
|
||||
#include <LibWeb/Painting/PaintContext.h>
|
||||
|
||||
namespace Web {
|
||||
|
@ -140,4 +141,9 @@ CSSPixelRect PaintContext::scale_to_css_rect(DevicePixelRect rect) const
|
|||
};
|
||||
}
|
||||
|
||||
bool PaintContext::would_be_fully_clipped_by_painter(DevicePixelRect rect) const
|
||||
{
|
||||
return !painter().clip_rect().intersects(rect.to_type<int>().translated(painter().translation()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue