limage - internal/nrgba.go
1 package internal
2
3 import "image/color"
4
5 func ColourToNRGBA(c color.Color) color.NRGBA64 {
6 switch c := c.(type) {
7 case color.NRGBA:
8 var d color.NRGBA64
9 d.R = uint16(c.R)
10 d.R |= d.R << 8
11 d.G = uint16(c.G)
12 d.G |= d.G << 8
13 d.B = uint16(c.B)
14 d.B |= d.B << 8
15 d.A = uint16(c.A)
16 d.A |= d.A << 8
17 return d
18 case color.NRGBA64:
19 return c
20 }
21 if n, ok := c.(interface {
22 ToNRGBA() color.NRGBA64
23 }); ok {
24 return n.ToNRGBA()
25 }
26 return color.NRGBA64Model.Convert(c).(color.NRGBA64)
27 }
28