From f2f67493b131d5417a3eea2afb4947b8b255ab66 Mon Sep 17 00:00:00 2001 From: "alexei.dolgolyov" Date: Wed, 25 Feb 2026 00:50:33 +0300 Subject: [PATCH] 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 --- .../core/capture/screen_overlay.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/server/src/wled_controller/core/capture/screen_overlay.py b/server/src/wled_controller/core/capture/screen_overlay.py index a36f79f..989ef56 100644 --- a/server/src/wled_controller/core/capture/screen_overlay.py +++ b/server/src/wled_controller/core/capture/screen_overlay.py @@ -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)