From 23586eae01b5ff3b187bd3786fe5c55f87f8c001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Thu, 23 Aug 2018 04:19:28 +0200 Subject: [PATCH] xgb-render: give up on composite alpha --- prototypes/xgb-xrender.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/prototypes/xgb-xrender.go b/prototypes/xgb-xrender.go index dba6687..ea20624 100644 --- a/prototypes/xgb-xrender.go +++ b/prototypes/xgb-xrender.go @@ -234,13 +234,10 @@ func main() { bounds := f.Bounds(fixed.Int26_6(opts.Size * float64(opts.DPI) * (64.0 / 72.0))) - var rgbFormat render.Pictformat + var alphaFormat render.Pictformat for _, pf := range pformats.Formats { - // Hopefully. Might want to check ARGB/BGRA. - if pf.Depth == 32 && pf.Direct.AlphaMask != 0 { - rgbFormat = pf.Id - log.Printf("%+v\n", pf) - break + if pf.Depth == 8 && pf.Direct.AlphaMask == 0xff { + alphaFormat = pf.Id } } @@ -250,11 +247,12 @@ func main() { } // NOTE: A depth of 24 will not work, the server always rejects it. - _ = render.CreateGlyphSet(X, gsid, rgbFormat) + // Composite alpha doesn't make sense since golang/freetype can't use it. + _ = render.CreateGlyphSet(X, gsid, alphaFormat) - // TODO: Seems like we want to use NRGBA. Or RGBA if the A is always 1. - // Or implement our own image.Image for direct gamma-corrected RGB! - nrgb := image.NewRGBA(image.Rect( + // NOTE: We could do gamma post-correction in higher precision if we + // implemented our own clone of the image.Image implementation. + nrgb := image.NewGray(image.Rect( +bounds.Min.X.Floor(), -bounds.Min.Y.Floor(), +bounds.Max.X.Ceil(),