colour-2.3.1: A model for human colour/color perception

Data.Colour.RGBSpace

Contents

Description

An RGBSpace is characterized by Chromaticity for red, green, and blue, the Chromaticity of the white point, and it's TransferFunction.

Synopsis

# Documentation

data Colour a Source

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 AffineSpace Colour Eq a => Eq (Colour a) (Fractional a, Read a) => Read (Colour a) Fractional a => Show (Colour a) Num a => Monoid (Colour a)

# RGB Tuple

data RGB a Source

An RGB triple for an unspecified colour space.

Constructors

 RGB FieldschannelRed :: !a channelGreen :: !a channelBlue :: !a

Instances

 Functor RGB Applicative RGB Eq a => Eq (RGB a) Read a => Read (RGB a) Show a => Show (RGB a)

uncurryRGB :: (a -> a -> a -> b) -> RGB a -> bSource

Uncurries a function expecting three r, g, b parameters.

curryRGB :: (RGB a -> b) -> a -> a -> a -> bSource

Curries a function expecting one RGB parameter.

# RGB Gamut

data RGBGamut Source

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 Data.Colour.CIE.luminance 1.

Instances

 Eq RGBGamut Read RGBGamut Show RGBGamut

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 Data.Colour.CIE.Illuminant.d65).

inGamut :: (Ord a, Fractional a) => RGBGamut -> Colour a -> BoolSource

Returns True if the given colour lies inside the given gamut.

# RGB Space

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 Fieldstransfer :: a -> a transferInverse :: a -> a transferGamma :: a

Instances

 Num a => Monoid (TransferFunction a)

This is the identity TransferFunction.

This is the (**gamma) TransferFunction.

This reverses a TransferFunction.

data RGBSpace a Source

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.

An RGBSpace is specified by an RGBGamut and a TransferFunction.

Produce a linear colour space from an RGBGamut.

rgbUsingSpace :: Fractional a => RGBSpace a -> a -> a -> a -> Colour aSource

Create a Colour from red, green, and blue coordinates given in a general RGBSpace.

toRGBUsingSpace :: Fractional a => RGBSpace a -> Colour a -> RGB aSource

Return the coordinates of a given Colour for a general RGBSpace.