yampa-sdl2-0.1.0.2: Yampa and SDL2 made easy

Safe HaskellSafe
LanguageHaskell2010

Data.Colour.Internal

Synopsis

Documentation

data Red Source #

Constructors

Red 

data Green Source #

Constructors

Green 

data Blue Source #

Constructors

Blue 

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.

Constructors

RGB !(Chan Red a) !(Chan Green a) !(Chan Blue a) 

Instances

ColourOps Colour Source # 

Methods

over :: Num a => AlphaColour a -> Colour a -> Colour a Source #

darken :: Num a => a -> Colour a -> Colour a Source #

AffineSpace Colour Source # 

Methods

affineCombo :: Num a => [(a, Colour a)] -> Colour a -> Colour a Source #

Eq a => Eq (Colour a) Source # 

Methods

(==) :: Colour a -> Colour a -> Bool #

(/=) :: Colour a -> Colour a -> Bool #

Num a => Semigroup (Colour a) Source # 

Methods

(<>) :: Colour a -> Colour a -> Colour a #

sconcat :: NonEmpty (Colour a) -> Colour a #

stimes :: Integral b => b -> Colour a -> Colour a #

Num a => Monoid (Colour a) Source # 

Methods

mempty :: Colour a #

mappend :: Colour a -> Colour a -> Colour a #

mconcat :: [Colour a] -> Colour a #

colourConvert :: (Fractional b, Real a) => Colour a -> Colour b Source #

Change the type used to represent the colour coordinates.

black :: Num a => Colour a Source #

data Alpha Source #

Constructors

Alpha 

data AlphaColour a Source #

This type represents a Colour that may be semi-transparent.

The Monoid instance allows you to composite colours.

x `mappend` y == x `over` y

To get the (pre-multiplied) colour channel of an AlphaColour c, simply composite c over black.

c `over` black

Constructors

RGBA !(Colour a) !(Chan Alpha a) 

transparent :: Num a => AlphaColour a Source #

This AlphaColour is entirely transparent and has no associated colour channel.

alphaColourConvert :: (Fractional b, Real a) => AlphaColour a -> AlphaColour b Source #

Change the type used to represent the colour coordinates.

opaque :: Num a => Colour a -> AlphaColour a Source #

Creates an opaque AlphaColour from a Colour.

dissolve :: Num a => a -> AlphaColour a -> AlphaColour a Source #

Returns an AlphaColour more transparent by a factor of o.

withOpacity :: Num a => Colour a -> a -> AlphaColour a Source #

Creates an AlphaColour from a Colour with a given opacity.

c `withOpacity` o == dissolve o (opaque c) 

class AffineSpace f where Source #

Minimal complete definition

affineCombo

Methods

affineCombo :: Num a => [(a, f a)] -> f a -> f a Source #

Compute a affine Combination (weighted-average) of points. The last parameter will get the remaining weight. e.g.

affineCombo [(0.2,a), (0.3,b)] c == 0.2*a + 0.3*b + 0.5*c

Weights can be negative, or greater than 1.0; however, be aware that non-convex combinations may lead to out of gamut colours.

Instances

blend :: (Num a, AffineSpace f) => a -> f a -> f a -> f a Source #

Compute the weighted average of two points. e.g.

blend 0.4 a b = 0.4*a + 0.6*b

The weight can be negative, or greater than 1.0; however, be aware that non-convex combinations may lead to out of gamut colours.

class ColourOps f where Source #

Minimal complete definition

over, darken

Methods

over :: Num a => AlphaColour a -> f a -> f a Source #

c1 `over` c2 returns the Colour created by compositing the AlphaColour c1 over c2, which may be either a Colour or AlphaColour.

darken :: Num a => a -> f a -> f a Source #

darken s c blends a colour with black without changing it's opacity.

For Colour, darken s c = blend s c mempty

Instances

atop :: Fractional a => AlphaColour a -> AlphaColour a -> AlphaColour a Source #

c1 `atop` c2 returns the AlphaColour produced by covering the portion of c2 visible by c1. The resulting alpha channel is always the same as the alpha channel of c2.

c1 `atop` (opaque c2) == c1 `over` (opaque c2)
AlphaChannel (c1 `atop` c2) == AlphaChannel c2

quantize :: (RealFrac a1, Integral a, Bounded a) => a1 -> a Source #

rounds and then clamps x between 0 and maxBound.

alphaChannel :: AlphaColour a -> a Source #

Returns the opacity of an AlphaColour.

colourChannel :: Fractional a => AlphaColour a -> Colour a Source #

Returns the colour of an AlphaColour. colourChannel transparent is undefined and may result in nan or an error. Its use is discouraged. If you are desperate, use

darken (recip (alphaChannel c)) (c `over` black)