script/dom/webxr/
xrviewport.rs1use dom_struct::dom_struct;
6use euclid::Rect;
7use webxr_api::Viewport;
8
9use crate::dom::bindings::codegen::Bindings::XRViewportBinding::XRViewportMethods;
10use crate::dom::bindings::reflector::{Reflector, reflect_dom_object};
11use crate::dom::bindings::root::DomRoot;
12use crate::dom::globalscope::GlobalScope;
13use crate::script_runtime::CanGc;
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 global: &GlobalScope,
32 viewport: Rect<i32, Viewport>,
33 can_gc: CanGc,
34 ) -> DomRoot<XRViewport> {
35 reflect_dom_object(
36 Box::new(XRViewport::new_inherited(viewport)),
37 global,
38 can_gc,
39 )
40 }
41}
42
43impl XRViewportMethods<crate::DomTypeHolder> for XRViewport {
44 fn X(&self) -> i32 {
46 self.viewport.origin.x
47 }
48
49 fn Y(&self) -> i32 {
51 self.viewport.origin.y
52 }
53
54 fn Width(&self) -> i32 {
56 self.viewport.size.width
57 }
58
59 fn Height(&self) -> i32 {
61 self.viewport.size.height
62 }
63}