about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--img.mu35
1 files changed, 32 insertions, 3 deletions
diff --git a/img.mu b/img.mu
index 551ce30a..cf75d962 100644
--- a/img.mu
+++ b/img.mu
@@ -327,14 +327,43 @@ fn render-ppm-image screen: (addr screen), _self: (addr image), xmin: int, ymin:
     {
       compare img-x, *width-a
       break-if->=
+      # r channel
+      var r: int
       {
         var src-a/eax: (addr byte) <- index data, i
         var src/eax: byte <- copy-byte *src-a
-        var src-int/eax: int <- copy src
-        # TODO
+        copy-to r, src
+      }
+      i <- increment
+      # g channel
+      var g: int
+      {
+        var src-a/eax: (addr byte) <- index data, i
+        var src/eax: byte <- copy-byte *src-a
+        copy-to g, src
       }
-      x <- increment
       i <- increment
+      # b channel
+      var b: int
+      {
+        var src-a/eax: (addr byte) <- index data, i
+        var src/eax: byte <- copy-byte *src-a
+        copy-to b, src
+      }
+      i <- increment
+      #
+      var color: int
+      {
+        var h/ecx: int <- copy 0
+        var s/edx: int <- copy 0
+        var l/ebx: int <- copy 0
+        h, s, l <- hsl r, g, b
+        var tmp/eax: int <- nearest-color-euclidean-hsl h, s, l
+        copy-to color, tmp
+      }
+      pixel screen, x, y, color
+      #
+      x <- increment
       img-x <- increment
       loop
     }