mirror of https://github.com/dnaka91/obws
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.4 KiB
Rust
87 lines
2.4 KiB
Rust
//! Requests related to scenes.
|
|
|
|
use serde::Serialize;
|
|
use serde_with::skip_serializing_none;
|
|
use time::Duration;
|
|
|
|
pub use super::ids::SceneId;
|
|
|
|
#[skip_serializing_none]
|
|
#[derive(Serialize)]
|
|
#[serde(tag = "requestType", content = "requestData")]
|
|
pub(crate) enum Request<'a> {
|
|
#[serde(rename = "GetSceneList")]
|
|
List,
|
|
#[serde(rename = "GetGroupList")]
|
|
ListGroups,
|
|
#[serde(rename = "GetCurrentProgramScene")]
|
|
CurrentProgramScene,
|
|
#[serde(rename = "SetCurrentProgramScene")]
|
|
SetCurrentProgramScene {
|
|
/// Scene to set as the current program scene.
|
|
#[serde(flatten)]
|
|
scene: SceneId<'a>,
|
|
},
|
|
#[serde(rename = "GetCurrentPreviewScene")]
|
|
CurrentPreviewScene,
|
|
#[serde(rename = "SetCurrentPreviewScene")]
|
|
SetCurrentPreviewScene {
|
|
/// Scene to set as the current preview scene.
|
|
#[serde(flatten)]
|
|
scene: SceneId<'a>,
|
|
},
|
|
#[serde(rename = "SetSceneName")]
|
|
SetName {
|
|
/// The scene to be renamed.
|
|
#[serde(flatten)]
|
|
scene: SceneId<'a>,
|
|
/// New name for the scene.
|
|
#[serde(rename = "newSceneName")]
|
|
new_name: &'a str,
|
|
},
|
|
#[serde(rename = "CreateScene")]
|
|
Create {
|
|
/// Name for the new scene.
|
|
#[serde(rename = "sceneName")]
|
|
name: &'a str,
|
|
},
|
|
#[serde(rename = "RemoveScene")]
|
|
Remove {
|
|
/// The scene to remove.
|
|
#[serde(flatten)]
|
|
scene: SceneId<'a>,
|
|
},
|
|
#[serde(rename = "GetSceneSceneTransitionOverride")]
|
|
TransitionOverride {
|
|
/// Identifier of the scene.
|
|
#[serde(flatten)]
|
|
scene: SceneId<'a>,
|
|
},
|
|
#[serde(rename = "SetSceneSceneTransitionOverride")]
|
|
SetTransitionOverride(SetTransitionOverride<'a>),
|
|
}
|
|
|
|
impl<'a> From<Request<'a>> for super::RequestType<'a> {
|
|
fn from(value: Request<'a>) -> Self {
|
|
super::RequestType::Scenes(value)
|
|
}
|
|
}
|
|
|
|
/// Request information for [`crate::client::Scenes::set_transition_override`].
|
|
#[skip_serializing_none]
|
|
#[derive(Default, Serialize)]
|
|
pub struct SetTransitionOverride<'a> {
|
|
/// The target scene.
|
|
#[serde(flatten)]
|
|
pub scene: SceneId<'a>,
|
|
/// Name of the scene transition to use as override.
|
|
#[serde(rename = "transitionName")]
|
|
pub transition: Option<&'a str>,
|
|
/// Duration to use for any overridden transition.
|
|
#[serde(
|
|
rename = "transitionDuration",
|
|
with = "crate::serde::duration_millis::option"
|
|
)]
|
|
pub duration: Option<Duration>,
|
|
}
|