From c199be061a18ad52afc9dd26486e2ace375a618e Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Tue, 10 Dec 2024 04:52:05 +0100 Subject: [PATCH] LibWeb/WebGL: Implement drawingBufferWidth and drawingBufferHeight --- Libraries/LibWeb/WebGL/WebGL2RenderingContext.cpp | 12 ++++++++++++ Libraries/LibWeb/WebGL/WebGL2RenderingContext.h | 3 +++ Libraries/LibWeb/WebGL/WebGLRenderingContext.cpp | 12 ++++++++++++ Libraries/LibWeb/WebGL/WebGLRenderingContext.h | 3 +++ Libraries/LibWeb/WebGL/WebGLRenderingContextBase.idl | 4 ++-- 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/Libraries/LibWeb/WebGL/WebGL2RenderingContext.cpp b/Libraries/LibWeb/WebGL/WebGL2RenderingContext.cpp index 01e647aa56a..9576416dd84 100644 --- a/Libraries/LibWeb/WebGL/WebGL2RenderingContext.cpp +++ b/Libraries/LibWeb/WebGL/WebGL2RenderingContext.cpp @@ -155,4 +155,16 @@ JS::Object* WebGL2RenderingContext::get_extension(String const&) return nullptr; } +WebIDL::Long WebGL2RenderingContext::drawing_buffer_width() const +{ + auto size = canvas_for_binding()->bitmap_size_for_canvas(); + return size.width(); +} + +WebIDL::Long WebGL2RenderingContext::drawing_buffer_height() const +{ + auto size = canvas_for_binding()->bitmap_size_for_canvas(); + return size.height(); +} + } diff --git a/Libraries/LibWeb/WebGL/WebGL2RenderingContext.h b/Libraries/LibWeb/WebGL/WebGL2RenderingContext.h index d60f7ec6dbf..0740a182072 100644 --- a/Libraries/LibWeb/WebGL/WebGL2RenderingContext.h +++ b/Libraries/LibWeb/WebGL/WebGL2RenderingContext.h @@ -44,6 +44,9 @@ public: Optional> get_supported_extensions() const; JS::Object* get_extension(String const& name); + WebIDL::Long drawing_buffer_width() const; + WebIDL::Long drawing_buffer_height() const; + private: virtual void initialize(JS::Realm&) override; diff --git a/Libraries/LibWeb/WebGL/WebGLRenderingContext.cpp b/Libraries/LibWeb/WebGL/WebGLRenderingContext.cpp index 82a2c2636d4..b40b9ab74da 100644 --- a/Libraries/LibWeb/WebGL/WebGLRenderingContext.cpp +++ b/Libraries/LibWeb/WebGL/WebGLRenderingContext.cpp @@ -171,4 +171,16 @@ JS::Object* WebGLRenderingContext::get_extension(String const&) return nullptr; } +WebIDL::Long WebGLRenderingContext::drawing_buffer_width() const +{ + auto size = canvas_for_binding()->bitmap_size_for_canvas(); + return size.width(); +} + +WebIDL::Long WebGLRenderingContext::drawing_buffer_height() const +{ + auto size = canvas_for_binding()->bitmap_size_for_canvas(); + return size.height(); +} + } diff --git a/Libraries/LibWeb/WebGL/WebGLRenderingContext.h b/Libraries/LibWeb/WebGL/WebGLRenderingContext.h index 65b652201d7..d0fa4ed82e4 100644 --- a/Libraries/LibWeb/WebGL/WebGLRenderingContext.h +++ b/Libraries/LibWeb/WebGL/WebGLRenderingContext.h @@ -43,6 +43,9 @@ public: Optional> get_supported_extensions() const; JS::Object* get_extension(String const& name); + WebIDL::Long drawing_buffer_width() const; + WebIDL::Long drawing_buffer_height() const; + private: virtual void initialize(JS::Realm&) override; diff --git a/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.idl b/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.idl index 599d0c7a226..1049344b03b 100644 --- a/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.idl +++ b/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.idl @@ -32,8 +32,8 @@ interface mixin WebGLRenderingContextBase { // FIXME: The type should be (HTMLCanvasElement or OffscreenCanvas). [ImplementedAs=canvas_for_binding] readonly attribute HTMLCanvasElement canvas; - [FIXME] readonly attribute GLsizei drawingBufferWidth; - [FIXME] readonly attribute GLsizei drawingBufferHeight; + readonly attribute GLsizei drawingBufferWidth; + readonly attribute GLsizei drawingBufferHeight; [FIXME] readonly attribute GLenum drawingBufferFormat; [FIXME] attribute PredefinedColorSpace drawingBufferColorSpace;