Add Premultiply and Unpremultiply functions
This commit is contained in:
parent
6e5e9faa72
commit
9dd35c1dff
@ -18,3 +18,21 @@ func ToRGBA (c color.Color) color.RGBA {
|
|||||||
uint8(a >> 8),
|
uint8(a >> 8),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Premultiply applies alpha-premultiplication that colors must apply as per
|
||||||
|
// color.Color.RGBA. This is an intrinsically lossy proccess.
|
||||||
|
func Premultiply (ur, ug, ub, ua uint32) (r, g, b, a uint32) {
|
||||||
|
return (ur * a) / 0xFFFF,
|
||||||
|
(ug * a) / 0xFFFF,
|
||||||
|
(ub * a) / 0xFFFF,
|
||||||
|
ua
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unpremultiply reverses alpha-premultiplication that colors must apply as per
|
||||||
|
// color.Color.RGBA. This may or may not return the precise original color.
|
||||||
|
func Unpremultiply (r, g, b, a uint32) (ur, ug, ub, ua uint32) {
|
||||||
|
return (r / a) * 0xFFFF,
|
||||||
|
(g / a) * 0xFFFF,
|
||||||
|
(b / a) * 0xFFFF,
|
||||||
|
a
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user