diff options
Diffstat (limited to 'components/script/dom/vrfieldofview.rs')
-rw-r--r-- | components/script/dom/vrfieldofview.rs | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/components/script/dom/vrfieldofview.rs b/components/script/dom/vrfieldofview.rs new file mode 100644 index 00000000000..5103e1ec781 --- /dev/null +++ b/components/script/dom/vrfieldofview.rs @@ -0,0 +1,58 @@ +/* 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::cell::DOMRefCell; +use dom::bindings::codegen::Bindings::VRFieldOfViewBinding; +use dom::bindings::codegen::Bindings::VRFieldOfViewBinding::VRFieldOfViewMethods; +use dom::bindings::js::Root; +use dom::bindings::num::Finite; +use dom::bindings::reflector::{Reflector, reflect_dom_object}; +use dom::globalscope::GlobalScope; +use webvr_traits::WebVRFieldOfView; + +#[dom_struct] +pub struct VRFieldOfView { + reflector_: Reflector, + #[ignore_heap_size_of = "Defined in rust-webvr"] + fov: DOMRefCell<WebVRFieldOfView> +} + +unsafe_no_jsmanaged_fields!(WebVRFieldOfView); + +impl VRFieldOfView { + fn new_inherited(fov: WebVRFieldOfView) -> VRFieldOfView { + VRFieldOfView { + reflector_: Reflector::new(), + fov: DOMRefCell::new(fov) + } + } + + pub fn new(global: &GlobalScope, fov: WebVRFieldOfView) -> Root<VRFieldOfView> { + reflect_dom_object(box VRFieldOfView::new_inherited(fov), + global, + VRFieldOfViewBinding::Wrap) + } +} + +impl VRFieldOfViewMethods for VRFieldOfView { + // https://w3c.github.io/webvr/#interface-interface-vrfieldofview + fn UpDegrees(&self) -> Finite<f64> { + Finite::wrap(self.fov.borrow().up_degrees) + } + + // https://w3c.github.io/webvr/#interface-interface-vrfieldofview + fn RightDegrees(&self) -> Finite<f64> { + Finite::wrap(self.fov.borrow().right_degrees) + } + + // https://w3c.github.io/webvr/#interface-interface-vrfieldofview + fn DownDegrees(&self) -> Finite<f64> { + Finite::wrap(self.fov.borrow().down_degrees) + } + + // https://w3c.github.io/webvr/#interface-interface-vrfieldofview + fn LeftDegrees(&self) -> Finite<f64> { + Finite::wrap(self.fov.borrow().left_degrees) + } +} |