aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/pannernode.rs
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2018-08-24 09:48:22 -0700
committerManish Goregaokar <manishsmail@gmail.com>2018-08-24 12:22:19 -0700
commit18960b6c947453a3cf38794f5b70f8393dde3c6c (patch)
tree137bcbe08850440439e66c8f997cb086ee4dd770 /components/script/dom/pannernode.rs
parent7daec55010e9877294475a1f01570d15375ee44b (diff)
downloadservo-18960b6c947453a3cf38794f5b70f8393dde3c6c.tar.gz
servo-18960b6c947453a3cf38794f5b70f8393dde3c6c.zip
Add PannerNode.setPosition(), setOrientation()
Diffstat (limited to 'components/script/dom/pannernode.rs')
-rw-r--r--components/script/dom/pannernode.rs19
1 files changed, 17 insertions, 2 deletions
diff --git a/components/script/dom/pannernode.rs b/components/script/dom/pannernode.rs
index 558b5a005de..9a596ab91b5 100644
--- a/components/script/dom/pannernode.rs
+++ b/components/script/dom/pannernode.rs
@@ -7,7 +7,7 @@ use dom::audioparam::AudioParam;
use dom::baseaudiocontext::BaseAudioContext;
use dom::bindings::codegen::Bindings::AudioNodeBinding::{ChannelCountMode, ChannelInterpretation};
use dom::bindings::codegen::Bindings::AudioNodeBinding::AudioNodeOptions;
-use dom::bindings::codegen::Bindings::AudioParamBinding::AutomationRate;
+use dom::bindings::codegen::Bindings::AudioParamBinding::{AudioParamMethods, AutomationRate};
use dom::bindings::codegen::Bindings::PannerNodeBinding::{self, PannerNodeMethods, PannerOptions};
use dom::bindings::codegen::Bindings::PannerNodeBinding::{DistanceModelType, PanningModelType};
use dom::bindings::error::Fallible;
@@ -17,9 +17,9 @@ use dom::bindings::reflector::reflect_dom_object;
use dom::bindings::root::{Dom, DomRoot};
use dom::window::Window;
use dom_struct::dom_struct;
+use servo_media::audio::node::{AudioNodeInit, AudioNodeMessage};
use servo_media::audio::panner_node::{DistanceModel, PannerNodeOptions, PanningModel};
use servo_media::audio::panner_node::PannerNodeMessage;
-use servo_media::audio::node::{AudioNodeInit, AudioNodeMessage};
use servo_media::audio::param::{ParamDir, ParamType};
use std::cell::Cell;
use std::f32;
@@ -189,6 +189,7 @@ impl PannerNodeMethods for PannerNode {
fn OrientationZ(&self) -> DomRoot<AudioParam> {
DomRoot::from_ref(&self.orientation_z)
}
+
// https://webaudio.github.io/web-audio-api/#dom-pannernode-distancemodel
fn DistanceModel(&self) -> DistanceModelType {
match self.distance_model.get() {
@@ -276,6 +277,20 @@ impl PannerNodeMethods for PannerNode {
let msg = PannerNodeMessage::SetConeGain(self.cone_outer_gain.get());
self.upcast::<AudioNode>().message(AudioNodeMessage::PannerNode(msg));
}
+
+ // https://webaudio.github.io/web-audio-api/#dom-pannernode-setposition
+ fn SetPosition(&self, x: Finite<f32>, y: Finite<f32>, z: Finite<f32>) {
+ self.position_x.SetValue(x);
+ self.position_y.SetValue(y);
+ self.position_z.SetValue(z);
+ }
+
+ // https://webaudio.github.io/web-audio-api/#dom-pannernode-setorientation
+ fn SetOrientation(&self, x: Finite<f32>, y: Finite<f32>, z: Finite<f32>) {
+ self.orientation_x.SetValue(x);
+ self.orientation_y.SetValue(y);
+ self.orientation_z.SetValue(z);
+ }
}
impl<'a> From<&'a PannerOptions> for PannerNodeOptions {