fixed hardcoded half-height to match any image height

This commit is contained in:
ao kami 2025-07-14 21:10:11 +02:00
parent a1b69e13bd
commit 34ce9bdc59

View file

@ -68,10 +68,10 @@ impl Waveform {
}
// Set function scoped last rows
if previous_left_row.0 != self.rgba.height as usize && previous_left_row.1 != 0 {
last_rows.0 = if (previous_left_row.0 as f32 - 128f32).abs() < (previous_left_row.1 as f32 - 128f32).abs() {previous_left_row.0} else {previous_left_row.1};
last_rows.0 = if (previous_left_row.0 as f32 - (self.rgba.height/2) as f32).abs() < (previous_left_row.1 as f32 - (self.rgba.height/2) as f32).abs() {previous_left_row.0} else {previous_left_row.1};
}
if previous_right_row.0 != self.rgba.height as usize && previous_right_row.1 != 0 {
last_rows.1 = if (previous_right_row.0 as f32 - 128f32).abs() < (previous_right_row.1 as f32 - 128f32).abs() {previous_right_row.0} else {previous_right_row.1};
last_rows.1 = if (previous_right_row.0 as f32 - (self.rgba.height/2) as f32).abs() < (previous_right_row.1 as f32 - (self.rgba.height/2) as f32).abs() {previous_right_row.0} else {previous_right_row.1};
}
}
else {
@ -84,7 +84,7 @@ impl Waveform {
// LEFT CHANNEL
let column_values : &[f32] = &left_samples[x*left_column_width..(x+1)*left_column_width];
let column_average : f32 = (column_values.iter().cloned().reduce(|acc, v| acc+v).unwrap_or(0f32) / column_values.len() as f32).clamp(-0.99, 0.99);
let row = (128f32 - (column_average * 128f32)).round() as usize;
let row = ((self.rgba.height/2) as f32 - (column_average * (self.rgba.height/2) as f32)).round() as usize;
// Draw vertical lines from last row
let range : Vec<usize> = if row <= last_rows.0 {(row..=last_rows.0).collect()} else {(last_rows.0..=row).rev().collect()};
@ -98,7 +98,7 @@ impl Waveform {
// RIGHT CHANNEL
let column_values : &[f32] = &right_samples[x*right_column_width..(x+1)*right_column_width];
let column_average : f32 = (column_values.iter().cloned().reduce(|acc, v| acc+v).unwrap_or(0f32) / column_values.len() as f32).clamp(-0.99, 0.99);
let row = (128f32 - (column_average * 128f32)).round() as usize;
let row = ((self.rgba.height/2) as f32 - (column_average * (self.rgba.height/2) as f32)).round() as usize;
// Draw vertical lines from last row
let range : Vec<usize> = if row <= last_rows.1 {(row..=last_rows.1).collect()} else {(last_rows.1..=row).rev().collect()};