From edac3bab7da437dfffa54c1653087312624f4592 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Tue, 13 Jun 2017 21:52:23 -0400 Subject: [PATCH] gamnit: intro `CustomTexture::fill` MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- lib/gamnit/textures.nit | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lib/gamnit/textures.nit b/lib/gamnit/textures.nit index fabed02..4bc95cb 100644 --- a/lib/gamnit/textures.nit +++ b/lib/gamnit/textures.nit @@ -170,6 +170,29 @@ class CustomTexture for i in [0..4[ do cpixels[offset+i] = bytes[i] end + # Overwrite all pixels with `color` + # + # The argument `color` should be an array of up to 4 floats (RGBA). + # If `color` has less than 4 items, the missing items are replaced by 1.0. + # + # Require: `not loaded` + fun fill(color: Array[Float]) + do + assert not loaded else print_error "{class_name}::fill already loaded" + + # Simple conversion from [0.0..1.0] to [0..255] + var bytes = [for c in color do (c*255.0).round.to_i.clamp(0, 255).to_bytes.last] + while bytes.length < 4 do bytes.add 255u8 + + var i = 0 + for x in [0..width.to_i[ do + for y in [0..height.to_i[ do + for j in [0..4[ do cpixels[i+j] = bytes[j] + i += 4 + end + end + end + redef fun load(force) do if loaded then return -- 1.7.9.5