package ui import ( "image/color" "math" ) func mixColors(a, b color.Color, percent float64) color.Color { rgba := func(c color.Color) (r, g, b, a uint8) { r16, g16, b16, a16 := c.RGBA() return uint8(r16 >> 8), uint8(g16 >> 8), uint8(b16 >> 8), uint8(a16 >> 8) } lerp := func(x, y uint8) uint8 { return uint8(math.Round(float64(x) + percent*(float64(y)-float64(x)))) } r1, g1, b1, a1 := rgba(a) r2, g2, b2, a2 := rgba(b) return color.RGBA{ R: lerp(r1, r2), G: lerp(g1, g2), B: lerp(b1, b2), A: lerp(a1, a2), } }