func (c HSL) RGBA() (uint32, uint32, uint32, uint32) {
	r, g, b := hslToRGB(c.H, c.S, c.L)
	return color.NRGBA{r, g, b, c.A}.RGBA()
}
RGBA implements the color.Color interface.
package vibrant
import (
	"fmt"
	"image/color"
	"math"
	"strconv"
	"strings"
)
type RGBAInt uint32
func (c RGBAInt) RGBA() (uint32, uint32, uint32, uint32) {
	alphaComponent := uint32(c) >> 24
	r := (uint32(c) >> 16) & 0xFF
	r |= r << 8
	r *= alphaComponent
	r /= 0xFF
	g := (uint32(c) >> 8) & 0xFF
	g |= g << 8
	g *= alphaComponent
	g /= 0xFF
	b := uint32(c) & 0xFF
	b |= b << 8
	b *= alphaComponent
	b /= 0xFF
	a := alphaComponent
	a |= a << 8
	return r, g, b, a
}
func (c RGBAInt) PackedRGBA() uint32 {
	return uint32(c)
}
func (c RGBAInt) PackedRGB() uint32 {
	return c.PackedRGBA() | (uint32(0xFF) << 24)
}
func (c RGBAInt) String() string {
	return fmt.Sprintf("0x%06s", strings.ToUpper(strconv.FormatUint(uint64(c.PackedRGBA()), 16)))
}
var RGBAIntModel = color.ModelFunc(func(c color.Color) color.Color {
	if _, ok := c.(RGBAInt); ok {
		return c
	}
	nrgba := color.NRGBAModel.Convert(c).(color.NRGBA)
	return RGBAInt((uint32(nrgba.A) << 24) | (uint32(nrgba.R) << 16) | (uint32(nrgba.G) << 8) | uint32(nrgba.B))
})
type HSL struct {
	H, S, L float64
	A       uint8
}