package models import "github.com/lucasb-eyer/go-colorful" type ColorRGB struct { Red float64 `json:"red"` Green float64 `json:"green"` Blue float64 `json:"blue"` } func (rgb ColorRGB) AtIntensity(intensity float64) ColorRGB { hue, sat, _ := colorful.Color{R: rgb.Red, G: rgb.Green, B: rgb.Blue}.Hsv() hsv2 := colorful.Hsv(hue, sat, intensity) return ColorRGB{Red: hsv2.R, Green: hsv2.G, Blue: hsv2.B} } func (rgb ColorRGB) ToHS() ColorHS { hue, sat, _ := colorful.Color{R: rgb.Red, G: rgb.Green, B: rgb.Blue}.Hsv() return ColorHS{Hue: hue, Sat: sat} } func (rgb ColorRGB) ToXY() ColorXY { x, y, z := (colorful.Color{R: rgb.Red, G: rgb.Green, B: rgb.Blue}).Xyz() return ColorXY{ X: x / (x + y + z), Y: y / (x + y + z), } }