prizm-2.0.0: README.md
# Welcome!


`prizm` is a Haskell library for transforming colors. Specifically, providing
functions for transforming between different color spaces (`CIE` and `sRGB`),
interpolating colors and adjusting the tint, shade, hue, or lightness of a
color.
The inspiration for this library came from a desire to blend two colors
represented in the `sRGB` color space. My research about color blending and
color space representation in the computer led me to the conclusion that the
`CIE L*Ch` color space is the most effective for blending because it most
accurately represents how the human eye sees hue and therefore preserves (and
blends) hue the most accurately.
## Quickstart
```haskell
{-# LANGUAGE ScopedTypeVariables #-}
import Data.Convertible
import Data.Prizm.Color
import Data.Prizm.Color.CIE as CIE
main = do
-- Convert RGB colors to the CIE.LCH color space
let green :: CIE.LCH = convert $ RGB 102 255 0
pink :: CIE.LCH = convert $ RGB 255 0 255
-- Blend with a weight of 50%
blended50 = pink <~> green
-- Blend with a weight of 20%
blended20 = interpolate 20 (pink,green)
-- Print the CIE.LCH representation
putStrLn $ show blended50
-- Print the RGB representation of the blended color
putStrLn . show $ (convert blended20) :: RGB
-- Print the CSS-friendly hexadecimal RGB representation of the blended color
putStrLn . show $ (convert blended20) :: Hex
```
## Supported Algorithms
- `sRGB <-> CIE XYZ `
- `CIE XYZ <-> CIE L*ab`
- `CIE L*ab <-> CIE L*Ch`
## Supported Functions
- Color interpolation
- Tinting / Darkening
- Lightness
- Hue
- Chroma/Saturation
## Examples
[Example blending with CIELCH converted back to RGB](./blending-test.html).
# References
- [General Color Formulas, Data, and Algorithms](http://www.brucelindbloom.com)
- [CIE Conversion Mathematics](http://rip94550.wordpress.com/2011/07/04/color-cielab-and-tristimulus-xyz/)
- [Conversion Algorithm Sources](http://www.easyrgb.com/index.php?X=MATH&H=01)
- [Good list of useful color manipulation formulas](https://github.com/mikeemoo/ColorJizz-PHP/blob/master/src/MischiefCollective/ColorJizz/ColorJizz.php)