Safe Haskell | Safe |
---|---|
Language | Haskell98 |
Data.Colour.RGBSpace
Description
An RGBSpace
is characterized by Chromaticity
for red, green, and blue, the Chromaticity
of the white point, and it's TransferFunction
.
Synopsis
- data Colour a
- data RGB a = RGB {
- channelRed :: !a
- channelGreen :: !a
- channelBlue :: !a
- uncurryRGB :: (a -> a -> a -> b) -> RGB a -> b
- curryRGB :: (RGB a -> b) -> a -> a -> a -> b
- data RGBGamut
- mkRGBGamut :: RGB (Chromaticity Rational) -> Chromaticity Rational -> RGBGamut
- primaries :: RGBGamut -> RGB (Chromaticity Rational)
- whitePoint :: RGBGamut -> Chromaticity Rational
- inGamut :: (Ord a, Fractional a) => RGBGamut -> Colour a -> Bool
- data TransferFunction a = TransferFunction {
- transfer :: a -> a
- transferInverse :: a -> a
- transferGamma :: a
- linearTransferFunction :: Num a => TransferFunction a
- powerTransferFunction :: Floating a => a -> TransferFunction a
- inverseTransferFunction :: Fractional a => TransferFunction a -> TransferFunction a
- data RGBSpace a
- mkRGBSpace :: RGBGamut -> TransferFunction a -> RGBSpace a
- gamut :: RGBSpace a -> RGBGamut
- transferFunction :: RGBSpace a -> TransferFunction a
- linearRGBSpace :: Num a => RGBGamut -> RGBSpace a
- rgbUsingSpace :: Fractional a => RGBSpace a -> a -> a -> a -> Colour a
- toRGBUsingSpace :: Fractional a => RGBSpace a -> Colour a -> RGB a
Documentation
This type represents the human preception of colour. The a
parameter is a numeric type used internally for the representation.
The Monoid
instance allows one to add colours, but beware that adding colours can take you out of gamut. Consider using blend
whenever possible.
Instances
ColourOps Colour Source # | |
AffineSpace Colour Source # | |
Defined in Data.Colour.Internal | |
Eq a => Eq (Colour a) Source # | |
(Fractional a, Read a) => Read (Colour a) Source # | |
(Fractional a, Show a) => Show (Colour a) Source # | |
Num a => Semigroup (Colour a) Source # | |
Num a => Monoid (Colour a) Source # | |
RGB Tuple
An RGB triple for an unspecified colour space.
Constructors
RGB | |
Fields
|
uncurryRGB :: (a -> a -> a -> b) -> RGB a -> b Source #
Uncurries a function expecting three r, g, b parameters.
curryRGB :: (RGB a -> b) -> a -> a -> a -> b Source #
Curries a function expecting one RGB parameter.
RGB Gamut
An RGBGamut
is a 3-D colour “cube” that contains all the colours that can be displayed by a RGB device. The “cube” is normalized so that white has luminance
1.
Arguments
:: RGB (Chromaticity Rational) | The three primaries |
-> Chromaticity Rational | The white point |
-> RGBGamut |
An RGB gamut is specified by three primary colours (red, green, and blue) and a white point (often d65
).
inGamut :: (Ord a, Fractional a) => RGBGamut -> Colour a -> Bool Source #
Returns True
if the given colour lies inside the given gamut.
RGB Space
data TransferFunction a Source #
A transfer
function is a function that typically translates linear colour space coordinates into non-linear coordinates. The transferInverse
function reverses this by translating non-linear colour space coordinates into linear coordinates. It is required that
transfer . transferInverse === id === transferInverse . inverse
(or that this law holds up to floating point rounding errors).
We also require that transfer
is approximately (**transferGamma)
(and hence transferInverse
is approximately (**(recip transferGamma))
). The value transferGamma
is for informational purposes only, so there is no bound on how good this approximation needs to be.
Constructors
TransferFunction | |
Fields
|
Instances
Num a => Semigroup (TransferFunction a) Source # | |
Defined in Data.Colour.RGBSpace Methods (<>) :: TransferFunction a -> TransferFunction a -> TransferFunction a # sconcat :: NonEmpty (TransferFunction a) -> TransferFunction a # stimes :: Integral b => b -> TransferFunction a -> TransferFunction a # | |
Num a => Monoid (TransferFunction a) Source # | |
Defined in Data.Colour.RGBSpace Methods mempty :: TransferFunction a # mappend :: TransferFunction a -> TransferFunction a -> TransferFunction a # mconcat :: [TransferFunction a] -> TransferFunction a # |
linearTransferFunction :: Num a => TransferFunction a Source #
This is the identity TransferFunction
.
powerTransferFunction :: Floating a => a -> TransferFunction a Source #
This is the (**gamma)
TransferFunction
.
inverseTransferFunction :: Fractional a => TransferFunction a -> TransferFunction a Source #
This reverses a TransferFunction
.
An RGBSpace
is a colour coordinate system for colours laying inGamut
of gamut
. Linear coordinates are passed through a transferFunction
to produce non-linear RGB
values.
mkRGBSpace :: RGBGamut -> TransferFunction a -> RGBSpace a Source #
An RGBSpace is specified by an RGBGamut
and a TransferFunction
.
transferFunction :: RGBSpace a -> TransferFunction a Source #
linearRGBSpace :: Num a => RGBGamut -> RGBSpace a Source #
Produce a linear colour space from an RGBGamut
.
rgbUsingSpace :: Fractional a => RGBSpace a -> a -> a -> a -> Colour a Source #
toRGBUsingSpace :: Fractional a => RGBSpace a -> Colour a -> RGB a Source #