Stability | stable |
---|---|
Maintainer | Parnell Springmeyer <parnell@ixmat.us> |
Safe Haskell | Safe-Inferred |
Color
provides functions for blending colors,
convenience blending (tint
and shade
), and adjusting the hue
,
lightness
, or chroma
of a given color.
These functions require your color to be represented in CIE
L*Ch
. The reason for this is because the L*CH
color space
represents colors closest to how the human eye sees them. Blending
and transforming a color in L*Ch
maintains the brightness of the
colors more accurately. Here is a link to a blog post by someone
detailing the differences and documenting them well:
Improved Color Blending.
NOTE: the transformations between color spaces are intensive, if
you have a HEX or RGB color it first needs to be transformed to the
CIEXYZ
color space, then the CIELAB
space, and finally to
CIELCH
.
I may at some point try to generalize the function's types but I
wanted to first support CIELCH
as the transformation format.
- interpolate :: Percent -> (CIELCH Double, CIELCH Double) -> CIELCH Double
- (<|>) :: CIELCH Double -> CIELCH Double -> CIELCH Double
- shade :: CIELCH Double -> Percent -> CIELCH Double
- tint :: CIELCH Double -> Percent -> CIELCH Double
- lightness :: CIELCH Double -> Percent -> CIELCH Double
- chroma :: CIELCH Double -> Percent -> CIELCH Double
- hue :: CIELCH Double -> Percent -> CIELCH Double
- module Data.Prizm.Types
Blending
interpolate :: Percent -> (CIELCH Double, CIELCH Double) -> CIELCH DoubleSource
Interpolate two colors with a weight.
Weight is applied left to right, so if a weight of 25% is supplied, then the color on the left will be multiplied by 25% and the second color will be multiplied by 75%.
CIE L*Ch
is used because the interpolation between the colors is
more accurate than CIELAB
, CIEXYZ
, and SRGB
color spaces.
(<|>) :: CIELCH Double -> CIELCH Double -> CIELCH DoubleSource
Blend two colors using an interpolation value of 50%.
shade :: CIELCH Double -> Percent -> CIELCH DoubleSource
Shade a color by blending it using a weight and the color black.
tint :: CIELCH Double -> Percent -> CIELCH DoubleSource
Tint a color by blending it using a weight and the color white.
Lightness, hue, and chroma
lightness :: CIELCH Double -> Percent -> CIELCH DoubleSource
Adjust the lightness / darkness of a color.
chroma :: CIELCH Double -> Percent -> CIELCH DoubleSource
Adjust the saturation/chroma of a color.
A maximum chroma value of 120 is assumed here, anything more is generally considered out of gamut.
Types
module Data.Prizm.Types