Переглянути джерело

LibWeb: Stub out `SVGAnimatedTransformList`

MacDue 1 рік тому
батько
коміт
6d72f40d8d

+ 1 - 0
Userland/Libraries/LibWeb/CMakeLists.txt

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

+ 39 - 0
Userland/Libraries/LibWeb/SVG/SVGAnimatedTransformList.cpp

@@ -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);
+}
+
+}

+ 43 - 0
Userland/Libraries/LibWeb/SVG/SVGAnimatedTransformList.h

@@ -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;
+};
+
+}

+ 8 - 0
Userland/Libraries/LibWeb/SVG/SVGAnimatedTransformList.idl

@@ -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;
+};

+ 1 - 0
Userland/Libraries/LibWeb/idl_files.cmake

@@ -241,6 +241,7 @@ libweb_js_bindings(SVG/SVGAnimatedLength)
 libweb_js_bindings(SVG/SVGAnimatedNumber)
 libweb_js_bindings(SVG/SVGAnimatedNumber)
 libweb_js_bindings(SVG/SVGAnimatedRect)
 libweb_js_bindings(SVG/SVGAnimatedRect)
 libweb_js_bindings(SVG/SVGAnimatedString)
 libweb_js_bindings(SVG/SVGAnimatedString)
+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/SVGElement)
 libweb_js_bindings(SVG/SVGElement)