summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.h
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.h')
-rw-r--r--Userland/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/Userland/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.h b/Userland/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.h
new file mode 100644
index 0000000000..70ba19978e
--- /dev/null
+++ b/Userland/Libraries/LibWeb/WebGL/WebGLRenderingContextBase.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2022, Luke Wilde <lukew@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/RefCounted.h>
+#include <AK/WeakPtr.h>
+#include <AK/Weakable.h>
+#include <LibGL/GLContext.h>
+#include <LibWeb/Forward.h>
+#include <LibWeb/WebGL/WebGLContextAttributes.h>
+
+namespace Web::WebGL {
+
+class WebGLRenderingContextBase
+ : public RefCounted<WebGLRenderingContextBase>
+ , public Weakable<WebGLRenderingContextBase> {
+public:
+ virtual ~WebGLRenderingContextBase();
+
+protected:
+ WebGLRenderingContextBase(HTML::HTMLCanvasElement& canvas_element, NonnullOwnPtr<GL::GLContext> context, WebGLContextAttributes context_creation_parameters, WebGLContextAttributes actual_context_parameters);
+
+private:
+ WeakPtr<HTML::HTMLCanvasElement> m_canvas_element;
+
+ NonnullOwnPtr<GL::GLContext> m_context;
+
+ // https://www.khronos.org/registry/webgl/specs/latest/1.0/#context-creation-parameters
+ // Each WebGLRenderingContext has context creation parameters, set upon creation, in a WebGLContextAttributes object.
+ WebGLContextAttributes m_context_creation_parameters {};
+
+ // https://www.khronos.org/registry/webgl/specs/latest/1.0/#actual-context-parameters
+ // Each WebGLRenderingContext has actual context parameters, set each time the drawing buffer is created, in a WebGLContextAttributes object.
+ WebGLContextAttributes m_actual_context_parameters {};
+
+ // https://www.khronos.org/registry/webgl/specs/latest/1.0/#webgl-context-lost-flag
+ // Each WebGLRenderingContext has a webgl context lost flag, which is initially unset.
+ bool m_context_lost { false };
+
+ // WebGL presents its drawing buffer to the HTML page compositor immediately before a compositing operation, but only if at least one of the following has occurred since the previous compositing operation:
+ // - Context creation
+ // - Canvas resize
+ // - clear, drawArrays, or drawElements has been called while the drawing buffer is the currently bound framebuffer
+ bool m_should_present { true };
+};
+
+}