script/dom/webxr/
xrviewport.rs1use dom_struct::dom_struct;
6use euclid::Rect;
7use js::context::JSContext;
8use script_bindings::reflector::{Reflector, reflect_dom_object_with_cx};
9use webxr_api::Viewport;
10
11use crate::dom::bindings::codegen::Bindings::XRViewportBinding::XRViewportMethods;
12use crate::dom::bindings::root::DomRoot;
13use crate::dom::globalscope::GlobalScope;
14
15#[dom_struct]
16pub(crate) struct XRViewport {
17 reflector_: Reflector,
18 #[no_trace]
19 viewport: Rect<i32, Viewport>,
20}
21
22impl XRViewport {
23 fn new_inherited(viewport: Rect<i32, Viewport>) -> XRViewport {
24 XRViewport {
25 reflector_: Reflector::new(),
26 viewport,
27 }
28 }
29
30 pub(crate) fn new(
31 cx: &mut JSContext,
32 global: &GlobalScope,
33 viewport: Rect<i32, Viewport>,
34 ) -> DomRoot<XRViewport> {
35 reflect_dom_object_with_cx(Box::new(XRViewport::new_inherited(viewport)), global, cx)
36 }
37}
38
39impl XRViewportMethods<crate::DomTypeHolder> for XRViewport {
40 fn X(&self) -> i32 {
42 self.viewport.origin.x
43 }
44
45 fn Y(&self) -> i32 {
47 self.viewport.origin.y
48 }
49
50 fn Width(&self) -> i32 {
52 self.viewport.size.width
53 }
54
55 fn Height(&self) -> i32 {
57 self.viewport.size.height
58 }
59}