script/dom/webgl/
webglactiveinfo.rs

1/* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
5// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
6use dom_struct::dom_struct;
7
8use crate::dom::bindings::codegen::Bindings::WebGLActiveInfoBinding::WebGLActiveInfoMethods;
9use crate::dom::bindings::reflector::{Reflector, reflect_dom_object};
10use crate::dom::bindings::root::DomRoot;
11use crate::dom::bindings::str::DOMString;
12use crate::dom::window::Window;
13use crate::script_runtime::CanGc;
14
15#[dom_struct]
16pub(crate) struct WebGLActiveInfo {
17    reflector_: Reflector,
18    size: i32,
19    // NOTE: `ty` stands for `type`, which is a reserved keyword
20    ty: u32,
21    name: DOMString,
22}
23
24impl WebGLActiveInfo {
25    fn new_inherited(size: i32, ty: u32, name: DOMString) -> WebGLActiveInfo {
26        WebGLActiveInfo {
27            reflector_: Reflector::new(),
28            size,
29            ty,
30            name,
31        }
32    }
33
34    pub(crate) fn new(
35        window: &Window,
36        size: i32,
37        ty: u32,
38        name: DOMString,
39        can_gc: CanGc,
40    ) -> DomRoot<WebGLActiveInfo> {
41        reflect_dom_object(
42            Box::new(WebGLActiveInfo::new_inherited(size, ty, name)),
43            window,
44            can_gc,
45        )
46    }
47}
48
49impl WebGLActiveInfoMethods<crate::DomTypeHolder> for WebGLActiveInfo {
50    // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.11.1
51    fn Size(&self) -> i32 {
52        self.size
53    }
54
55    // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.11.1
56    fn Type(&self) -> u32 {
57        self.ty
58    }
59
60    // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.11.1
61    fn Name(&self) -> DOMString {
62        self.name.clone()
63    }
64}