Safe Haskell | Safe-Inferred |
---|
This module provides Colour8
, which stores linear RGB (red,
green, blue) colour values where each channel is a Word8
. It also
provides arithmetic over such colours, and a few predefined
colours.
It is the general intention that "most" work will be done with
Data.Colour.Double, with values converted to Colour8
only as a
final step. However, full arithmetic is supported anyway, in case
anybody wants to work that way. It is slightly less efficient and
flexible, however.
Beware that "most" RGB data found in external sources is in the (non-linear) sRGB colour space, not the linear RGB colour space used here. See Data.Colour.Nonlinear for conversion functions.
- data Colour8 = Colour8 {}
- c8map :: (Word8 -> Word8) -> Colour8 -> Colour8
- c8zip :: (Word8 -> Word8 -> Word8) -> Colour8 -> Colour8 -> Colour8
- c8fold :: (Word8 -> Word8 -> Word8) -> Colour8 -> Word8
- grey8 :: Word8 -> Colour8
- c8scale :: Word8 -> Colour8 -> Colour8
- unpack8 :: Colour8 -> (Word8, Word8, Word8)
- pack8 :: (Word8, Word8, Word8) -> Colour8
- c8Black :: Colour8
- c8Red :: Colour8
- c8Yellow :: Colour8
- c8Green :: Colour8
- c8Cyan :: Colour8
- c8Blue :: Colour8
- c8Magenta :: Colour8
- c8White :: Colour8
Documentation
The integral colour. It stores three channels (red, green and
blue) as linear Word8
values ranging from 0 to 255. (0 represents
minimum intensity, 255 represents maximum. Black is therefore
Colour8 0 0 0
and white is Colour8 255 255 255
.)
The channel values are stored as strict, unboxed fields, so
operating on Colour8
s should be quite efficient in time and
space.
The Num
and Fractional
instances provide arithmetic for
Colour8
s. Note that (*)
acts channel-wise; this is usually what
is wanted.
c8map :: (Word8 -> Word8) -> Colour8 -> Colour8Source
Apply a function to every channel of a Colour8
. (Mostly used
internally; exposed here in case it might be useful.)
c8zip :: (Word8 -> Word8 -> Word8) -> Colour8 -> Colour8 -> Colour8Source
The colour equivilent of zipWith
. (Mostly used
internally; exposed here in case it might be useful.)
c8fold :: (Word8 -> Word8 -> Word8) -> Colour8 -> Word8Source
Use a function to fold the three values in a Colour8
into
a single value. No particular order of application is promised.