Copyright | [2016] Trevor L. McDonell |
---|---|
License | BSD3 |
Maintainer | Trevor L. McDonell <tmcdonell@cse.unsw.edu.au> |
Stability | experimental |
Portability | non-portable (GHC extensions) |
Safe Haskell | None |
Language | Haskell2010 |
RGB triples for an unspecified colour space
- type Colour = RGB Float
- data RGB a = RGB a a a
- rgb :: Exp Float -> Exp Float -> Exp Float -> Exp Colour
- rgb8 :: Exp Word8 -> Exp Word8 -> Exp Word8 -> Exp Colour
- clamp :: Exp Colour -> Exp Colour
- blend :: Exp Float -> Exp Float -> Exp Colour -> Exp Colour -> Exp Colour
- luminance :: Exp Colour -> Exp Float
- packRGB :: Exp Colour -> Exp Word32
- packBGR :: Exp Colour -> Exp Word32
- unpackRGB :: Exp Word32 -> Exp Colour
- unpackBGR :: Exp Word32 -> Exp Colour
- packRGB8 :: Exp (RGB Word8) -> Exp Word32
- packBGR8 :: Exp (RGB Word8) -> Exp Word32
- unpackRGB8 :: Exp Word32 -> Exp (RGB Word8)
- unpackBGR8 :: Exp Word32 -> Exp (RGB Word8)
Documentation
RGB a a a |
Functor RGB Source # | |
Elt a => IsProduct Elt (RGB a) Source # | |
(Lift Exp a, Elt (Plain a)) => Lift Exp (RGB a) Source # | |
Elt a => Unlift Exp (RGB (Exp a)) Source # | |
Eq a => Eq (RGB a) Source # | |
Fractional a => Fractional (Exp (RGB a)) Source # | |
(Num a, Fractional a) => Fractional (RGB a) Source # | |
Num a => Num (Exp (RGB a)) Source # | |
Num a => Num (RGB a) Source # | |
Show a => Show (RGB a) Source # | |
Elt a => Elt (RGB a) Source # | |
NamedColour (RGB Float) Source # | |
NamedColour (RGB Word8) Source # | |
type EltRepr (RGB a) Source # | |
type ProdRepr (RGB a) Source # | |
type Plain (RGB a) Source # | |
Construct an RGB colour from individual channel components. The components will be clamped to the range [0..1].
Construct a colour from 8-bit-per-channel colour components.
:: Exp Float | Proportion of first colour |
-> Exp Float | Proportion of second colour |
-> Exp Colour | First colour |
-> Exp Colour | Second colour |
-> Exp Colour | Resulting colour |
Blend two colours in the given proportions.
Note that this uses an approximation of gamma=2 (i.e. sum-of-squares method). It is recommended to instead convert to the sRGB colour space if you want more accurate colour blending, or if you intend to use the gamma-corrected values more than once (e.g. in a stencil).
blend c1 c2 ~= SRGB.toRGB ( (SRGB.fromRGB c1 + SRGB.fromRGB c2) / 2 )
See the Blur program in the examples for a comparison of mixing colours in the RGB and sRGB colour spaces.
luminance :: Exp Colour -> Exp Float Source #
Luminance of an RGB colour (Y component of a YUV colour).
unpackRGB :: Exp Word32 -> Exp Colour Source #
Convert a colour from a packed-word RGBA representation