script/dom/webgl/
webglshaderprecisionformat.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::WebGLShaderPrecisionFormatBinding::WebGLShaderPrecisionFormatMethods;
9use crate::dom::bindings::reflector::{Reflector, reflect_dom_object};
10use crate::dom::bindings::root::DomRoot;
11use crate::dom::window::Window;
12use crate::script_runtime::CanGc;
13
14#[dom_struct]
15pub(crate) struct WebGLShaderPrecisionFormat {
16    reflector_: Reflector,
17    range_min: i32,
18    range_max: i32,
19    precision: i32,
20}
21
22impl WebGLShaderPrecisionFormat {
23    fn new_inherited(range_min: i32, range_max: i32, precision: i32) -> WebGLShaderPrecisionFormat {
24        WebGLShaderPrecisionFormat {
25            reflector_: Reflector::new(),
26            range_min,
27            range_max,
28            precision,
29        }
30    }
31
32    pub(crate) fn new(
33        window: &Window,
34        range_min: i32,
35        range_max: i32,
36        precision: i32,
37        can_gc: CanGc,
38    ) -> DomRoot<WebGLShaderPrecisionFormat> {
39        reflect_dom_object(
40            Box::new(WebGLShaderPrecisionFormat::new_inherited(
41                range_min, range_max, precision,
42            )),
43            window,
44            can_gc,
45        )
46    }
47}
48
49impl WebGLShaderPrecisionFormatMethods<crate::DomTypeHolder> for WebGLShaderPrecisionFormat {
50    /// <https://www.khronos.org/registry/webgl/specs/1.0/#5.12.1>
51    fn RangeMin(&self) -> i32 {
52        self.range_min
53    }
54
55    /// <https://www.khronos.org/registry/webgl/specs/1.0/#5.12.1>
56    fn RangeMax(&self) -> i32 {
57        self.range_max
58    }
59
60    /// <https://www.khronos.org/registry/webgl/specs/1.0/#5.12.1>
61    fn Precision(&self) -> i32 {
62        self.precision
63    }
64}