From 2b09afb971059f22a0eb82661262954211b694b9 Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Wed, 13 Nov 2024 10:06:07 +0100 Subject: [PATCH] LibWeb: Add WebGLShader --- Libraries/LibWeb/CMakeLists.txt | 1 + Libraries/LibWeb/WebGL/WebGLShader.cpp | 21 ++++++++++++++++ Libraries/LibWeb/WebGL/WebGLShader.h | 24 +++++++++++++++++++ Libraries/LibWeb/WebGL/WebGLShader.idl | 6 +++++ Libraries/LibWeb/idl_files.cmake | 1 + .../Userland/Libraries/LibWeb/idl_files.gni | 1 + .../Text/expected/all-window-properties.txt | 1 + 7 files changed, 55 insertions(+) create mode 100644 Libraries/LibWeb/WebGL/WebGLShader.cpp create mode 100644 Libraries/LibWeb/WebGL/WebGLShader.h create mode 100644 Libraries/LibWeb/WebGL/WebGLShader.idl diff --git a/Libraries/LibWeb/CMakeLists.txt b/Libraries/LibWeb/CMakeLists.txt index e0069145280..98da5256034 100644 --- a/Libraries/LibWeb/CMakeLists.txt +++ b/Libraries/LibWeb/CMakeLists.txt @@ -786,6 +786,7 @@ set(SOURCES WebGL/WebGLRenderbuffer.cpp WebGL/WebGLRenderingContext.cpp WebGL/WebGLRenderingContextBase.cpp + WebGL/WebGLShader.cpp WebIDL/AbstractOperations.cpp WebIDL/Buffers.cpp WebIDL/CallbackType.cpp diff --git a/Libraries/LibWeb/WebGL/WebGLShader.cpp b/Libraries/LibWeb/WebGL/WebGLShader.cpp new file mode 100644 index 00000000000..75d265da9e3 --- /dev/null +++ b/Libraries/LibWeb/WebGL/WebGLShader.cpp @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2024, Jelle Raaijmakers + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include + +namespace Web::WebGL { + +JS_DEFINE_ALLOCATOR(WebGLShader); + +WebGLShader::WebGLShader(JS::Realm& realm) + : WebGLObject(realm) +{ +} + +WebGLShader::~WebGLShader() = default; + +} diff --git a/Libraries/LibWeb/WebGL/WebGLShader.h b/Libraries/LibWeb/WebGL/WebGLShader.h new file mode 100644 index 00000000000..1ce8308ae3b --- /dev/null +++ b/Libraries/LibWeb/WebGL/WebGLShader.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2024, Jelle Raaijmakers + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Web::WebGL { + +class WebGLShader final : public WebGLObject { + WEB_PLATFORM_OBJECT(WebGLShader, WebGLObject); + JS_DECLARE_ALLOCATOR(WebGLShader); + +public: + virtual ~WebGLShader(); + +protected: + explicit WebGLShader(JS::Realm&); +}; + +} diff --git a/Libraries/LibWeb/WebGL/WebGLShader.idl b/Libraries/LibWeb/WebGL/WebGLShader.idl new file mode 100644 index 00000000000..22be7a9156d --- /dev/null +++ b/Libraries/LibWeb/WebGL/WebGLShader.idl @@ -0,0 +1,6 @@ +#import + +// https://registry.khronos.org/webgl/specs/latest/1.0/#5.8 +[Exposed=(Window,Worker)] +interface WebGLShader : WebGLObject { +}; diff --git a/Libraries/LibWeb/idl_files.cmake b/Libraries/LibWeb/idl_files.cmake index 5e5baccd28e..f34728a5760 100644 --- a/Libraries/LibWeb/idl_files.cmake +++ b/Libraries/LibWeb/idl_files.cmake @@ -366,6 +366,7 @@ libweb_js_bindings(WebGL/WebGLObject) libweb_js_bindings(WebGL/WebGLProgram) libweb_js_bindings(WebGL/WebGLRenderbuffer) libweb_js_bindings(WebGL/WebGLRenderingContext) +libweb_js_bindings(WebGL/WebGLShader) libweb_js_bindings(WebIDL/DOMException) libweb_js_bindings(WebSockets/WebSocket) libweb_js_bindings(WebVTT/VTTCue) diff --git a/Meta/gn/secondary/Userland/Libraries/LibWeb/idl_files.gni b/Meta/gn/secondary/Userland/Libraries/LibWeb/idl_files.gni index 571e01af3b3..8c4859be47a 100644 --- a/Meta/gn/secondary/Userland/Libraries/LibWeb/idl_files.gni +++ b/Meta/gn/secondary/Userland/Libraries/LibWeb/idl_files.gni @@ -378,6 +378,7 @@ standard_idl_files = [ "//Userland/Libraries/LibWeb/WebGL/WebGLProgram.idl", "//Userland/Libraries/LibWeb/WebGL/WebGLRenderbuffer.idl", "//Userland/Libraries/LibWeb/WebGL/WebGLRenderingContext.idl", + "//Userland/Libraries/LibWeb/WebGL/WebGLShader.idl", "//Userland/Libraries/LibWeb/WebIDL/DOMException.idl", "//Userland/Libraries/LibWeb/WebSockets/WebSocket.idl", "//Userland/Libraries/LibWeb/WebVTT/VTTCue.idl", diff --git a/Tests/LibWeb/Text/expected/all-window-properties.txt b/Tests/LibWeb/Text/expected/all-window-properties.txt index 4554857a7a8..a60b0b6dabf 100644 --- a/Tests/LibWeb/Text/expected/all-window-properties.txt +++ b/Tests/LibWeb/Text/expected/all-window-properties.txt @@ -397,6 +397,7 @@ WebGLObject WebGLProgram WebGLRenderbuffer WebGLRenderingContext +WebGLShader WebKitCSSMatrix WebSocket WheelEvent