dawproject_rs/api/
scene.rs

1#![allow(unused)]
2use {
3    super::{
4        add_one_get, fake_rng,
5        timeline_mods::{
6            audio::Audio, clip_slot::ClipSlot, clips::Clips, lanes::Lanes, markers::Markers,
7            notes::Notes, points::Points, timeline::TimeLine, video::Video, warps::Warps,
8        },
9    },
10    fake::{Dummy, Fake, Faker},
11    serde::{Deserialize, Serialize},
12};
13
14#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
15enum SceneSequenceEnum {
16    Timeline(TimeLine),
17    Lanes(Lanes),
18    Notes(Notes),
19    Clips(Clips),
20    ClipSlot(ClipSlot),
21    Markers(Markers),
22    Warps(Warps),
23    Audio(Audio),
24    Video(Video),
25    Points(Points),
26}
27
28#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
29pub struct Scene {
30    // extends referenceable
31    #[serde(rename = "@id")]
32    id: Option<String>,
33    #[serde(rename = "@name")]
34    name: Option<String>,
35    #[serde(rename = "@color")]
36    color: Option<String>,
37    #[serde(rename = "@comment")]
38    comment: Option<String>,
39    #[serde(rename = "$value", default)]
40    content: Option<SceneSequenceEnum>,
41}
42
43impl Scene {
44    pub fn new_test() -> Self {
45        Self {
46            id: Some(format!("id{}", add_one_get())),
47            name: None,
48            color: None,
49            comment: None,
50            content: None,
51        }
52    }
53
54    pub fn new_fake() -> Self {
55        let o: Self = Faker.fake_with_rng(&mut fake_rng());
56        o
57    }
58}
59
60#[cfg(test)]
61mod tests {
62    use {super::Scene, quick_xml::se::to_string, std::error::Error};
63
64    #[test]
65    pub fn se_test() -> Result<(), Box<dyn Error>> {
66        let mut o = Scene::new_fake();
67
68        match to_string(&o) {
69            Ok(o) => println!("{}", o),
70            Err(err) => return Err(err.into()),
71        }
72
73        Ok(())
74    }
75}