aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webgl_extensions/extension.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/webgl_extensions/extension.rs')
-rw-r--r--components/script/dom/webgl_extensions/extension.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/components/script/dom/webgl_extensions/extension.rs b/components/script/dom/webgl_extensions/extension.rs
new file mode 100644
index 00000000000..3463a1d3273
--- /dev/null
+++ b/components/script/dom/webgl_extensions/extension.rs
@@ -0,0 +1,26 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+use dom::bindings::js::Root;
+use dom::bindings::reflector::DomObject;
+use dom::bindings::trace::JSTraceable;
+use dom::webglrenderingcontext::WebGLRenderingContext;
+use super::WebGLExtensions;
+
+/// Trait implemented by WebGL extensions.
+pub trait WebGLExtension: Sized where Self::Extension: DomObject + JSTraceable {
+ type Extension;
+
+ /// Creates the DOM object of the WebGL extension.
+ fn new(ctx: &WebGLRenderingContext) -> Root<Self::Extension>;
+
+ /// Checks if the extension is supported.
+ fn is_supported(ext: &WebGLExtensions) -> bool;
+
+ /// Enable the extension.
+ fn enable(ext: &WebGLExtensions);
+
+ /// Name of the WebGL Extension.
+ fn name() -> &'static str;
+}