about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2024-10-09 22:54:15 +0200
committerbptato <nincsnevem662@gmail.com>2024-10-09 23:03:15 +0200
commit6a4f818ccb37fb026371a37cc3fb5d6c7c292c56 (patch)
tree25ae06adff29f037fce6d9c4a3f5ec2d4c25025b
parentbb58b0de4f0320fe3043059f8958322e6a402f42 (diff)
downloadchawan-6a4f818ccb37fb026371a37cc3fb5d6c7c292c56.tar.gz
resize: use srgb
since that's our input color space

(Actually, mainstream browsers seem to use linear scaling nevertheless.
But apparently that produces surprising results in some cases, and stbir
can do srgb, so might as well use it.)
-rw-r--r--adapter/img/resize.nim10
-rw-r--r--bonus/stbir2/stbir2.nim4
2 files changed, 7 insertions, 7 deletions
diff --git a/adapter/img/resize.nim b/adapter/img/resize.nim
index bd3b8c9a..74ba2186 100644
--- a/adapter/img/resize.nim
+++ b/adapter/img/resize.nim
@@ -10,10 +10,10 @@ import utils/twtstr
 {.compile("stb_image_resize.c", "-O3").}
 
 {.push header: "stb_image_resize.h".}
-proc stbir_resize_uint8(input_pixels: ptr uint8;
+proc stbir_resize_uint8_srgb(input_pixels: ptr uint8;
   input_w, input_h, input_stride_in_bytes: cint; output_pixels: ptr uint8;
-  output_w, output_h, output_stride_in_bytes, num_channels: cint): cint
-  {.importc.}
+  output_w, output_h, output_stride_in_bytes, num_channels, alpha_channel,
+  flags: cint): cint {.importc.}
 {.pop.}
 
 proc die(s: string) {.noreturn.} =
@@ -51,8 +51,8 @@ proc main() =
     die("Cha-Control: ConnectionError 1 failed to open i/o\n")
   dst.p[0] = uint8('\n') # for CGI
   enterNetworkSandbox()
-  doAssert stbir_resize_uint8(addr src.p[0], srcWidth, srcHeight, 0,
-    addr dst.p[1], dstWidth, dstHeight, 0, 4) == 1
+  doAssert stbir_resize_uint8_srgb(addr src.p[0], srcWidth, srcHeight, 0,
+    addr dst.p[1], dstWidth, dstHeight, 0, 4, 3, 0) != 0
   os.sendDataLoop(dst)
   deallocMem(src)
   deallocMem(dst)
diff --git a/bonus/stbir2/stbir2.nim b/bonus/stbir2/stbir2.nim
index 8de0f92b..8b143a97 100644
--- a/bonus/stbir2/stbir2.nim
+++ b/bonus/stbir2/stbir2.nim
@@ -10,7 +10,7 @@ import utils/twtstr
 {.compile("stb_image_resize2.c", "-O3").}
 
 {.push header: "stb_image_resize2.h".}
-proc stbir_resize_uint8_linear(input_pixels: ptr uint8;
+proc stbir_resize_uint8_srgb(input_pixels: ptr uint8;
   input_w, input_h, input_stride_in_bytes: cint; output_pixels: ptr uint8;
   output_w, output_h, output_stride_in_bytes, num_channels: cint): ptr char
   {.importc.}
@@ -51,7 +51,7 @@ proc main() =
     die("Cha-Control: ConnectionError 1 failed to open i/o\n")
   dst.p[0] = uint8('\n') # for CGI
   enterNetworkSandbox()
-  doAssert stbir_resize_uint8_linear(addr src.p[0], srcWidth, srcHeight,
+  doAssert stbir_resize_uint8_srgb(addr src.p[0], srcWidth, srcHeight,
     0, addr dst.p[1], dstWidth, dstHeight, 0, 4) != nil
   os.sendDataLoop(dst)
   deallocMem(src)