LibWeb: Stub out SVGAnimatedTransformList

This commit is contained in:
MacDue 2024-03-31 15:21:00 +01:00 committed by Alexander Kalenik
parent 3bab4fbae9
commit 6d72f40d8d
Notes: sideshowbarker 2024-07-17 02:57:43 +09:00
5 changed files with 92 additions and 0 deletions

View file

@ -592,6 +592,7 @@ set(SOURCES
SVG/SVGAnimatedNumber.cpp
SVG/SVGAnimatedRect.cpp
SVG/SVGAnimatedString.cpp
SVG/SVGAnimatedTransformList.cpp
SVG/SVGClipPathElement.cpp
SVG/SVGDecodedImageData.cpp
SVG/SVGDefsElement.cpp

View file

@ -0,0 +1,39 @@
/*
* Copyright (c) 2024, MacDue <macdue@dueutil.tech>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibWeb/Bindings/Intrinsics.h>
#include <LibWeb/SVG/SVGAnimatedTransformList.h>
namespace Web::SVG {
JS_DEFINE_ALLOCATOR(SVGAnimatedTransformList);
JS::NonnullGCPtr<SVGAnimatedTransformList> SVGAnimatedTransformList::create(JS::Realm& realm, JS::NonnullGCPtr<SVGTransformList> base_val, JS::NonnullGCPtr<SVGTransformList> anim_val)
{
return realm.heap().allocate<SVGAnimatedTransformList>(realm, realm, base_val, anim_val);
}
SVGAnimatedTransformList::SVGAnimatedTransformList(JS::Realm& realm, JS::NonnullGCPtr<SVGTransformList> base_val, JS::NonnullGCPtr<SVGTransformList> anim_val)
: PlatformObject(realm)
, m_base_val(base_val)
, m_anim_val(anim_val) {};
SVGAnimatedTransformList::~SVGAnimatedTransformList() = default;
void SVGAnimatedTransformList::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(SVGAnimatedTransformList);
}
void SVGAnimatedTransformList::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_base_val);
visitor.visit(m_anim_val);
}
}

View file

@ -0,0 +1,43 @@
/*
* Copyright (c) 2024, MacDue <macdue@dueutil.tech>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibWeb/Bindings/PlatformObject.h>
#include <LibWeb/SVG/SVGTransformList.h>
namespace Web::SVG {
// https://svgwg.org/svg2-draft/single-page.html#coords-InterfaceSVGTransformList
class SVGAnimatedTransformList final : public Bindings::PlatformObject {
WEB_PLATFORM_OBJECT(SVGAnimatedTransformList, Bindings::PlatformObject);
JS_DECLARE_ALLOCATOR(SVGAnimatedTransformList);
public:
[[nodiscard]] static JS::NonnullGCPtr<SVGAnimatedTransformList> create(JS::Realm& realm, JS::NonnullGCPtr<SVGTransformList> base_val, JS::NonnullGCPtr<SVGTransformList> anim_val);
virtual ~SVGAnimatedTransformList() override;
JS::NonnullGCPtr<SVGTransformList> base_val() const
{
return m_anim_val;
}
JS::NonnullGCPtr<SVGTransformList> anim_val() const
{
return m_anim_val;
}
private:
SVGAnimatedTransformList(JS::Realm& realm, JS::NonnullGCPtr<SVGTransformList> base_val, JS::NonnullGCPtr<SVGTransformList> anim_val);
virtual void initialize(JS::Realm& realm) override;
virtual void visit_edges(Cell::Visitor& visitor) override;
JS::NonnullGCPtr<SVGTransformList> m_base_val;
JS::NonnullGCPtr<SVGTransformList> m_anim_val;
};
}

View file

@ -0,0 +1,8 @@
#import <SVG/SVGTransformList.idl>
// https://svgwg.org/svg2-draft/single-page.html#coords-InterfaceSVGAnimatedTransformList
[Exposed=Window]
interface SVGAnimatedTransformList {
[SameObject] readonly attribute SVGTransformList baseVal;
[SameObject] readonly attribute SVGTransformList animVal;
};

View file

@ -241,6 +241,7 @@ libweb_js_bindings(SVG/SVGAnimatedLength)
libweb_js_bindings(SVG/SVGAnimatedNumber)
libweb_js_bindings(SVG/SVGAnimatedRect)
libweb_js_bindings(SVG/SVGAnimatedString)
libweb_js_bindings(SVG/SVGAnimatedTransformList)
libweb_js_bindings(SVG/SVGClipPathElement)
libweb_js_bindings(SVG/SVGDefsElement)
libweb_js_bindings(SVG/SVGElement)