Fix LED overlay tick positions and reverse handling

Use i/(count-1) fraction (matching calibration dialog) so LEDs span
the full edge, and apply seg.reverse flag for correct numbering.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-25 00:50:33 +03:00
parent 04ee2e5830
commit f2f67493b1

View File

@@ -142,7 +142,9 @@ class OverlayWindow:
for i in range(count):
display_idx = (led_index + self.calibration.offset) % total_leds
if i == 0 or i == count - 1 or display_idx % tick_interval == 0:
frac = i / count if count > 1 else 0.5
frac = i / (count - 1) if count > 1 else 0.5
if seg.reverse:
frac = 1.0 - frac
x = start_px + frac * (end_px - start_px)
tick_len = 15 if display_idx % tick_interval == 0 else 10
self._canvas.create_line(x, y_axis - tick_len, x, y_axis + tick_len, fill="white", width=2)
@@ -160,7 +162,9 @@ class OverlayWindow:
for i in range(count):
display_idx = (led_index + self.calibration.offset) % total_leds
if i == 0 or i == count - 1 or display_idx % tick_interval == 0:
frac = i / count if count > 1 else 0.5
frac = i / (count - 1) if count > 1 else 0.5
if seg.reverse:
frac = 1.0 - frac
x = start_px + frac * (end_px - start_px)
tick_len = 15 if display_idx % tick_interval == 0 else 10
self._canvas.create_line(x, y_axis - tick_len, x, y_axis + tick_len, fill="white", width=2)
@@ -178,7 +182,9 @@ class OverlayWindow:
for i in range(count):
display_idx = (led_index + self.calibration.offset) % total_leds
if i == 0 or i == count - 1 or display_idx % tick_interval == 0:
frac = i / count if count > 1 else 0.5
frac = i / (count - 1) if count > 1 else 0.5
if seg.reverse:
frac = 1.0 - frac
y = start_px + frac * (end_px - start_px)
tick_len = 15 if display_idx % tick_interval == 0 else 10
self._canvas.create_line(x_axis - tick_len, y, x_axis + tick_len, y, fill="white", width=2)
@@ -196,7 +202,9 @@ class OverlayWindow:
for i in range(count):
display_idx = (led_index + self.calibration.offset) % total_leds
if i == 0 or i == count - 1 or display_idx % tick_interval == 0:
frac = i / count if count > 1 else 0.5
frac = i / (count - 1) if count > 1 else 0.5
if seg.reverse:
frac = 1.0 - frac
y = start_px + frac * (end_px - start_px)
tick_len = 15 if display_idx % tick_interval == 0 else 10
self._canvas.create_line(x_axis - tick_len, y, x_axis + tick_len, y, fill="white", width=2)