Parcourir la source

LibWeb/WebGL: Implement drawingBufferWidth and drawingBufferHeight

Aliaksandr Kalenik il y a 7 mois
Parent
commit
c199be061a

+ 12 - 0
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();
+}
+
 }

+ 3 - 0
Libraries/LibWeb/WebGL/WebGL2RenderingContext.h

@@ -44,6 +44,9 @@ public:
     Optional<Vector<String>> 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;
 

+ 12 - 0
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();
+}
+
 }

+ 3 - 0
Libraries/LibWeb/WebGL/WebGLRenderingContext.h

@@ -43,6 +43,9 @@ public:
     Optional<Vector<String>> 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;
 

+ 2 - 2
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;