]> git.walde.dev - epaper_display/commitdiff
Add first attempt of renderer
authorDustin Walde <redacted>
Fri, 3 Jan 2025 04:15:50 +0000 (20:15 -0800)
committerDustin Walde <redacted>
Fri, 3 Jan 2025 04:20:53 +0000 (20:20 -0800)
src/renderer.py [new file with mode: 0644]

diff --git a/src/renderer.py b/src/renderer.py
new file mode 100644 (file)
index 0000000..367640c
--- /dev/null
@@ -0,0 +1,29 @@
+from PIL import Image
+
+import display
+
+class Renderer:
+    def __init__(self) -> None:
+        self.width = display.EPD_HEIGHT
+        self.height = display.EPD_WIDTH
+        self.display = display.Display()
+
+    def render(self, image: Image):
+        hsv_image = image.convert("HSV")
+
+        black_image = image.copy()
+        red_image = Image.new('L', (self.width, self.height), 'white')
+
+        for x in range(self.width):
+            for y in range(self.height):
+                h, s, v = hsv_image[x,y]
+                red_hue_val = max(0, 255 - h*6, (h-212)*6)
+                red_val = red_hue_val * s * v / 256 / 256
+                if red_val > 0:
+                    red_image[x, y] = 255 - red_val
+                    black_image[x, y] = (v, v, v)
+
+        black_image.transpose(Image.Transpose.ROTATE_270)
+        red_image.transpose(Image.Transpose.ROTATE_270)
+        self.display.render(black_image, red_image)
+