mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
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>
This commit is contained in:
parent
e10e989abb
commit
e0cbab2fbb
40 changed files with 439 additions and 380 deletions
|
@ -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,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue