dawproject_rs/api/
scene.rs1#![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 #[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}