From e65a32b75973efb535bc8e260c37a5ca21cce627 Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak <dos@dosowisko.net> Date: Sun, 12 Nov 2023 21:35:16 +0100 Subject: [PATCH] sim: fakes: Fix LED handling --- sim/fakes/_sim.py | 2 +- sim/fakes/leds.py | 29 +++++++++++------------------ 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/sim/fakes/_sim.py b/sim/fakes/_sim.py index 2ff7d9c1d8..b9ec85d89e 100644 --- a/sim/fakes/_sim.py +++ b/sim/fakes/_sim.py @@ -512,7 +512,7 @@ class Simulation: self._render_oled(self._oled_surface, fb) def set_led_rgb(self, ix, r, g, b): - self.led_state_buf[ix] = (r, g, b) + self.led_state_buf[ix] = (r * 255, g * 255, b * 255) def leds_update(self): for i, s in enumerate(_sim.led_state_buf): diff --git a/sim/fakes/leds.py b/sim/fakes/leds.py index 8f5f837ed6..aaf7e710c3 100644 --- a/sim/fakes/leds.py +++ b/sim/fakes/leds.py @@ -4,13 +4,16 @@ import pygame def set_rgb(ix, r, g, b): - if r > 255: - r = 255 - if g > 255: - g = 255 - if b > 255: - b = 255 - _sim.set_led_rgb(ix, r, g, b) + if r > 1: + r /= 255 + if g > 1: + g /= 255 + if b > 1: + b /= 255 + r = min(1.0, max(0.0, r)) + g = min(1.0, max(0.0, g)) + b = min(1.0, max(0.0, b)) + _sim.set_led_rgb(ix, pow(r, 1 / 2.2), pow(g, 1 / 2.2), pow(b, 1 / 2.2)) def get_rgb(ix): @@ -31,17 +34,7 @@ def set_hsv(ix, h, s, v): h = int(h) h = h % 360 color.hsva = (h, s * 100, v * 100, 1.0) - r, g, b = color.r, color.g, color.b - r *= 255 - if r > 255: - r = 255 - g *= 255 - if g > 255: - g = 255 - b *= 255 - if b > 255: - b = 255 - _sim.set_led_rgb(ix, r, g, b) + set_rgb(ix, color.r / 255, color.g / 255, color.b / 255) def set_slew_rate(b: int): -- GitLab