module Utils.Color exposing ( merge , spin ) import Color as Color exposing (Color) merge : Float -> Color -> Color -> Color merge ratio c1 c2 = let rgb1 = Color.toRgb c1 rgb2 = Color.toRgb c2 mergePartFloat x y = ratio * x + (1 - ratio) * y mergePartInt x y = truncate <| ratio * (toFloat x) + (1 - ratio) * (toFloat y) in Color.rgba (mergePartInt rgb1.red rgb2.red) (mergePartInt rgb1.green rgb2.green) (mergePartInt rgb1.blue rgb2.blue) (mergePartFloat rgb1.alpha rgb2.alpha) spin : Float -> Color -> Color spin d color = let { hue, saturation, lightness, alpha } = Color.toHsl color in Color.hsla (hue + degrees d) saturation lightness alpha