1
0
mirror of https://github.com/emilk/egui.git synced 2026-06-27 15:13:12 -04:00

Avoid numerical precision issues when considering whether to add line caps

This commit is contained in:
Emil Ernerfeldt
2025-02-04 15:02:21 +01:00
parent 20fd425c49
commit e4e0fc96b4

View File

@@ -1002,7 +1002,11 @@ fn stroke_and_fill_path(
let color_outer = Color32::TRANSPARENT;
let color_middle = &stroke.color;
let thin_line = stroke.width <= feathering;
// We add a bit of an epsilon here, because when we round to pixels,
// we can get rounding errors (unless pixels_per_point is an integer).
// And it's better to err on the side of the nicer rendering with line caps
// (the thin-line optimization has no line caps).
let thin_line = stroke.width <= 0.9 * feathering;
if thin_line {
// If the stroke is painted smaller than the pixel width (=feathering width),
// then we risk severe aliasing.
@@ -1017,6 +1021,8 @@ fn stroke_and_fill_path(
}
}
// TODO(emilk): add line caps (if this is an open line).
let opacity = stroke.width / feathering;
/*