use serde::{Deserialize, Serialize};
use crate::common::{Alignment, BlendMode, BoundsType};
#[derive(Debug, Deserialize)]
pub(crate) struct SceneItemId {
#[serde(rename = "sceneItemId")]
pub id: i64,
}
#[derive(Debug, Deserialize)]
pub(crate) struct SceneItemList {
#[serde(rename = "sceneItems")]
pub scene_items: Vec<SceneItem>,
}
#[derive(Clone, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
pub struct SceneItem {
#[serde(rename = "sceneItemId")]
pub id: i64,
#[serde(rename = "sceneItemIndex")]
pub index: u32,
#[serde(rename = "sourceName")]
pub source_name: String,
#[serde(rename = "sourceType")]
pub source_type: SourceType,
#[serde(rename = "inputKind")]
pub input_kind: Option<String>,
#[serde(rename = "isGroup")]
pub is_group: Option<bool>,
}
#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
#[non_exhaustive]
pub enum SourceType {
#[serde(rename = "OBS_SOURCE_TYPE_INPUT")]
Input,
#[serde(rename = "OBS_SOURCE_TYPE_FILTER")]
Filter,
#[serde(rename = "OBS_SOURCE_TYPE_TRANSITION")]
Transition,
#[serde(rename = "OBS_SOURCE_TYPE_SCENE")]
Scene,
}
#[derive(Debug, Deserialize)]
pub(crate) struct GetSceneItemTransform {
#[serde(rename = "sceneItemTransform")]
pub transform: SceneItemTransform,
}
#[derive(Clone, Debug, Default, Deserialize, PartialEq, PartialOrd, Serialize)]
pub struct SceneItemTransform {
#[serde(rename = "sourceWidth")]
pub source_width: f32,
#[serde(rename = "sourceHeight")]
pub source_height: f32,
#[serde(rename = "positionX")]
pub position_x: f32,
#[serde(rename = "positionY")]
pub position_y: f32,
#[serde(rename = "rotation")]
pub rotation: f32,
#[serde(rename = "scaleX")]
pub scale_x: f32,
#[serde(rename = "scaleY")]
pub scale_y: f32,
#[serde(rename = "width")]
pub width: f32,
#[serde(rename = "height")]
pub height: f32,
#[serde(rename = "alignment")]
pub alignment: Alignment,
#[serde(rename = "boundsType")]
pub bounds_type: BoundsType,
#[serde(rename = "boundsAlignment")]
pub bounds_alignment: Alignment,
#[serde(rename = "boundsWidth")]
pub bounds_width: f32,
#[serde(rename = "boundsHeight")]
pub bounds_height: f32,
#[serde(rename = "cropLeft")]
pub crop_left: u32,
#[serde(rename = "cropRight")]
pub crop_right: u32,
#[serde(rename = "cropTop")]
pub crop_top: u32,
#[serde(rename = "cropBottom")]
pub crop_bottom: u32,
#[serde(rename = "cropToBounds", default)]
pub crop_to_bounds: bool,
}
#[derive(Debug, Deserialize)]
pub(crate) struct SceneItemEnabled {
#[serde(rename = "sceneItemEnabled")]
pub enabled: bool,
}
#[derive(Debug, Deserialize)]
pub(crate) struct SceneItemLocked {
#[serde(rename = "sceneItemLocked")]
pub locked: bool,
}
#[derive(Debug, Deserialize)]
pub(crate) struct SceneItemIndex {
#[serde(rename = "sceneItemIndex")]
pub index: u32,
}
#[derive(Debug, Deserialize)]
pub(crate) struct SceneItemBlendMode {
#[serde(rename = "sceneItemBlendMode")]
pub blend_mode: BlendMode,
}
#[derive(Debug, Deserialize)]
pub(crate) struct SceneItemSettings<T> {
#[serde(rename = "sceneItemSettings")]
pub settings: T,
}