rgba() color parsing now uses a float in range 0.0-1.0 for the alpha component
This commit is contained in:
parent
0c528ecc87
commit
364c8706b6
1 changed files with 5 additions and 3 deletions
8
color.go
8
color.go
|
@ -199,14 +199,16 @@ func parseColor(value ...interface{}) (c color.RGBA, ok bool) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
v = strings.Replace(v, " ", "", -1)
|
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)
|
n, err := fmt.Sscanf(v, "rgb(%d,%d,%d)", &ir, &ig, &ib)
|
||||||
if err == nil && n == 3 {
|
if err == nil && n == 3 {
|
||||||
return color.RGBA{R: uint8(ir), G: uint8(ig), B: uint8(ib), A: 255}, true
|
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 {
|
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue