From 717da48388a741ba9a69329bd42217edc24fd0eb Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Sat, 22 Oct 2016 11:00:48 -0400 Subject: [PATCH] ecere/gfx/Surface: Fixed PaletteGradient() ignoring alpha --- ecere/src/gfx/Surface.ec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ecere/src/gfx/Surface.ec b/ecere/src/gfx/Surface.ec index ca04ea7..bc13065 100644 --- a/ecere/src/gfx/Surface.ec +++ b/ecere/src/gfx/Surface.ec @@ -43,21 +43,25 @@ public void PaletteGradient(ColorAlpha * palette, int numColors, ColorKey * keys { float scale = ease((percent - key->percent) / (nextKey->percent - key->percent), smoothness, smoothness); + int ca = key->color.a; int cr = key->color.color.r; int cg = key->color.color.g; int cb = key->color.color.b; + int na = nextKey->color.color.r; int nr = nextKey->color.color.r; int ng = nextKey->color.color.g; int nb = nextKey->color.color.b; + int a = (int)(ca + (na - ca) * scale); int r = (int)(cr + (nr - cr) * scale); int g = (int)(cg + (ng - cg) * scale); int b = (int)(cb + (nb - cb) * scale); + a = Max(Min(r, 255),0); r = Max(Min(r, 255),0); g = Max(Min(g, 255),0); b = Max(Min(b, 255),0); - newColor = Color { (byte)r, (byte)g, (byte)b }; + newColor = ColorAlpha { (byte)a, { (byte)r, (byte)g, (byte)b } }; } else if(key) newColor = key ? key->color : 0; -- 1.8.3.1