From 99bfa6a33cdf6d844ef540aadb851456a3854066 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Sat, 16 Jan 2021 09:58:04 +0100 Subject: [PATCH] internal/f32color: revert incorrect NRGBA to linear color change Egon Elbre convinced me commit 01d5e722917 was incorrect, because in the NRGBA colorspace the alpha value is linear, not gamma adjusted. Updates gio#192 Signed-off-by: Elias Naur --- internal/f32color/rgba.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/internal/f32color/rgba.go b/internal/f32color/rgba.go index 5e24d912..a566a2b7 100644 --- a/internal/f32color/rgba.go +++ b/internal/f32color/rgba.go @@ -28,9 +28,9 @@ func (col RGBA) SRGB() color.NRGBA { return color.NRGBA{} } return color.NRGBA{ - R: uint8(linearTosRGB(col.R)/col.A*255 + .5), - G: uint8(linearTosRGB(col.G)/col.A*255 + .5), - B: uint8(linearTosRGB(col.B)/col.A*255 + .5), + R: uint8(linearTosRGB(col.R/col.A)*255 + .5), + G: uint8(linearTosRGB(col.G/col.A)*255 + .5), + B: uint8(linearTosRGB(col.B/col.A)*255 + .5), A: uint8(col.A*255 + .5), } } @@ -53,9 +53,9 @@ func (col RGBA) Opaque() RGBA { func LinearFromSRGB(col color.NRGBA) RGBA { af := float32(col.A) / 0xFF return RGBA{ - R: sRGBToLinear(float32(col.R) / 0xff * af), - G: sRGBToLinear(float32(col.G) / 0xff * af), - B: sRGBToLinear(float32(col.B) / 0xff * af), + R: sRGBToLinear(float32(col.R)/0xff) * af, + G: sRGBToLinear(float32(col.G)/0xff) * af, + B: sRGBToLinear(float32(col.B)/0xff) * af, A: af, } }