dawproject_rs/api/timeline_mods/
clip.rs1#![allow(unused)]
2
3use {
4 super::super::fake_rng,
5 super::{lanes::ArrangementTypeChoiceEnum, time_unit::TimeUnit, timeline::TimeLine},
6 fake::{Dummy, Fake, Faker},
7 serde::{Deserialize, Serialize},
8};
9type ClipSequenceChoice = Vec<ArrangementTypeChoiceEnum>;
10
11#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
12pub enum TimeLineEnum {
13 TimeLine(TimeLine),
14}
15
16#[derive(Debug, Deserialize, Serialize, Clone, Dummy)]
17pub struct Clip {
18 #[serde(rename = "@name")]
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub name: Option<String>,
21 #[serde(rename = "@color")]
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub color: Option<String>,
24 #[serde(rename = "@comment")]
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub comment: Option<String>,
27 #[serde(rename = "$value", default)]
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub notes_sequence_choice: Option<ClipSequenceChoice>,
30 #[serde(rename = "@time")]
31 pub time: f64,
32 #[serde(rename = "@duration")]
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub duration: Option<f64>,
35 #[serde(rename = "@contentTimeUnit")]
36 #[serde(skip_serializing_if = "Option::is_none", default)]
37 pub content_time_unit: Option<TimeUnit>,
38 #[serde(rename = "@playStart")]
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub play_start: Option<f64>,
41 #[serde(rename = "@playStop")]
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub play_stop: Option<f64>,
44 #[serde(rename = "@loopStart")]
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub loop_start: Option<f64>,
47 #[serde(rename = "@loopEnd")]
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub loop_end: Option<f64>,
50 #[serde(rename = "@fadeTimeUnit")]
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub fade_time_unit: Option<TimeUnit>,
53 #[serde(rename = "@fadeInTime")]
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub fade_in_time: Option<f64>,
56 #[serde(rename = "@fadeOutTime")]
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub fade_out_time: Option<f64>,
59 #[serde(rename = "@reference")]
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub reference: Option<String>,
62}
63
64impl Clip {
65 pub fn new_test(_content: TimeLine, time: f64, duration: f64) -> Self {
66 Clip {
67 name: None,
68 color: None,
69 comment: None,
70 notes_sequence_choice: None,
71 time,
72 duration: Some(duration),
73 content_time_unit: None,
74 play_start: None,
75 play_stop: None,
76 loop_start: None,
77 loop_end: None,
78 fade_time_unit: None,
79 fade_in_time: None,
80 fade_out_time: None,
81 reference: None,
82 }
83 }
84
85 pub fn new_fake() -> Self {
86 let o: Self = Faker.fake_with_rng(&mut fake_rng());
87 o
88 }
89}
90
91#[cfg(test)]
92mod tests {
93 use {super::super::timeline::TimeLine, std::error::Error};
94
95 use {super::Clip, quick_xml::se::to_string};
96
97 #[test]
98 pub fn se_test() -> Result<(), Box<dyn Error>> {
99 let mut o = Clip::new_test(TimeLine::new_fake(), 1.0, 0.0);
100
101 match to_string(&o) {
102 Ok(o) => println!("{}", o),
103 Err(err) => return Err(err.into()),
104 }
105
106 Ok(())
107 }
108}