use crate::models::{LineInfo, SyllableInfo, SyllableItem};
pub fn add_offset(lines: &mut [LineInfo], offset: i32) {
for line in lines {
add_offset_to_line(line, offset);
}
}
fn add_offset_to_line(line: &mut LineInfo, offset: i32) {
let (start_time, end_time) = line.line_times_mut();
for time in [start_time, end_time].into_iter().flatten() {
*time -= offset;
}
if let Some(syllables) = line.syllables_mut() {
add_offset_to_syllable_items(syllables, offset);
}
if let Some(sub) = line.sub_line_mut() {
add_offset_to_line(sub, offset);
}
}
pub fn add_offset_to_syllable_items(syllables: &mut [SyllableItem], offset: i32) {
for syllable in syllables {
add_offset_to_syllables(syllable.parts_mut(), offset);
}
}
pub fn add_offset_to_syllables(syllables: &mut [SyllableInfo], offset: i32) {
for syllable in syllables {
syllable.start_time -= offset;
syllable.end_time -= offset;
}
}