Auto-Trace: test that traced outlines map back into layer space (#2764)

Co-authored-by: Chewybone-sudo <347238078+Chewybone-sudo@users.noreply.github.com>
This commit is contained in:
tylerjenningsw
2026-11-01 09:02:42 -05:00
co-authored by Chewybone-sudo
parent e71dd629c5
commit 49774ca5f9
+30
View File
@@ -211,3 +211,33 @@ pub fn specs() -> Vec<CommandSpec> {
run
)]
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn trace_frame_converts_image_pixels_back_to_layer_space() {
// A synthetic cropped source avoids any dependency on installed fonts.
let mut img = Image::new(32, 32);
for y in 8..24 {
for x in 8..24 {
img.set(x, y, [1.0; 4]);
}
}
let opts = TraceOpts { corner_roundness: 0.0, ..Default::default() };
for offset in [[0.0, 0.0], [2.0, 58.0], [-12.5, 7.25]] {
let outlines = trace_frame(&img, offset, Channel::Alpha, false, 0.0, &opts);
assert_eq!(outlines.len(), 1);
let vertices = &outlines[0].path.vertices;
for axis in 0..2 {
// image = layer + offset, so the known image bounds map back
// to [8 - offset, 24 - offset] in layer space.
let lo = vertices.iter().map(|v| v[axis]).fold(f64::INFINITY, f64::min);
let hi = vertices.iter().map(|v| v[axis]).fold(f64::NEG_INFINITY, f64::max);
assert!((lo - (8.0 - offset[axis])).abs() < 0.01, "{offset:?}: {lo}");
assert!((hi - (24.0 - offset[axis])).abs() < 0.01, "{offset:?}: {hi}");
}
}
}
}