Trait TimedEvent

Source
pub trait TimedEvent: TimedEventInterface {
    // Provided methods
    fn shift(&mut self, delta: TimeDelta) { ... }
    fn duration(&self) -> TimeDelta { ... }
}
Expand description

Helper methods for time-based subtitle events.

Provided Methods§

Source

fn shift(&mut self, delta: TimeDelta)

Shift subtitle event by given amount of time in milliseconds.

Positive numbers will result in the subtitle event appearing later, while negative numbers will make the event appear earlier.

Examples found in repository?
examples/modification.rs (line 13)
3fn main() -> Result<(), Error> {
4    let sub = TimedSubtitleFile::new("/path/to/subtitle.ass")?;
5    let mut ass = AssSubtitle::from(sub);
6
7    println!("{}", ass.script_info());
8
9    for event in ass.events_mut() {
10        event.style = Some("Karaoke".to_string());
11
12        if event.duration() > TimeDelta::from(500) {
13            event.shift(2000.into());
14        }
15    }
16
17    ass.export("/path/to/output.ass")
18}
More examples
Hide additional examples
examples/basic.rs (line 22)
3fn main() -> Result<(), Error> {
4    // We can directly specify the format to open a subtitle file
5    let vtt = WebVttSubtitle::from_path("/path/to/some.vtt")?;
6
7    // and then directly work with its data
8    println!("{}", vtt.header().cloned().unwrap_or_default());
9
10    // or we could use the more general interface to open (timed) subtitle files
11    let sub = TimedSubtitleFile::new("/path/to/file.srt")?;
12
13    // Move the underlying data out in order to access format-specific properties
14    // Note that if the format doesn't match, this will perform a conversion instead of just moving the data
15    let mut srt = SubRipSubtitle::from(sub);
16
17    // Now we can access format-specific methods like SubRipSubtitle::renumber()
18    srt.renumber();
19
20    // Access and modify events
21    for event in srt.events_mut() {
22        event.shift(600.into());
23    }
24
25    // Write the modified subtitle to file
26    srt.export("/path/to/output.srt")?;
27
28    Ok(())
29}
Source

fn duration(&self) -> TimeDelta

Get duration of event in milliseconds, as a TimeDelta

Examples found in repository?
examples/modification.rs (line 12)
3fn main() -> Result<(), Error> {
4    let sub = TimedSubtitleFile::new("/path/to/subtitle.ass")?;
5    let mut ass = AssSubtitle::from(sub);
6
7    println!("{}", ass.script_info());
8
9    for event in ass.events_mut() {
10        event.style = Some("Karaoke".to_string());
11
12        if event.duration() > TimeDelta::from(500) {
13            event.shift(2000.into());
14        }
15    }
16
17    ass.export("/path/to/output.ass")
18}

Implementors§