libobs_wrapper\sources/
builder.rs1use crate::{
2 data::ObsObjectBuilder,
3 scenes::{ObsSceneItemRef, ObsSceneRef, SceneItemExtSceneTrait},
4 sources::ObsSourceTrait,
5 utils::ObsError,
6};
7
8pub trait ObsSourceBuilder: ObsObjectBuilder {
9 type T: ObsSourceTrait + Clone + 'static;
10
11 fn build(self) -> Result<Self::T, ObsError>
12 where
13 Self: Sized;
14
15 fn add_to_scene(self, scene: &mut ObsSceneRef) -> Result<ObsSceneItemRef<Self::T>, ObsError>
18 where
19 Self: Sized,
20 {
21 let source = self.build()?;
22
23 scene.add_source(source.clone())
24 }
25}