From 364c8706b6c965c4f4bc07f9e5acb9143f2e254b Mon Sep 17 00:00:00 2001 From: Thomas Friedel Date: Tue, 1 Dec 2020 16:17:29 +0100 Subject: [PATCH] rgba() color parsing now uses a float in range 0.0-1.0 for the alpha component --- color.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/color.go b/color.go index 91eba8c..9cbb615 100644 --- a/color.go +++ b/color.go @@ -199,14 +199,16 @@ func parseColor(value ...interface{}) (c color.RGBA, ok bool) { } } else { v = strings.Replace(v, " ", "", -1) - var ir, ig, ib, ia int + var ir, ig, ib int n, err := fmt.Sscanf(v, "rgb(%d,%d,%d)", &ir, &ig, &ib) if err == nil && n == 3 { return color.RGBA{R: uint8(ir), G: uint8(ig), B: uint8(ib), A: 255}, true } - n, err = fmt.Sscanf(v, "rgba(%d,%d,%d,%d)", &ir, &ig, &ib, &ia) + var fa float64 + n, err = fmt.Sscanf(v, "rgba(%d,%d,%d,%f)", &ir, &ig, &ib, &fa) + fa = math.Max(0, math.Min(1, fa)) if err == nil && n == 4 { - return color.RGBA{R: uint8(ir), G: uint8(ig), B: uint8(ib), A: uint8(ia)}, true + return color.RGBA{R: uint8(ir), G: uint8(ig), B: uint8(ib), A: uint8(fa * 255)}, true } } }