Safe Haskell | None |
---|---|
Language | Haskell2010 |
Colours without an alpha component
- type Color = RGB Float
- data RGB a = RGB a a a
- makeColor :: Exp Float -> Exp Float -> Exp Float -> Exp Color
- makeColor8 :: Exp Word8 -> Exp Word8 -> Exp Word8 -> Exp Color
- rawColor :: Exp Float -> Exp Float -> Exp Float -> Exp Color
- rgbOfColor :: Exp Color -> (Exp Float, Exp Float, Exp Float)
- packRGBA :: Exp Color -> Exp Word32
- packABGR :: Exp Color -> Exp Word32
- clampColor :: Exp Color -> Exp Color
- mixColors :: Exp Float -> Exp Float -> Exp Color -> Exp Color -> Exp Color
- addColors :: Exp Color -> Exp Color -> Exp Color
- dim :: Exp Color -> Exp Color
- brighten :: Exp Color -> Exp Color
- lighten :: Exp Color -> Exp Color
- darken :: Exp Color -> Exp Color
- greyN :: Exp Float -> Exp Color
- black :: Exp Color
- white :: Exp Color
- red :: Exp Color
- green :: Exp Color
- blue :: Exp Color
- yellow :: Exp Color
- cyan :: Exp Color
- magenta :: Exp Color
- rose :: Exp Color
- violet :: Exp Color
- azure :: Exp Color
- aquamarine :: Exp Color
- chartreuse :: Exp Color
- orange :: Exp Color
Color data type
An abstract color value.
We keep the type abstract so we can be sure that the components are in the
required range. To make a custom color use makeColor
.
Same as RGBA
, but colours don't
have an alpha component. All components like in the range [0..1).
We need to parameterise by a type so that we can have both Exp (RGB a) and RGB (Exp a).
RGB a a a |
Elt a => Unlift Exp (RGB (Exp a)) | |
(Lift Exp a, Elt (Plain a)) => Lift Exp (RGB a) | |
Eq a => Eq (RGB a) | |
(Elt a, IsNum a) => Num (Exp (RGB a)) | |
Num a => Num (RGB a) | |
Show a => Show (RGB a) | |
Elt a => Elt (RGB a) | |
IsTuple (RGB a) | |
Typeable (* -> *) RGB | |
type Plain (RGB a) = RGB (Plain a) | |
type EltRepr (RGB a) = EltRepr (a, a, a) | |
type EltRepr' (RGB a) = EltRepr (a, a, a) | |
type TupleRepr (RGB a) = ((((), a), a), a) |
Make a custom color. All components are clamped to the range [0..1].
Make a custom color from 8-bit values.
rawColor :: Exp Float -> Exp Float -> Exp Float -> Exp Color Source
Make a custom color. You promise that all components are clamped to the range [0..1]
rgbOfColor :: Exp Color -> (Exp Float, Exp Float, Exp Float) Source
Take the RGB components of a color.
packABGR :: Exp Color -> Exp Word32 Source
Convert a colour into a packed BGRA value.
This is necessary as OpenGL reads pixel data as ABGR, rather than RGBA.
clampColor :: Exp Color -> Exp Color Source
Clamp components of a color into the required range.
Color functions
:: Exp Float | Ratio of first color. |
-> Exp Float | Ratio of second color. |
-> Exp Color | First color. |
-> Exp Color | Second color. |
-> Exp Color | Resulting color. |
Mix two colors with the given ratios.
addColors :: Exp Color -> Exp Color -> Exp Color Source
Add RGB components of a color component-wise, then normalise them to the highest resulting one. The alpha components are averaged.
Pre-defined colors
A greyness of a given magnitude.
Primary
Secondary
Tertiary
aquamarine :: Exp Color Source
chartreuse :: Exp Color Source