mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 16:28:11 +00:00
LibWeb: Sketch out a very basic SVG <clipPath> element
This element doesn't actually support anything at the moment, but it still massively speeds up painting performance on Wikipedia! :^) How? Because we no longer paint SVG <path> elements found inside <clipPath> elements. SVGClipPathElement::create_layout_node() returns nullptr which stops the layout tree builder from recursing further into the subtree, and so the <path> element never gets a layout or paint box. Mousing over Wikipedia now barely break 50% CPU usage on my machine :^)
This commit is contained in:
parent
c6e79124c7
commit
e81594d9a1
8 changed files with 68 additions and 0 deletions
|
@ -77,6 +77,7 @@
|
|||
#include <LibWeb/HTML/HTMLUnknownElement.h>
|
||||
#include <LibWeb/HTML/HTMLVideoElement.h>
|
||||
#include <LibWeb/SVG/SVGCircleElement.h>
|
||||
#include <LibWeb/SVG/SVGClipPathElement.h>
|
||||
#include <LibWeb/SVG/SVGEllipseElement.h>
|
||||
#include <LibWeb/SVG/SVGGElement.h>
|
||||
#include <LibWeb/SVG/SVGLineElement.h>
|
||||
|
@ -260,6 +261,9 @@ NonnullRefPtr<Element> create_element(Document& document, FlyString local_name,
|
|||
return adopt_ref(*new HTML::HTMLElement(document, move(qualified_name)));
|
||||
if (lowercase_tag_name == SVG::TagNames::svg)
|
||||
return adopt_ref(*new SVG::SVGSVGElement(document, move(qualified_name)));
|
||||
// FIXME: Support SVG's mixedCase tag names properly.
|
||||
if (lowercase_tag_name.equals_ignoring_case(SVG::TagNames::clipPath))
|
||||
return adopt_ref(*new SVG::SVGClipPathElement(document, move(qualified_name)));
|
||||
if (lowercase_tag_name == SVG::TagNames::circle)
|
||||
return adopt_ref(*new SVG::SVGCircleElement(document, move(qualified_name)));
|
||||
if (lowercase_tag_name == SVG::TagNames::ellipse)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue