mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-12 02:30:30 +09: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: 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",
|
"SVGClipPathElement.cpp",
|
||||||
"SVGDecodedImageData.cpp",
|
"SVGDecodedImageData.cpp",
|
||||||
"SVGDefsElement.cpp",
|
"SVGDefsElement.cpp",
|
||||||
|
"SVGDescElement.cpp",
|
||||||
"SVGElement.cpp",
|
"SVGElement.cpp",
|
||||||
"SVGEllipseElement.cpp",
|
"SVGEllipseElement.cpp",
|
||||||
"SVGForeignObjectElement.cpp",
|
"SVGForeignObjectElement.cpp",
|
||||||
|
|
|
@ -263,6 +263,7 @@ standard_idl_files = [
|
||||||
"//Userland/Libraries/LibWeb/SVG/SVGCircleElement.idl",
|
"//Userland/Libraries/LibWeb/SVG/SVGCircleElement.idl",
|
||||||
"//Userland/Libraries/LibWeb/SVG/SVGClipPathElement.idl",
|
"//Userland/Libraries/LibWeb/SVG/SVGClipPathElement.idl",
|
||||||
"//Userland/Libraries/LibWeb/SVG/SVGDefsElement.idl",
|
"//Userland/Libraries/LibWeb/SVG/SVGDefsElement.idl",
|
||||||
|
"//Userland/Libraries/LibWeb/SVG/SVGDescElement.idl",
|
||||||
"//Userland/Libraries/LibWeb/SVG/SVGElement.idl",
|
"//Userland/Libraries/LibWeb/SVG/SVGElement.idl",
|
||||||
"//Userland/Libraries/LibWeb/SVG/SVGEllipseElement.idl",
|
"//Userland/Libraries/LibWeb/SVG/SVGEllipseElement.idl",
|
||||||
"//Userland/Libraries/LibWeb/SVG/SVGForeignObjectElement.idl",
|
"//Userland/Libraries/LibWeb/SVG/SVGForeignObjectElement.idl",
|
||||||
|
|
|
@ -603,6 +603,7 @@ set(SOURCES
|
||||||
SVG/SVGClipPathElement.cpp
|
SVG/SVGClipPathElement.cpp
|
||||||
SVG/SVGDecodedImageData.cpp
|
SVG/SVGDecodedImageData.cpp
|
||||||
SVG/SVGDefsElement.cpp
|
SVG/SVGDefsElement.cpp
|
||||||
|
SVG/SVGDescElement.cpp
|
||||||
SVG/SVGElement.cpp
|
SVG/SVGElement.cpp
|
||||||
SVG/SVGGElement.cpp
|
SVG/SVGGElement.cpp
|
||||||
SVG/SVGGeometryElement.cpp
|
SVG/SVGGeometryElement.cpp
|
||||||
|
|
|
@ -87,6 +87,7 @@
|
||||||
#include <LibWeb/SVG/SVGCircleElement.h>
|
#include <LibWeb/SVG/SVGCircleElement.h>
|
||||||
#include <LibWeb/SVG/SVGClipPathElement.h>
|
#include <LibWeb/SVG/SVGClipPathElement.h>
|
||||||
#include <LibWeb/SVG/SVGDefsElement.h>
|
#include <LibWeb/SVG/SVGDefsElement.h>
|
||||||
|
#include <LibWeb/SVG/SVGDescElement.h>
|
||||||
#include <LibWeb/SVG/SVGEllipseElement.h>
|
#include <LibWeb/SVG/SVGEllipseElement.h>
|
||||||
#include <LibWeb/SVG/SVGForeignObjectElement.h>
|
#include <LibWeb/SVG/SVGForeignObjectElement.h>
|
||||||
#include <LibWeb/SVG/SVGGElement.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));
|
return realm.heap().allocate<SVG::SVGCircleElement>(realm, document, move(qualified_name));
|
||||||
if (local_name.equals_ignoring_ascii_case(SVG::TagNames::defs))
|
if (local_name.equals_ignoring_ascii_case(SVG::TagNames::defs))
|
||||||
return realm.heap().allocate<SVG::SVGDefsElement>(realm, document, move(qualified_name));
|
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)
|
if (local_name == SVG::TagNames::ellipse)
|
||||||
return realm.heap().allocate<SVG::SVGEllipseElement>(realm, document, move(qualified_name));
|
return realm.heap().allocate<SVG::SVGEllipseElement>(realm, document, move(qualified_name));
|
||||||
if (local_name.equals_ignoring_ascii_case(SVG::TagNames::foreignObject))
|
if (local_name.equals_ignoring_ascii_case(SVG::TagNames::foreignObject))
|
||||||
|
|
|
@ -637,6 +637,7 @@ class SVGAnimatedRect;
|
||||||
class SVGCircleElement;
|
class SVGCircleElement;
|
||||||
class SVGClipPathElement;
|
class SVGClipPathElement;
|
||||||
class SVGDefsElement;
|
class SVGDefsElement;
|
||||||
|
class SVGDescElement;
|
||||||
class SVGElement;
|
class SVGElement;
|
||||||
class SVGEllipseElement;
|
class SVGEllipseElement;
|
||||||
class SVGForeignObjectElement;
|
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/SVGAnimatedTransformList)
|
||||||
libweb_js_bindings(SVG/SVGClipPathElement)
|
libweb_js_bindings(SVG/SVGClipPathElement)
|
||||||
libweb_js_bindings(SVG/SVGDefsElement)
|
libweb_js_bindings(SVG/SVGDefsElement)
|
||||||
|
libweb_js_bindings(SVG/SVGDescElement)
|
||||||
libweb_js_bindings(SVG/SVGElement)
|
libweb_js_bindings(SVG/SVGElement)
|
||||||
libweb_js_bindings(SVG/SVGGeometryElement)
|
libweb_js_bindings(SVG/SVGGeometryElement)
|
||||||
libweb_js_bindings(SVG/SVGGradientElement)
|
libweb_js_bindings(SVG/SVGGradientElement)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue