diff --git a/Libraries/LibWeb/CMakeLists.txt b/Libraries/LibWeb/CMakeLists.txt index 134b4129d88..70510e9501b 100644 --- a/Libraries/LibWeb/CMakeLists.txt +++ b/Libraries/LibWeb/CMakeLists.txt @@ -819,6 +819,7 @@ set(SOURCES WebGL/WebGLShaderPrecisionFormat.cpp WebGL/WebGLSync.cpp WebGL/WebGLTexture.cpp + WebGL/WebGLTransformFeedback.cpp WebGL/WebGLUniformLocation.cpp WebIDL/AbstractOperations.cpp WebIDL/Buffers.cpp diff --git a/Libraries/LibWeb/WebGL/WebGLTransformFeedback.cpp b/Libraries/LibWeb/WebGL/WebGLTransformFeedback.cpp new file mode 100644 index 00000000000..d2d7f6946d4 --- /dev/null +++ b/Libraries/LibWeb/WebGL/WebGLTransformFeedback.cpp @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024, Andrew Kaster + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include +#include +#include + +namespace Web::WebGL { + +GC_DEFINE_ALLOCATOR(WebGLTransformFeedback); + +GC::Ref WebGLTransformFeedback::create(JS::Realm& realm, GLuint handle) +{ + return realm.create(realm, handle); +} + +WebGLTransformFeedback::WebGLTransformFeedback(JS::Realm& realm, GLuint handle) + : WebGLObject(realm, handle) +{ +} + +WebGLTransformFeedback::~WebGLTransformFeedback() = default; + +void WebGLTransformFeedback::initialize(JS::Realm& realm) +{ + Base::initialize(realm); + WEB_SET_PROTOTYPE_FOR_INTERFACE(WebGLTransformFeedback); +} + +} diff --git a/Libraries/LibWeb/WebGL/WebGLTransformFeedback.h b/Libraries/LibWeb/WebGL/WebGLTransformFeedback.h new file mode 100644 index 00000000000..9956aa51362 --- /dev/null +++ b/Libraries/LibWeb/WebGL/WebGLTransformFeedback.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024, Andrew Kaster + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include + +namespace Web::WebGL { + +class WebGLTransformFeedback : public WebGLObject { + WEB_PLATFORM_OBJECT(WebGLTransformFeedback, WebGLObject); + GC_DECLARE_ALLOCATOR(WebGLTransformFeedback); + +public: + static GC::Ref create(JS::Realm& realm, GLuint handle); + + virtual ~WebGLTransformFeedback() override; + +protected: + explicit WebGLTransformFeedback(JS::Realm&, GLuint handle); + + virtual void initialize(JS::Realm&) override; +}; + +} diff --git a/Libraries/LibWeb/WebGL/WebGLTransformFeedback.idl b/Libraries/LibWeb/WebGL/WebGLTransformFeedback.idl new file mode 100644 index 00000000000..0377e0e5b6d --- /dev/null +++ b/Libraries/LibWeb/WebGL/WebGLTransformFeedback.idl @@ -0,0 +1,6 @@ +#import + +// https://registry.khronos.org/webgl/specs/latest/2.0/#3.5 +[Exposed=(Window,Worker)] +interface WebGLTransformFeedback : WebGLObject { +}; diff --git a/Libraries/LibWeb/idl_files.cmake b/Libraries/LibWeb/idl_files.cmake index 5753b8df023..ffe6d657379 100644 --- a/Libraries/LibWeb/idl_files.cmake +++ b/Libraries/LibWeb/idl_files.cmake @@ -383,6 +383,7 @@ libweb_js_bindings(WebGL/WebGLShader) libweb_js_bindings(WebGL/WebGLShaderPrecisionFormat) libweb_js_bindings(WebGL/WebGLSync) libweb_js_bindings(WebGL/WebGLTexture) +libweb_js_bindings(WebGL/WebGLTransformFeedback) libweb_js_bindings(WebGL/WebGLUniformLocation) libweb_js_bindings(WebIDL/DOMException) libweb_js_bindings(WebSockets/WebSocket) diff --git a/Tests/LibWeb/Text/expected/all-window-properties.txt b/Tests/LibWeb/Text/expected/all-window-properties.txt index 9712e3a6e57..8e813e91d64 100644 --- a/Tests/LibWeb/Text/expected/all-window-properties.txt +++ b/Tests/LibWeb/Text/expected/all-window-properties.txt @@ -412,6 +412,7 @@ WebGLShader WebGLShaderPrecisionFormat WebGLSync WebGLTexture +WebGLTransformFeedback WebGLUniformLocation WebKitCSSMatrix WebSocket