mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-21 03:55:24 +00:00
LibWeb/WebGL: Implement getContextAttributes()
This commit is contained in:
parent
a8c282a30e
commit
c817eb8d2b
Notes:
github-actions[bot]
2024-12-05 08:57:56 +00:00
Author: https://github.com/kalenikaliaksandr Commit: https://github.com/LadybirdBrowser/ladybird/commit/c817eb8d2b7 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2776
8 changed files with 22 additions and 18 deletions
|
@ -10,8 +10,3 @@ typedef long long GLsizeiptr;
|
|||
typedef unrestricted float GLfloat;
|
||||
typedef unrestricted float GLclampf;
|
||||
|
||||
enum WebGLPowerPreference {
|
||||
"default",
|
||||
"low-power",
|
||||
"high-performance"
|
||||
};
|
||||
|
|
|
@ -96,17 +96,17 @@ JS::ThrowCompletionOr<WebGLContextAttributes> convert_value_to_context_attribute
|
|||
else
|
||||
power_preference = TRY(value.as_object().get("powerPreference"));
|
||||
|
||||
WebGLPowerPreference power_preference_value { WebGLPowerPreference::Default };
|
||||
Bindings::WebGLPowerPreference power_preference_value { Bindings::WebGLPowerPreference::Default };
|
||||
|
||||
if (!power_preference.is_undefined()) {
|
||||
auto power_preference_string = TRY(power_preference.to_string(vm));
|
||||
|
||||
if (power_preference_string == "high-performance"sv)
|
||||
power_preference_value = WebGLPowerPreference::HighPerformance;
|
||||
power_preference_value = Bindings::WebGLPowerPreference::HighPerformance;
|
||||
else if (power_preference_string == "low-power"sv)
|
||||
power_preference_value = WebGLPowerPreference::LowPower;
|
||||
power_preference_value = Bindings::WebGLPowerPreference::LowPower;
|
||||
else if (power_preference_string == "default"sv)
|
||||
power_preference_value = WebGLPowerPreference::Default;
|
||||
power_preference_value = Bindings::WebGLPowerPreference::Default;
|
||||
else
|
||||
return vm.throw_completion<JS::TypeError>(JS::ErrorType::InvalidEnumerationValue, power_preference_string, "WebGLPowerPreference");
|
||||
}
|
||||
|
|
|
@ -7,15 +7,10 @@
|
|||
#pragma once
|
||||
|
||||
#include <LibJS/Forward.h>
|
||||
#include <LibWeb/Bindings/WebGLRenderingContextPrototype.h>
|
||||
|
||||
namespace Web::WebGL {
|
||||
|
||||
enum class WebGLPowerPreference {
|
||||
Default,
|
||||
LowPower,
|
||||
HighPerformance,
|
||||
};
|
||||
|
||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#WEBGLCONTEXTATTRIBUTES
|
||||
struct WebGLContextAttributes {
|
||||
bool alpha { true };
|
||||
|
@ -24,7 +19,7 @@ struct WebGLContextAttributes {
|
|||
bool antialias { true };
|
||||
bool premultiplied_alpha { true };
|
||||
bool preserve_drawing_buffer { false };
|
||||
WebGLPowerPreference power_preference { WebGLPowerPreference::Default };
|
||||
Bindings::WebGLPowerPreference power_preference { Bindings::WebGLPowerPreference::Default };
|
||||
bool fail_if_major_performance_caveat { false };
|
||||
bool desynchronized { false };
|
||||
};
|
||||
|
|
|
@ -131,6 +131,13 @@ bool WebGLRenderingContext::is_context_lost() const
|
|||
return m_context_lost;
|
||||
}
|
||||
|
||||
Optional<WebGLContextAttributes> WebGLRenderingContext::get_context_attributes()
|
||||
{
|
||||
if (is_context_lost())
|
||||
return {};
|
||||
return m_actual_context_parameters;
|
||||
}
|
||||
|
||||
void WebGLRenderingContext::set_size(Gfx::IntSize const& size)
|
||||
{
|
||||
context().set_size(size);
|
||||
|
|
|
@ -32,6 +32,7 @@ public:
|
|||
GC::Ref<HTML::HTMLCanvasElement> canvas_for_binding() const;
|
||||
|
||||
bool is_context_lost() const;
|
||||
Optional<WebGLContextAttributes> get_context_attributes();
|
||||
|
||||
RefPtr<Gfx::PaintingSurface> surface();
|
||||
void allocate_painting_surface_if_needed();
|
||||
|
|
|
@ -8,3 +8,9 @@ interface WebGLRenderingContext {
|
|||
|
||||
WebGLRenderingContext includes WebGLRenderingContextBase;
|
||||
WebGLRenderingContext includes WebGLRenderingContextOverloads;
|
||||
|
||||
enum WebGLPowerPreference {
|
||||
"default",
|
||||
"low-power",
|
||||
"high-performance"
|
||||
};
|
||||
|
|
|
@ -38,7 +38,7 @@ interface mixin WebGLRenderingContextBase {
|
|||
[FIXME] attribute PredefinedColorSpace drawingBufferColorSpace;
|
||||
[FIXME] attribute PredefinedColorSpace unpackColorSpace;
|
||||
|
||||
[FIXME] WebGLContextAttributes? getContextAttributes();
|
||||
WebGLContextAttributes? getContextAttributes();
|
||||
[FIXME] boolean isContextLost();
|
||||
|
||||
sequence<DOMString>? getSupportedExtensions();
|
||||
|
|
|
@ -345,7 +345,7 @@ public:
|
|||
continue;
|
||||
}
|
||||
|
||||
if (function.name == "getSupportedExtensions"sv || function.name == "getExtension"sv) {
|
||||
if (function.name == "getSupportedExtensions"sv || function.name == "getExtension"sv || function.name == "getContextAttributes"sv) {
|
||||
// Implemented in WebGLRenderingContext
|
||||
continue;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue