mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-20 19:45:12 +00:00
LibWeb: Implement <desc> SVG element
This commit is contained in:
parent
bb37451fe5
commit
2d90317c20
Notes:
sideshowbarker
2024-07-16 23:51:07 +09:00
Author: https://github.com/jamierocks Commit: https://github.com/SerenityOS/serenity/commit/2d90317c20 Pull-request: https://github.com/SerenityOS/serenity/pull/23974 Reviewed-by: https://github.com/MacDue
9 changed files with 71 additions and 0 deletions
|
@ -13,6 +13,7 @@ source_set("SVG") {
|
|||
"SVGClipPathElement.cpp",
|
||||
"SVGDecodedImageData.cpp",
|
||||
"SVGDefsElement.cpp",
|
||||
"SVGDescElement.cpp",
|
||||
"SVGElement.cpp",
|
||||
"SVGEllipseElement.cpp",
|
||||
"SVGForeignObjectElement.cpp",
|
||||
|
|
|
@ -263,6 +263,7 @@ standard_idl_files = [
|
|||
"//Userland/Libraries/LibWeb/SVG/SVGCircleElement.idl",
|
||||
"//Userland/Libraries/LibWeb/SVG/SVGClipPathElement.idl",
|
||||
"//Userland/Libraries/LibWeb/SVG/SVGDefsElement.idl",
|
||||
"//Userland/Libraries/LibWeb/SVG/SVGDescElement.idl",
|
||||
"//Userland/Libraries/LibWeb/SVG/SVGElement.idl",
|
||||
"//Userland/Libraries/LibWeb/SVG/SVGEllipseElement.idl",
|
||||
"//Userland/Libraries/LibWeb/SVG/SVGForeignObjectElement.idl",
|
||||
|
|
|
@ -603,6 +603,7 @@ set(SOURCES
|
|||
SVG/SVGClipPathElement.cpp
|
||||
SVG/SVGDecodedImageData.cpp
|
||||
SVG/SVGDefsElement.cpp
|
||||
SVG/SVGDescElement.cpp
|
||||
SVG/SVGElement.cpp
|
||||
SVG/SVGGElement.cpp
|
||||
SVG/SVGGeometryElement.cpp
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
#include <LibWeb/SVG/SVGCircleElement.h>
|
||||
#include <LibWeb/SVG/SVGClipPathElement.h>
|
||||
#include <LibWeb/SVG/SVGDefsElement.h>
|
||||
#include <LibWeb/SVG/SVGDescElement.h>
|
||||
#include <LibWeb/SVG/SVGEllipseElement.h>
|
||||
#include <LibWeb/SVG/SVGForeignObjectElement.h>
|
||||
#include <LibWeb/SVG/SVGGElement.h>
|
||||
|
@ -439,6 +440,8 @@ static JS::GCPtr<SVG::SVGElement> create_svg_element(JS::Realm& realm, Document&
|
|||
return realm.heap().allocate<SVG::SVGCircleElement>(realm, document, move(qualified_name));
|
||||
if (local_name.equals_ignoring_ascii_case(SVG::TagNames::defs))
|
||||
return realm.heap().allocate<SVG::SVGDefsElement>(realm, document, move(qualified_name));
|
||||
if (local_name == SVG::TagNames::desc)
|
||||
return realm.heap().allocate<SVG::SVGDescElement>(realm, document, move(qualified_name));
|
||||
if (local_name == SVG::TagNames::ellipse)
|
||||
return realm.heap().allocate<SVG::SVGEllipseElement>(realm, document, move(qualified_name));
|
||||
if (local_name.equals_ignoring_ascii_case(SVG::TagNames::foreignObject))
|
||||
|
|
|
@ -637,6 +637,7 @@ class SVGAnimatedRect;
|
|||
class SVGCircleElement;
|
||||
class SVGClipPathElement;
|
||||
class SVGDefsElement;
|
||||
class SVGDescElement;
|
||||
class SVGElement;
|
||||
class SVGEllipseElement;
|
||||
class SVGForeignObjectElement;
|
||||
|
|
32
Userland/Libraries/LibWeb/SVG/SVGDescElement.cpp
Normal file
32
Userland/Libraries/LibWeb/SVG/SVGDescElement.cpp
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* Copyright (c) 2024, Jamie Mansfield <jmansfield@cadixdev.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibWeb/Bindings/Intrinsics.h>
|
||||
#include <LibWeb/DOM/Document.h>
|
||||
#include <LibWeb/Page/Page.h>
|
||||
#include <LibWeb/SVG/SVGDescElement.h>
|
||||
|
||||
namespace Web::SVG {
|
||||
|
||||
JS_DEFINE_ALLOCATOR(SVGDescElement);
|
||||
|
||||
SVGDescElement::SVGDescElement(DOM::Document& document, DOM::QualifiedName qualified_name)
|
||||
: SVGElement(document, move(qualified_name))
|
||||
{
|
||||
}
|
||||
|
||||
void SVGDescElement::initialize(JS::Realm& realm)
|
||||
{
|
||||
Base::initialize(realm);
|
||||
WEB_SET_PROTOTYPE_FOR_INTERFACE(SVGDescElement);
|
||||
}
|
||||
|
||||
JS::GCPtr<Layout::Node> SVGDescElement::create_layout_node(NonnullRefPtr<CSS::StyleProperties>)
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
}
|
25
Userland/Libraries/LibWeb/SVG/SVGDescElement.h
Normal file
25
Userland/Libraries/LibWeb/SVG/SVGDescElement.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
* Copyright (c) 2024, Jamie Mansfield <jmansfield@cadixdev.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <LibWeb/SVG/SVGElement.h>
|
||||
|
||||
namespace Web::SVG {
|
||||
|
||||
class SVGDescElement final : public SVGElement {
|
||||
WEB_PLATFORM_OBJECT(SVGDescElement, SVGElement);
|
||||
JS_DECLARE_ALLOCATOR(SVGDescElement);
|
||||
|
||||
private:
|
||||
SVGDescElement(DOM::Document&, DOM::QualifiedName);
|
||||
|
||||
virtual void initialize(JS::Realm&) override;
|
||||
|
||||
virtual JS::GCPtr<Layout::Node> create_layout_node(NonnullRefPtr<CSS::StyleProperties>) override;
|
||||
};
|
||||
|
||||
}
|
6
Userland/Libraries/LibWeb/SVG/SVGDescElement.idl
Normal file
6
Userland/Libraries/LibWeb/SVG/SVGDescElement.idl
Normal file
|
@ -0,0 +1,6 @@
|
|||
#import <SVG/SVGElement.idl>
|
||||
|
||||
// https://svgwg.org/svg2-draft/struct.html#InterfaceSVGDescElement
|
||||
[Exposed=Window]
|
||||
interface SVGDescElement : SVGElement {
|
||||
};
|
|
@ -248,6 +248,7 @@ libweb_js_bindings(SVG/SVGAnimatedString)
|
|||
libweb_js_bindings(SVG/SVGAnimatedTransformList)
|
||||
libweb_js_bindings(SVG/SVGClipPathElement)
|
||||
libweb_js_bindings(SVG/SVGDefsElement)
|
||||
libweb_js_bindings(SVG/SVGDescElement)
|
||||
libweb_js_bindings(SVG/SVGElement)
|
||||
libweb_js_bindings(SVG/SVGGeometryElement)
|
||||
libweb_js_bindings(SVG/SVGGradientElement)
|
||||
|
|
Loading…
Add table
Reference in a new issue