From b9e5187c1bbf267f0ec4fc899ce926cb2167247f Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Mon, 11 Sep 2023 17:41:43 -0400 Subject: WIP: Images starting to work --- virtual-programs/images.folk | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'virtual-programs') diff --git a/virtual-programs/images.folk b/virtual-programs/images.folk index e9807b85..8af24aee 100644 --- a/virtual-programs/images.folk +++ b/virtual-programs/images.folk @@ -160,6 +160,27 @@ namespace eval ::image { // TODO: Free the JPEG. // ckfree(im.data); } + $cc proc rechannel {image_t im int components} image_t { + if (im.components == components) return im; + if (components != 4 || im.components != 3) exit(2); + + image_t ret = im; + ret.components = components; + ret.bytesPerRow = ret.width * ret.components; + ret.data = folkHeapAlloc(ret.bytesPerRow * ret.height); + + for(int i = 0; i < ret.width*ret.height; i++) { + int r = im.data[i*im.components+0], + g = im.data[i*im.components+1], + b = im.data[i*im.components+2]; + + ret.data[i*ret.components+0] = r; + ret.data[i*ret.components+1] = g; + ret.data[i*ret.components+2] = b; + ret.data[i*ret.components+3] = 255; + } + return ret; + } $cc compile variable imagesCache [dict create] -- cgit v1.2.3