aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/pannernode.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2024-12-11 00:52:48 -0500
committerGitHub <noreply@github.com>2024-12-11 05:52:48 +0000
commite0cbab2fbb58ac687fb3df1bb56a27e748210bbb (patch)
tree5c331274b24c62842cd31cfdefe80b29120273dd /components/script/dom/pannernode.rs
parente10e989abb884f3c83a5c35d4c1b1be887ec0bb1 (diff)
downloadservo-e0cbab2fbb58ac687fb3df1bb56a27e748210bbb.tar.gz
servo-e0cbab2fbb58ac687fb3df1bb56a27e748210bbb.zip
Rewrite From/TryFrom conversions on generated types to avoid future orphan rule violations (#34554)
* script: Add traits to allow converting between types that are not defined in the script crate. Signed-off-by: Josh Matthews <josh@joshmatthews.net> * script: Rewrite all From/TryFrom implementations on generated WebIDL types to use new Convert/TryConvert traits. Signed-off-by: Josh Matthews <josh@joshmatthews.net> --------- Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Diffstat (limited to 'components/script/dom/pannernode.rs')
-rw-r--r--components/script/dom/pannernode.rs53
1 files changed, 27 insertions, 26 deletions
diff --git a/components/script/dom/pannernode.rs b/components/script/dom/pannernode.rs
index c2d558a2e73..2912cb4a474 100644
--- a/components/script/dom/pannernode.rs
+++ b/components/script/dom/pannernode.rs
@@ -13,6 +13,7 @@ use servo_media::audio::panner_node::{
};
use servo_media::audio::param::{ParamDir, ParamType};
+use crate::conversions::Convert;
use crate::dom::audionode::AudioNode;
use crate::dom::audioparam::AudioParam;
use crate::dom::baseaudiocontext::BaseAudioContext;
@@ -86,7 +87,7 @@ impl PannerNode {
if *options.coneOuterGain < 0. || *options.coneOuterGain > 1. {
return Err(Error::InvalidState);
}
- let options = options.into();
+ let options = options.convert();
let node = AudioNode::new_inherited(
AudioNodeInit::PannerNode(options),
context,
@@ -255,7 +256,7 @@ impl PannerNodeMethods<crate::DomTypeHolder> for PannerNode {
}
// https://webaudio.github.io/web-audio-api/#dom-pannernode-distancemodel
fn SetDistanceModel(&self, model: DistanceModelType) {
- self.distance_model.set(model.into());
+ self.distance_model.set(model.convert());
let msg = PannerNodeMessage::SetDistanceModel(self.distance_model.get());
self.upcast::<AudioNode>()
.message(AudioNodeMessage::PannerNode(msg));
@@ -269,7 +270,7 @@ impl PannerNodeMethods<crate::DomTypeHolder> for PannerNode {
}
// https://webaudio.github.io/web-audio-api/#dom-pannernode-panningmodel
fn SetPanningModel(&self, model: PanningModelType) {
- self.panning_model.set(model.into());
+ self.panning_model.set(model.convert());
let msg = PannerNodeMessage::SetPanningModel(self.panning_model.get());
self.upcast::<AudioNode>()
.message(AudioNodeMessage::PannerNode(msg));
@@ -372,30 +373,30 @@ impl PannerNodeMethods<crate::DomTypeHolder> for PannerNode {
}
}
-impl<'a> From<&'a PannerOptions> for PannerNodeOptions {
- fn from(options: &'a PannerOptions) -> Self {
- Self {
- panning_model: options.panningModel.into(),
- distance_model: options.distanceModel.into(),
- position_x: *options.positionX,
- position_y: *options.positionY,
- position_z: *options.positionZ,
- orientation_x: *options.orientationX,
- orientation_y: *options.orientationY,
- orientation_z: *options.orientationZ,
- ref_distance: *options.refDistance,
- max_distance: *options.maxDistance,
- rolloff_factor: *options.rolloffFactor,
- cone_inner_angle: *options.coneInnerAngle,
- cone_outer_angle: *options.coneOuterAngle,
- cone_outer_gain: *options.coneOuterGain,
+impl<'a> Convert<PannerNodeOptions> for &'a PannerOptions {
+ fn convert(self) -> PannerNodeOptions {
+ PannerNodeOptions {
+ panning_model: self.panningModel.convert(),
+ distance_model: self.distanceModel.convert(),
+ position_x: *self.positionX,
+ position_y: *self.positionY,
+ position_z: *self.positionZ,
+ orientation_x: *self.orientationX,
+ orientation_y: *self.orientationY,
+ orientation_z: *self.orientationZ,
+ ref_distance: *self.refDistance,
+ max_distance: *self.maxDistance,
+ rolloff_factor: *self.rolloffFactor,
+ cone_inner_angle: *self.coneInnerAngle,
+ cone_outer_angle: *self.coneOuterAngle,
+ cone_outer_gain: *self.coneOuterGain,
}
}
}
-impl From<DistanceModelType> for DistanceModel {
- fn from(model: DistanceModelType) -> Self {
- match model {
+impl Convert<DistanceModel> for DistanceModelType {
+ fn convert(self) -> DistanceModel {
+ match self {
DistanceModelType::Linear => DistanceModel::Linear,
DistanceModelType::Inverse => DistanceModel::Inverse,
DistanceModelType::Exponential => DistanceModel::Exponential,
@@ -403,9 +404,9 @@ impl From<DistanceModelType> for DistanceModel {
}
}
-impl From<PanningModelType> for PanningModel {
- fn from(model: PanningModelType) -> Self {
- match model {
+impl Convert<PanningModel> for PanningModelType {
+ fn convert(self) -> PanningModel {
+ match self {
PanningModelType::Equalpower => PanningModel::EqualPower,
PanningModelType::HRTF => PanningModel::HRTF,
}