packages feed

Color 0.1.4 → 0.2.0

raw patch · 67 files changed

+1089/−504 lines, 67 filesdep −template-haskelldep ~doctestsetup-changedPVP ok

version bump matches the API change (PVP)

Dependencies removed: template-haskell

Dependency ranges changed: doctest

API changes (from Hackage documentation)

- Graphics.Color.Adaptation.VonKries: ciecam02Adaptation :: ChromaticAdaptation CIECAM02 it ir e => Adaptation CIECAM02 it ir e
- Graphics.Color.Adaptation.VonKries: type CIECAM02 = 'CIECAT02
- Graphics.Color.Space.RGB.AdobeRGB: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB)
- Graphics.Color.Space.RGB.AdobeRGB: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB)
- Graphics.Color.Space.RGB.AdobeRGB: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB e)
- Graphics.Color.Space.RGB.AdobeRGB: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB)
- Graphics.Color.Space.RGB.AdobeRGB: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB)
- Graphics.Color.Space.RGB.AdobeRGB: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB e)
- Graphics.Color.Space.RGB.AdobeRGB: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB e)
- Graphics.Color.Space.RGB.AdobeRGB: instance Graphics.Color.Algebra.Elevator.Elevator e => GHC.Show.Show (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB e)
- Graphics.Color.Space.RGB.AdobeRGB: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Model.Internal.ColorModel Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB e
- Graphics.Color.Space.RGB.AdobeRGB: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB Graphics.Color.Illuminant.ITU.Rec601.D65 e
- Graphics.Color.Space.RGB.Alternative.CMYK: instance forall k cs (i :: k) e. (Data.Typeable.Internal.Typeable cs, Graphics.Color.Space.Internal.ColorSpace cs i e, Graphics.Color.Space.RGB.Internal.RedGreenBlue cs i) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.CMYK.CMYK cs) i e
- Graphics.Color.Space.RGB.Alternative.HSI: instance forall k cs (i :: k) e. (Data.Typeable.Internal.Typeable cs, Graphics.Color.Space.Internal.ColorSpace cs i e, Graphics.Color.Space.RGB.Internal.RedGreenBlue cs i) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.HSI.HSI cs) i e
- Graphics.Color.Space.RGB.Alternative.HSL: instance forall k cs (i :: k) e. (Data.Typeable.Internal.Typeable cs, Graphics.Color.Space.Internal.ColorSpace cs i e, Graphics.Color.Space.RGB.Internal.RedGreenBlue cs i) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.HSL.HSL cs) i e
- Graphics.Color.Space.RGB.Alternative.HSV: instance forall k cs (i :: k) e. (Graphics.Color.Space.Internal.ColorSpace cs i e, Graphics.Color.Space.RGB.Internal.RedGreenBlue cs i) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.HSV.HSV cs) i e
- Graphics.Color.Space.RGB.Alternative.YCbCr: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.YCbCr.YCbCr Graphics.Color.Space.RGB.ITU.Rec601.BT601_525) Graphics.Color.Illuminant.ITU.Rec601.D65 e
- Graphics.Color.Space.RGB.Alternative.YCbCr: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.YCbCr.YCbCr Graphics.Color.Space.RGB.ITU.Rec601.BT601_625) Graphics.Color.Illuminant.ITU.Rec601.D65 e
- Graphics.Color.Space.RGB.Alternative.YCbCr: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.YCbCr.YCbCr Graphics.Color.Space.RGB.ITU.Rec709.BT709) Graphics.Color.Illuminant.ITU.Rec601.D65 e
- Graphics.Color.Space.RGB.Alternative.YCbCr: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.YCbCr.YCbCr Graphics.Color.Space.RGB.SRGB.SRGB) Graphics.Color.Illuminant.ITU.Rec601.D65 e
- Graphics.Color.Space.RGB.Alternative.YCbCr: instance forall k (cs :: k -> *) (i :: k) e. (Graphics.Color.Space.RGB.Luma.Luma (cs i), Graphics.Color.Space.Internal.ColorSpace (cs i) i e, Graphics.Color.Space.RGB.Internal.RedGreenBlue (cs i) i) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.YCbCr.YCbCr (cs i)) i e
- Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k) e. (Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i) e)
- Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k) e. (Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i) e
- Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k) e. (Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i) i e
- Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k). Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i))
- Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k). Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i))
- Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k). GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i))
- Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k). GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i))
- Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k e (i :: k). Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i) e)
- Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k e (i :: k). GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i) e)
- Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k e (i :: k). GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i) e)
- Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k) e. (Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i) e)
- Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k) e. (Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i) e
- Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k) e. (Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i) i e
- Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k). Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i))
- Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k). Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i))
- Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k). GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i))
- Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k). GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i))
- Graphics.Color.Space.RGB.Derived.SRGB: instance forall k e (i :: k). Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i) e)
- Graphics.Color.Space.RGB.Derived.SRGB: instance forall k e (i :: k). GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i) e)
- Graphics.Color.Space.RGB.Derived.SRGB: instance forall k e (i :: k). GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i) e)
- Graphics.Color.Space.RGB.ITU.Rec470: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_525)
- Graphics.Color.Space.RGB.ITU.Rec470: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_625)
- Graphics.Color.Space.RGB.ITU.Rec470: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_525)
- Graphics.Color.Space.RGB.ITU.Rec470: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_625)
- Graphics.Color.Space.RGB.ITU.Rec470: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 e)
- Graphics.Color.Space.RGB.ITU.Rec470: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 e)
- Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_525)
- Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_625)
- Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_525)
- Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_625)
- Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 e)
- Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 e)
- Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 e)
- Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 e)
- Graphics.Color.Space.RGB.ITU.Rec470: instance Graphics.Color.Algebra.Elevator.Elevator e => GHC.Show.Show (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 e)
- Graphics.Color.Space.RGB.ITU.Rec470: instance Graphics.Color.Algebra.Elevator.Elevator e => GHC.Show.Show (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 e)
- Graphics.Color.Space.RGB.ITU.Rec470: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Model.Internal.ColorModel Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 e
- Graphics.Color.Space.RGB.ITU.Rec470: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Model.Internal.ColorModel Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 e
- Graphics.Color.Space.RGB.ITU.Rec470: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 Graphics.Color.Illuminant.ITU.Rec470.C e
- Graphics.Color.Space.RGB.ITU.Rec470: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 Graphics.Color.Illuminant.ITU.Rec470.D65 e
- Graphics.Color.Space.RGB.ITU.Rec601: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_525)
- Graphics.Color.Space.RGB.ITU.Rec601: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_625)
- Graphics.Color.Space.RGB.ITU.Rec601: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_525)
- Graphics.Color.Space.RGB.ITU.Rec601: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_625)
- Graphics.Color.Space.RGB.ITU.Rec601: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 e)
- Graphics.Color.Space.RGB.ITU.Rec601: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 e)
- Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_525)
- Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_625)
- Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_525)
- Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_625)
- Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 e)
- Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 e)
- Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 e)
- Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 e)
- Graphics.Color.Space.RGB.ITU.Rec601: instance Graphics.Color.Algebra.Elevator.Elevator e => GHC.Show.Show (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 e)
- Graphics.Color.Space.RGB.ITU.Rec601: instance Graphics.Color.Algebra.Elevator.Elevator e => GHC.Show.Show (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 e)
- Graphics.Color.Space.RGB.ITU.Rec601: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Model.Internal.ColorModel Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 e
- Graphics.Color.Space.RGB.ITU.Rec601: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Model.Internal.ColorModel Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 e
- Graphics.Color.Space.RGB.ITU.Rec601: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 Graphics.Color.Illuminant.ITU.Rec601.D65 e
- Graphics.Color.Space.RGB.ITU.Rec601: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 Graphics.Color.Illuminant.ITU.Rec601.D65 e
- Graphics.Color.Space.RGB.ITU.Rec709: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec709.BT709)
- Graphics.Color.Space.RGB.ITU.Rec709: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec709.BT709)
- Graphics.Color.Space.RGB.ITU.Rec709: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec709.BT709 e)
- Graphics.Color.Space.RGB.ITU.Rec709: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec709.BT709)
- Graphics.Color.Space.RGB.ITU.Rec709: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec709.BT709)
- Graphics.Color.Space.RGB.ITU.Rec709: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec709.BT709 e)
- Graphics.Color.Space.RGB.ITU.Rec709: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec709.BT709 e)
- Graphics.Color.Space.RGB.ITU.Rec709: instance Graphics.Color.Algebra.Elevator.Elevator e => GHC.Show.Show (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.ITU.Rec709.BT709 e)
- Graphics.Color.Space.RGB.ITU.Rec709: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Model.Internal.ColorModel Graphics.Color.Space.RGB.ITU.Rec709.BT709 e
- Graphics.Color.Space.RGB.ITU.Rec709: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace Graphics.Color.Space.RGB.ITU.Rec709.BT709 Graphics.Color.Illuminant.ITU.Rec601.D65 e
- Graphics.Color.Space.RGB.SRGB: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.SRGB.SRGB)
- Graphics.Color.Space.RGB.SRGB: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.SRGB.SRGB)
- Graphics.Color.Space.RGB.SRGB: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.SRGB.SRGB e)
- Graphics.Color.Space.RGB.SRGB: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.SRGB.SRGB)
- Graphics.Color.Space.RGB.SRGB: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.SRGB.SRGB)
- Graphics.Color.Space.RGB.SRGB: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.SRGB.SRGB e)
- Graphics.Color.Space.RGB.SRGB: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.SRGB.SRGB e)
- Graphics.Color.Space.RGB.SRGB: instance Graphics.Color.Algebra.Elevator.Elevator e => GHC.Show.Show (Graphics.Color.Model.Internal.Color Graphics.Color.Space.RGB.SRGB.SRGB e)
- Graphics.Color.Space.RGB.SRGB: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Model.Internal.ColorModel Graphics.Color.Space.RGB.SRGB.SRGB e
- Graphics.Color.Space.RGB.SRGB: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace Graphics.Color.Space.RGB.SRGB.SRGB Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Algebra: (//) :: Elevator e => e -> e -> e
+ Graphics.Color.Algebra: infixl 7 //
+ Graphics.Color.Model: (//) :: Elevator e => e -> e -> e
+ Graphics.Color.Model: infixl 7 //
+ Graphics.Color.Space: Linear :: Linearity
+ Graphics.Color.Space: NonLinear :: Linearity
+ Graphics.Color.Space: [chromaticityCIExyY] :: Chromaticity i e -> Color (CIExyY i) e
+ Graphics.Color.Space: [primaryChromaticity] :: Primary e -> Chromaticity i e
+ Graphics.Color.Space: [whitePointChromaticity] :: WhitePoint e -> Chromaticity i e
+ Graphics.Color.Space: data Linearity
+ Graphics.Color.Space: rgbLinear2xyz :: (RedGreenBlue cs i, ColorSpace (cs 'NonLinear) i e, ColorSpace (cs 'Linear) i e, RealFloat e) => Color (cs 'Linear) e -> Color (XYZ i) e
+ Graphics.Color.Space: rgbLinearLuminance :: forall cs i e. (RedGreenBlue cs i, ColorSpace (cs 'Linear) i e, RealFloat e) => Color (cs 'Linear) e -> Color (Y i) e
+ Graphics.Color.Space: xyz2rgbLinear :: forall cs i e. (RedGreenBlue cs i, ColorSpace (cs 'NonLinear) i e, ColorSpace (cs 'Linear) i e, RealFloat e) => Color (XYZ i) e -> Color (cs 'Linear) e
+ Graphics.Color.Space.CIE1931.RGB: castLinearity :: Color (CIERGB l') e -> Color (CIERGB l) e
+ Graphics.Color.Space.CIE1931.RGB: data CIERGB (l :: Linearity)
+ Graphics.Color.Space.CIE1931.RGB: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.CIE1931.RGB.CIERGB l) e)
+ Graphics.Color.Space.CIE1931.RGB: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.CIE1931.RGB.CIERGB l) e
+ Graphics.Color.Space.CIE1931.RGB: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.CIE1931.RGB.CIERGB l) 'Graphics.Color.Illuminant.CIE1931.E e
+ Graphics.Color.Space.CIE1931.RGB: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.CIE1931.RGB.CIERGB l))
+ Graphics.Color.Space.CIE1931.RGB: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.CIE1931.RGB.CIERGB l))
+ Graphics.Color.Space.CIE1931.RGB: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.CIE1931.RGB.CIERGB l) e)
+ Graphics.Color.Space.CIE1931.RGB: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.CIE1931.RGB.CIERGB l))
+ Graphics.Color.Space.CIE1931.RGB: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.CIE1931.RGB.CIERGB l))
+ Graphics.Color.Space.CIE1931.RGB: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.CIE1931.RGB.CIERGB l) e)
+ Graphics.Color.Space.CIE1931.RGB: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.CIE1931.RGB.CIERGB l) e)
+ Graphics.Color.Space.CIE1931.RGB: instance Graphics.Color.Space.RGB.Internal.RedGreenBlue Graphics.Color.Space.CIE1931.RGB.CIERGB 'Graphics.Color.Illuminant.CIE1931.E
+ Graphics.Color.Space.CIE1931.RGB: primaries :: RealFloat e => Gamut rgb i e
+ Graphics.Color.Space.RGB.AdobeRGB: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB l) e)
+ Graphics.Color.Space.RGB.AdobeRGB: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB l) e
+ Graphics.Color.Space.RGB.AdobeRGB: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB l))
+ Graphics.Color.Space.RGB.AdobeRGB: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB l))
+ Graphics.Color.Space.RGB.AdobeRGB: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB l) e)
+ Graphics.Color.Space.RGB.AdobeRGB: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB l))
+ Graphics.Color.Space.RGB.AdobeRGB: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB l))
+ Graphics.Color.Space.RGB.AdobeRGB: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB l) e)
+ Graphics.Color.Space.RGB.AdobeRGB: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB l) e)
+ Graphics.Color.Space.RGB.AdobeRGB: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB 'Graphics.Color.Space.RGB.Internal.Linear) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.AdobeRGB: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB 'Graphics.Color.Space.RGB.Internal.NonLinear) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.Alternative.CMYK: instance Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB l) Graphics.Color.Illuminant.ITU.Rec601.D65 e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.CMYK.CMYK (Graphics.Color.Space.RGB.AdobeRGB.AdobeRGB l)) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.Alternative.CMYK: instance Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 l) Graphics.Color.Illuminant.ITU.Rec601.D65 e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.CMYK.CMYK (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 l)) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.Alternative.CMYK: instance Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 l) Graphics.Color.Illuminant.ITU.Rec601.D65 e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.CMYK.CMYK (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 l)) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.Alternative.CMYK: instance Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 l) Graphics.Color.Illuminant.ITU.Rec601.D65 e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.CMYK.CMYK (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 l)) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.Alternative.CMYK: instance Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 l) Graphics.Color.Illuminant.ITU.Rec601.D65 e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.CMYK.CMYK (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 l)) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.Alternative.CMYK: instance Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec709.BT709 l) Graphics.Color.Illuminant.ITU.Rec601.D65 e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.CMYK.CMYK (Graphics.Color.Space.RGB.ITU.Rec709.BT709 l)) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.Alternative.CMYK: instance Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.SRGB.SRGB l) Graphics.Color.Illuminant.ITU.Rec601.D65 e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.CMYK.CMYK (Graphics.Color.Space.RGB.SRGB.SRGB l)) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.Alternative.CMYK: instance forall k (cs :: k -> Graphics.Color.Space.RGB.Internal.Linearity -> *) (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity) e. (Data.Typeable.Internal.Typeable cs, Graphics.Color.Space.Internal.ColorSpace (cs i l) i e, Graphics.Color.Space.RGB.Internal.RedGreenBlue (cs i) i) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.CMYK.CMYK (cs i l)) i e
+ Graphics.Color.Space.RGB.Alternative.HSI: instance forall k (cs :: Graphics.Color.Space.RGB.Internal.Linearity -> *) (l :: Graphics.Color.Space.RGB.Internal.Linearity) (i :: k) e. (Graphics.Color.Space.Internal.ColorSpace (cs l) i e, Graphics.Color.Space.RGB.Internal.RedGreenBlue cs i) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.HSI.HSI (cs l)) i e
+ Graphics.Color.Space.RGB.Alternative.HSL: instance forall k (cs :: Graphics.Color.Space.RGB.Internal.Linearity -> *) (l :: Graphics.Color.Space.RGB.Internal.Linearity) (i :: k) e. (Graphics.Color.Space.Internal.ColorSpace (cs l) i e, Graphics.Color.Space.RGB.Internal.RedGreenBlue cs i) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.HSL.HSL (cs l)) i e
+ Graphics.Color.Space.RGB.Alternative.HSV: instance forall k (cs :: Graphics.Color.Space.RGB.Internal.Linearity -> *) (l :: Graphics.Color.Space.RGB.Internal.Linearity) (i :: k) e. (Graphics.Color.Space.Internal.ColorSpace (cs l) i e, Graphics.Color.Space.RGB.Internal.RedGreenBlue cs i) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.HSV.HSV (cs l)) i e
+ Graphics.Color.Space.RGB.Alternative.YCbCr: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.YCbCr.YCbCr (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 'Graphics.Color.Space.RGB.Internal.NonLinear)) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.Alternative.YCbCr: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.YCbCr.YCbCr (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 'Graphics.Color.Space.RGB.Internal.NonLinear)) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.Alternative.YCbCr: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.YCbCr.YCbCr (Graphics.Color.Space.RGB.ITU.Rec709.BT709 'Graphics.Color.Space.RGB.Internal.NonLinear)) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.Alternative.YCbCr: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.YCbCr.YCbCr (Graphics.Color.Space.RGB.SRGB.SRGB 'Graphics.Color.Space.RGB.Internal.NonLinear)) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.Alternative.YCbCr: instance forall k (cs :: k -> Graphics.Color.Space.RGB.Internal.Linearity -> *) (i :: k) e. (Graphics.Color.Space.RGB.Luma.Luma (cs i), Graphics.Color.Space.Internal.ColorSpace (cs i 'Graphics.Color.Space.RGB.Internal.NonLinear) i e, Graphics.Color.Space.RGB.Internal.RedGreenBlue (cs i) i) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Alternative.YCbCr.YCbCr (cs i 'Graphics.Color.Space.RGB.Internal.NonLinear)) i e
+ Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i l))
+ Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i l))
+ Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i l))
+ Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i l))
+ Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k) e. (Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i 'Graphics.Color.Space.RGB.Internal.Linear) i e
+ Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (i :: k) e. (Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i 'Graphics.Color.Space.RGB.Internal.NonLinear) i e
+ Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (l :: Graphics.Color.Space.RGB.Internal.Linearity) (i :: k) e. (Data.Typeable.Internal.Typeable l, Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i l) e)
+ Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k (l :: Graphics.Color.Space.RGB.Internal.Linearity) (i :: k) e. (Data.Typeable.Internal.Typeable l, Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i l) e
+ Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k e (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i l) e)
+ Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k e (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i l) e)
+ Graphics.Color.Space.RGB.Derived.AdobeRGB: instance forall k e (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.AdobeRGB.AdobeRGB i l) e)
+ Graphics.Color.Space.RGB.Derived.CIERGB: castLinearity :: Color (CIERGB i l') e -> Color (CIERGB i l) e
+ Graphics.Color.Space.RGB.Derived.CIERGB: data CIERGB (i :: k) (l :: Linearity)
+ Graphics.Color.Space.RGB.Derived.CIERGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity) e. (Graphics.Color.Space.Internal.Illuminant i, Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Derived.CIERGB.CIERGB i l) i e
+ Graphics.Color.Space.RGB.Derived.CIERGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.CIERGB.CIERGB i l))
+ Graphics.Color.Space.RGB.Derived.CIERGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.CIERGB.CIERGB i l))
+ Graphics.Color.Space.RGB.Derived.CIERGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.CIERGB.CIERGB i l))
+ Graphics.Color.Space.RGB.Derived.CIERGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.CIERGB.CIERGB i l))
+ Graphics.Color.Space.RGB.Derived.CIERGB: instance forall k (i :: k). Graphics.Color.Space.Internal.Illuminant i => Graphics.Color.Space.RGB.Internal.RedGreenBlue (Graphics.Color.Space.RGB.Derived.CIERGB.CIERGB i) i
+ Graphics.Color.Space.RGB.Derived.CIERGB: instance forall k (l :: Graphics.Color.Space.RGB.Internal.Linearity) (i :: k) e. (Data.Typeable.Internal.Typeable l, Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.CIERGB.CIERGB i l) e)
+ Graphics.Color.Space.RGB.Derived.CIERGB: instance forall k (l :: Graphics.Color.Space.RGB.Internal.Linearity) (i :: k) e. (Data.Typeable.Internal.Typeable l, Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.RGB.Derived.CIERGB.CIERGB i l) e
+ Graphics.Color.Space.RGB.Derived.CIERGB: instance forall k e (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.CIERGB.CIERGB i l) e)
+ Graphics.Color.Space.RGB.Derived.CIERGB: instance forall k e (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.CIERGB.CIERGB i l) e)
+ Graphics.Color.Space.RGB.Derived.CIERGB: instance forall k e (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.CIERGB.CIERGB i l) e)
+ Graphics.Color.Space.RGB.Derived.CIERGB: primaries :: RealFloat e => Gamut rgb i e
+ Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i l))
+ Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i l))
+ Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i l))
+ Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i l))
+ Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k) e. (Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i 'Graphics.Color.Space.RGB.Internal.Linear) i e
+ Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (i :: k) e. (Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i 'Graphics.Color.Space.RGB.Internal.NonLinear) i e
+ Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (l :: Graphics.Color.Space.RGB.Internal.Linearity) (i :: k) e. (Data.Typeable.Internal.Typeable l, Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i l) e)
+ Graphics.Color.Space.RGB.Derived.SRGB: instance forall k (l :: Graphics.Color.Space.RGB.Internal.Linearity) (i :: k) e. (Data.Typeable.Internal.Typeable l, Graphics.Color.Space.Internal.Illuminant i, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i l) e
+ Graphics.Color.Space.RGB.Derived.SRGB: instance forall k e (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i l) e)
+ Graphics.Color.Space.RGB.Derived.SRGB: instance forall k e (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i l) e)
+ Graphics.Color.Space.RGB.Derived.SRGB: instance forall k e (i :: k) (l :: Graphics.Color.Space.RGB.Internal.Linearity). GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.Derived.SRGB.SRGB i l) e)
+ Graphics.Color.Space.RGB.ITU.Rec470: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec470: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec470: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 l) e
+ Graphics.Color.Space.RGB.ITU.Rec470: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 l) e
+ Graphics.Color.Space.RGB.ITU.Rec470: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 l))
+ Graphics.Color.Space.RGB.ITU.Rec470: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 l))
+ Graphics.Color.Space.RGB.ITU.Rec470: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 l))
+ Graphics.Color.Space.RGB.ITU.Rec470: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 l))
+ Graphics.Color.Space.RGB.ITU.Rec470: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec470: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 l))
+ Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 l))
+ Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 l))
+ Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 l))
+ Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec470: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec470: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 'Graphics.Color.Space.RGB.Internal.Linear) Graphics.Color.Illuminant.ITU.Rec470.C e
+ Graphics.Color.Space.RGB.ITU.Rec470: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec470.BT470_525 'Graphics.Color.Space.RGB.Internal.NonLinear) Graphics.Color.Illuminant.ITU.Rec470.C e
+ Graphics.Color.Space.RGB.ITU.Rec470: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 'Graphics.Color.Space.RGB.Internal.Linear) Graphics.Color.Illuminant.ITU.Rec470.D65 e
+ Graphics.Color.Space.RGB.ITU.Rec470: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec470.BT470_625 'Graphics.Color.Space.RGB.Internal.NonLinear) Graphics.Color.Illuminant.ITU.Rec470.D65 e
+ Graphics.Color.Space.RGB.ITU.Rec601: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec601: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec601: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 l) e
+ Graphics.Color.Space.RGB.ITU.Rec601: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 l) e
+ Graphics.Color.Space.RGB.ITU.Rec601: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 l))
+ Graphics.Color.Space.RGB.ITU.Rec601: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 l))
+ Graphics.Color.Space.RGB.ITU.Rec601: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 l))
+ Graphics.Color.Space.RGB.ITU.Rec601: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 l))
+ Graphics.Color.Space.RGB.ITU.Rec601: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec601: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 l))
+ Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 l))
+ Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 l))
+ Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 l))
+ Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec601: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec601: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 'Graphics.Color.Space.RGB.Internal.Linear) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.ITU.Rec601: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec601.BT601_525 'Graphics.Color.Space.RGB.Internal.NonLinear) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.ITU.Rec601: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 'Graphics.Color.Space.RGB.Internal.Linear) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.ITU.Rec601: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec601.BT601_625 'Graphics.Color.Space.RGB.Internal.NonLinear) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.ITU.Rec709: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec709.BT709 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec709: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.RGB.ITU.Rec709.BT709 l) e
+ Graphics.Color.Space.RGB.ITU.Rec709: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec709.BT709 l))
+ Graphics.Color.Space.RGB.ITU.Rec709: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec709.BT709 l))
+ Graphics.Color.Space.RGB.ITU.Rec709: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec709.BT709 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec709: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec709.BT709 l))
+ Graphics.Color.Space.RGB.ITU.Rec709: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec709.BT709 l))
+ Graphics.Color.Space.RGB.ITU.Rec709: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec709.BT709 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec709: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.ITU.Rec709.BT709 l) e)
+ Graphics.Color.Space.RGB.ITU.Rec709: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec709.BT709 'Graphics.Color.Space.RGB.Internal.Linear) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.ITU.Rec709: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.ITU.Rec709.BT709 'Graphics.Color.Space.RGB.Internal.NonLinear) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.SRGB: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => GHC.Show.Show (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.SRGB.SRGB l) e)
+ Graphics.Color.Space.RGB.SRGB: instance (Data.Typeable.Internal.Typeable l, Graphics.Color.Algebra.Elevator.Elevator e) => Graphics.Color.Model.Internal.ColorModel (Graphics.Color.Space.RGB.SRGB.SRGB l) e
+ Graphics.Color.Space.RGB.SRGB: instance Data.Foldable.Foldable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.SRGB.SRGB l))
+ Graphics.Color.Space.RGB.SRGB: instance Data.Traversable.Traversable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.SRGB.SRGB l))
+ Graphics.Color.Space.RGB.SRGB: instance Foreign.Storable.Storable e => Foreign.Storable.Storable (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.SRGB.SRGB l) e)
+ Graphics.Color.Space.RGB.SRGB: instance GHC.Base.Applicative (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.SRGB.SRGB l))
+ Graphics.Color.Space.RGB.SRGB: instance GHC.Base.Functor (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.SRGB.SRGB l))
+ Graphics.Color.Space.RGB.SRGB: instance GHC.Classes.Eq e => GHC.Classes.Eq (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.SRGB.SRGB l) e)
+ Graphics.Color.Space.RGB.SRGB: instance GHC.Classes.Ord e => GHC.Classes.Ord (Graphics.Color.Model.Internal.Color (Graphics.Color.Space.RGB.SRGB.SRGB l) e)
+ Graphics.Color.Space.RGB.SRGB: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.SRGB.SRGB 'Graphics.Color.Space.RGB.Internal.Linear) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Color.Space.RGB.SRGB: instance Graphics.Color.Algebra.Elevator.Elevator e => Graphics.Color.Space.Internal.ColorSpace (Graphics.Color.Space.RGB.SRGB.SRGB 'Graphics.Color.Space.RGB.Internal.NonLinear) Graphics.Color.Illuminant.ITU.Rec601.D65 e
+ Graphics.Pixel.ColorSpace: fromPixelLinearRGB :: (RedGreenBlue cs i, Elevator e, RealFloat e) => Pixel (cs 'Linear) e -> Pixel (cs 'NonLinear) e
+ Graphics.Pixel.ColorSpace: toPixelLinearRGB :: (RedGreenBlue cs i, Elevator e, RealFloat e) => Pixel (cs 'NonLinear) e -> Pixel (cs 'Linear) e
- Graphics.Color.Adaptation: chromaticAdaptation :: ChromaticAdaptation t it ir e => Adaptation t it ir e -> Gamut cst it e -> Gamut csr ir e
+ Graphics.Color.Adaptation: chromaticAdaptation :: ChromaticAdaptation t it ir e => Adaptation t it ir e -> Gamut cs it e -> Gamut cs ir e
- Graphics.Color.Space: class Illuminant i => RedGreenBlue cs (i :: k) | cs -> i
+ Graphics.Color.Space: class Illuminant i => RedGreenBlue (cs :: Linearity -> Type) (i :: k) | cs -> i
- Graphics.Color.Space: dcctf :: (RedGreenBlue cs i, RealFloat a, Elevator a) => Color cs a -> Color cs a
+ Graphics.Color.Space: dcctf :: (RedGreenBlue cs i, RealFloat a, Elevator a) => Color (cs 'NonLinear) a -> Color (cs 'Linear) a
- Graphics.Color.Space: ecctf :: (RedGreenBlue cs i, RealFloat a, Elevator a) => Color cs a -> Color cs a
+ Graphics.Color.Space: ecctf :: (RedGreenBlue cs i, RealFloat a, Elevator a) => Color (cs 'Linear) a -> Color (cs 'NonLinear) a
- Graphics.Color.Space: inpm :: (RedGreenBlue cs i, ColorSpace cs i a, RealFloat a) => INPM cs a
+ Graphics.Color.Space: inpm :: (RedGreenBlue cs i, ColorSpace (cs 'Linear) i a, RealFloat a) => INPM cs a
- Graphics.Color.Space: inpmApply :: (RedGreenBlue cs i, Elevator e) => INPM cs e -> Color (XYZ i) e -> Color cs e
+ Graphics.Color.Space: inpmApply :: (RedGreenBlue cs i, Elevator e) => INPM cs e -> Color (XYZ i) e -> Color (cs 'Linear) e
- Graphics.Color.Space: inpmDerive :: forall cs i e. (ColorSpace cs i e, RealFloat e) => Gamut cs i e -> INPM cs e
+ Graphics.Color.Space: inpmDerive :: forall cs i e. (ColorSpace (cs 'Linear) i e, RealFloat e) => Gamut cs i e -> INPM cs e
- Graphics.Color.Space: mkColorRGB :: (RedGreenBlue cs i, Coercible (Color RGB e) (Color cs e)) => Color RGB e -> Color cs e
+ Graphics.Color.Space: mkColorRGB :: (RedGreenBlue cs i, Coercible (Color RGB e) (Color (cs l) e)) => Color RGB e -> Color (cs l) e
- Graphics.Color.Space: npm :: (RedGreenBlue cs i, ColorSpace cs i a, RealFloat a) => NPM cs a
+ Graphics.Color.Space: npm :: (RedGreenBlue cs i, ColorSpace (cs 'Linear) i a, RealFloat a) => NPM cs a
- Graphics.Color.Space: npmApply :: (RedGreenBlue cs i, Elevator e) => NPM cs e -> Color cs e -> Color (XYZ i) e
+ Graphics.Color.Space: npmApply :: (RedGreenBlue cs i, Elevator e) => NPM cs e -> Color (cs 'Linear) e -> Color (XYZ i) e
- Graphics.Color.Space: npmDerive :: forall cs i e. (ColorSpace cs i e, RealFloat e) => Gamut cs i e -> NPM cs e
+ Graphics.Color.Space: npmDerive :: forall cs i e. (ColorSpace (cs 'Linear) i e, RealFloat e) => Gamut cs i e -> NPM cs e
- Graphics.Color.Space: pixelWhitePoint :: forall e cs a i. (RedGreenBlue cs i, RealFloat e) => Color cs a -> WhitePoint i e
+ Graphics.Color.Space: pixelWhitePoint :: forall e cs a i l. (RedGreenBlue cs i, RealFloat e) => Color (cs l) a -> WhitePoint i e
- Graphics.Color.Space: rgb2xyz :: (RedGreenBlue cs i, ColorSpace cs i e, RealFloat e) => Color cs e -> Color (XYZ i) e
+ Graphics.Color.Space: rgb2xyz :: (RedGreenBlue cs i, ColorSpace (cs 'NonLinear) i e, ColorSpace (cs 'Linear) i e, RealFloat e) => Color (cs 'NonLinear) e -> Color (XYZ i) e
- Graphics.Color.Space: rgbColorGamut :: (RedGreenBlue cs i, RealFloat e) => Color cs a -> Gamut cs i e
+ Graphics.Color.Space: rgbColorGamut :: (RedGreenBlue cs i, RealFloat e) => Color (cs l) a -> Gamut cs i e
- Graphics.Color.Space: rgbLuminance :: (RedGreenBlue cs i, ColorSpace cs i e, RealFloat e) => Color cs e -> Color (Y i) e
+ Graphics.Color.Space: rgbLuminance :: (RedGreenBlue cs i, ColorSpace (cs 'Linear) i e, RealFloat e) => Color (cs 'NonLinear) e -> Color (Y i) e
- Graphics.Color.Space: unColorRGB :: (RedGreenBlue cs i, Coercible (Color cs e) (Color RGB e)) => Color cs e -> Color RGB e
+ Graphics.Color.Space: unColorRGB :: (RedGreenBlue cs i, Coercible (Color (cs l) e) (Color RGB e)) => Color (cs l) e -> Color RGB e
- Graphics.Color.Space: xyz2rgb :: (RedGreenBlue cs i, ColorSpace cs i e, RealFloat e) => Color (XYZ i) e -> Color cs e
+ Graphics.Color.Space: xyz2rgb :: (RedGreenBlue cs i, ColorSpace (cs 'NonLinear) i e, ColorSpace (cs 'Linear) i e, RealFloat e) => Color (XYZ i) e -> Color (cs 'NonLinear) e
- Graphics.Color.Space.RGB: data SRGB
+ Graphics.Color.Space.RGB: data SRGB (l :: Linearity)
- Graphics.Color.Space.RGB: pattern ColorSRGB :: e -> e -> e -> Color SRGB e
+ Graphics.Color.Space.RGB: pattern ColorSRGB :: e -> e -> e -> Color (SRGB l) e
- Graphics.Color.Space.RGB: pattern ColorSRGBA :: e -> e -> e -> e -> Color (Alpha SRGB) e
+ Graphics.Color.Space.RGB: pattern ColorSRGBA :: e -> e -> e -> e -> Color (Alpha (SRGB l)) e
- Graphics.Color.Space.RGB.AdobeRGB: data AdobeRGB
+ Graphics.Color.Space.RGB.AdobeRGB: data AdobeRGB (l :: Linearity)
- Graphics.Color.Space.RGB.AdobeRGB: pattern AdobeRGB :: () => Color RGB e -> Color AdobeRGB e
+ Graphics.Color.Space.RGB.AdobeRGB: pattern AdobeRGB :: () => Color RGB e -> Color (AdobeRGB l) e
- Graphics.Color.Space.RGB.AdobeRGB: pattern ColorAdobeRGB :: e -> e -> e -> Color AdobeRGB e
+ Graphics.Color.Space.RGB.AdobeRGB: pattern ColorAdobeRGB :: e -> e -> e -> Color (AdobeRGB l) e
- Graphics.Color.Space.RGB.AdobeRGB: pattern ColorAdobeRGBA :: e -> e -> e -> e -> Color (Alpha AdobeRGB) e
+ Graphics.Color.Space.RGB.AdobeRGB: pattern ColorAdobeRGBA :: e -> e -> e -> e -> Color (Alpha (AdobeRGB l)) e
- Graphics.Color.Space.RGB.Alternative.YCbCr: fromColorYCbCr :: forall cs i e' e. (Luma cs, RedGreenBlue cs i, Elevator e', Elevator e, RealFloat e) => Color (YCbCr cs) e' -> Color cs e
+ Graphics.Color.Space.RGB.Alternative.YCbCr: fromColorYCbCr :: forall cs i e' e. (Luma cs, RedGreenBlue cs i, Elevator e', Elevator e, RealFloat e) => Color (YCbCr (cs 'NonLinear)) e' -> Color (cs 'NonLinear) e
- Graphics.Color.Space.RGB.Alternative.YCbCr: srgb2ycbcr :: (RedGreenBlue cs i, RealFloat e) => Color cs e -> Color (YCbCr cs) e
+ Graphics.Color.Space.RGB.Alternative.YCbCr: srgb2ycbcr :: (RedGreenBlue cs i, RealFloat e) => Color (cs 'NonLinear) e -> Color (YCbCr (cs 'NonLinear)) e
- Graphics.Color.Space.RGB.Alternative.YCbCr: toColorYCbCr :: forall cs i e' e. (Luma cs, RedGreenBlue cs i, Elevator e', Elevator e, RealFloat e) => Color cs e' -> Color (YCbCr cs) e
+ Graphics.Color.Space.RGB.Alternative.YCbCr: toColorYCbCr :: forall cs i e' e. (Luma cs, RedGreenBlue cs i, Elevator e', Elevator e, RealFloat e) => Color (cs 'NonLinear) e' -> Color (YCbCr (cs 'NonLinear)) e
- Graphics.Color.Space.RGB.Alternative.YCbCr: ycbcr2srgb :: (RedGreenBlue cs i, RealFloat e) => Color (YCbCr cs) e -> Color cs e
+ Graphics.Color.Space.RGB.Alternative.YCbCr: ycbcr2srgb :: (RedGreenBlue cs i, RealFloat e) => Color (YCbCr (cs 'NonLinear)) e -> Color (cs 'NonLinear) e
- Graphics.Color.Space.RGB.Derived.AdobeRGB: data AdobeRGB (i :: k)
+ Graphics.Color.Space.RGB.Derived.AdobeRGB: data AdobeRGB (i :: k) (l :: Linearity)
- Graphics.Color.Space.RGB.Derived.SRGB: data SRGB (i :: k)
+ Graphics.Color.Space.RGB.Derived.SRGB: data SRGB (i :: k) (l :: Linearity)
- Graphics.Color.Space.RGB.ITU.Rec470: data BT470_525
+ Graphics.Color.Space.RGB.ITU.Rec470: data BT470_525 (l :: Linearity)
- Graphics.Color.Space.RGB.ITU.Rec470: data BT470_625
+ Graphics.Color.Space.RGB.ITU.Rec470: data BT470_625 (l :: Linearity)
- Graphics.Color.Space.RGB.ITU.Rec470: pattern BT470_625 :: () => Color RGB e -> Color BT470_625 e
+ Graphics.Color.Space.RGB.ITU.Rec470: pattern BT470_625 :: () => Color RGB e -> Color (BT470_625 l) e
- Graphics.Color.Space.RGB.ITU.Rec601: data BT601_525
+ Graphics.Color.Space.RGB.ITU.Rec601: data BT601_525 (l :: Linearity)
- Graphics.Color.Space.RGB.ITU.Rec601: data BT601_625
+ Graphics.Color.Space.RGB.ITU.Rec601: data BT601_625 (l :: Linearity)
- Graphics.Color.Space.RGB.ITU.Rec601: pattern BT601_625 :: () => Color RGB e -> Color BT601_625 e
+ Graphics.Color.Space.RGB.ITU.Rec601: pattern BT601_625 :: () => Color RGB e -> Color (BT601_625 l) e
- Graphics.Color.Space.RGB.ITU.Rec709: data BT709
+ Graphics.Color.Space.RGB.ITU.Rec709: data BT709 (l :: Linearity)
- Graphics.Color.Space.RGB.ITU.Rec709: pattern BT709 :: () => Color RGB e -> Color BT709 e
+ Graphics.Color.Space.RGB.ITU.Rec709: pattern BT709 :: () => Color RGB e -> Color (BT709 l) e
- Graphics.Color.Space.RGB.Luma: class Luma cs
+ Graphics.Color.Space.RGB.Luma: class Luma (cs :: Linearity -> Type)
- Graphics.Color.Space.RGB.Luma: rgbLuma :: forall cs i e' e. (Luma cs, RedGreenBlue cs i, Elevator e', Elevator e, RealFloat e) => Color cs e' -> Color Y' e
+ Graphics.Color.Space.RGB.Luma: rgbLuma :: forall cs i e' e. (Luma cs, RedGreenBlue cs i, Elevator e', Elevator e, RealFloat e) => Color (cs 'NonLinear) e' -> Color Y' e
- Graphics.Color.Space.RGB.Luma: rgbLumaWeights :: forall cs e' e. (Luma cs, RealFloat e) => Color cs e' -> Weights e
+ Graphics.Color.Space.RGB.Luma: rgbLumaWeights :: forall cs e' e. (Luma cs, RealFloat e) => Color (cs 'NonLinear) e' -> Weights e
- Graphics.Color.Space.RGB.SRGB: data SRGB
+ Graphics.Color.Space.RGB.SRGB: data SRGB (l :: Linearity)
- Graphics.Color.Space.RGB.SRGB: pattern SRGB :: () => Color RGB e -> Color SRGB e
+ Graphics.Color.Space.RGB.SRGB: pattern SRGB :: () => Color RGB e -> Color (SRGB l) e
- Graphics.Color.Space.RGB.SRGB: pattern ColorSRGB :: e -> e -> e -> Color SRGB e
+ Graphics.Color.Space.RGB.SRGB: pattern ColorSRGB :: e -> e -> e -> Color (SRGB l) e
- Graphics.Color.Space.RGB.SRGB: pattern ColorSRGBA :: e -> e -> e -> e -> Color (Alpha SRGB) e
+ Graphics.Color.Space.RGB.SRGB: pattern ColorSRGBA :: e -> e -> e -> e -> Color (Alpha (SRGB l)) e
- Graphics.Pixel.ColorSpace: data AdobeRGB
+ Graphics.Pixel.ColorSpace: data AdobeRGB (l :: Linearity)
- Graphics.Pixel.ColorSpace: data SRGB
+ Graphics.Pixel.ColorSpace: data SRGB (l :: Linearity)
- Graphics.Pixel.ColorSpace: pattern PixelSRGB :: e -> e -> e -> Pixel SRGB e
+ Graphics.Pixel.ColorSpace: pattern PixelSRGB :: e -> e -> e -> Pixel (SRGB 'NonLinear) e
- Graphics.Pixel.ColorSpace: pattern PixelSRGBA :: e -> e -> e -> e -> Pixel (Alpha SRGB) e
+ Graphics.Pixel.ColorSpace: pattern PixelSRGBA :: e -> e -> e -> e -> Pixel (Alpha (SRGB 'NonLinear)) e
- Graphics.Pixel.ColorSpace: pattern PixelRGBA :: RedGreenBlue cs i => e -> e -> e -> e -> Pixel (Alpha cs) e
+ Graphics.Pixel.ColorSpace: pattern PixelRGBA :: RedGreenBlue cs i => e -> e -> e -> e -> Pixel (Alpha (cs l)) e
- Graphics.Pixel.ColorSpace: rgbPixelLuma :: forall cs i e' e. (Luma cs, RedGreenBlue cs i, Elevator e', Elevator e, RealFloat e) => Pixel cs e' -> Pixel Y' e
+ Graphics.Pixel.ColorSpace: rgbPixelLuma :: forall cs i e' e. (Luma cs, RedGreenBlue cs i, Elevator e', Elevator e, RealFloat e) => Pixel (cs 'NonLinear) e' -> Pixel Y' e

Files

CHANGELOG.md view
@@ -1,4 +1,15 @@-# Changelog for color+# Changelog for Color++## 0.2.0++* Add `Linearity` kind to `RedGreenBlue` color spaces.+* Add `Default` instance for `Pixel`+* Addition of universal division `(//)` to `Elevator`+* Addition of CIE1931 RGB color space.+* Fix show instance for floating point colors: adjust formatting in Elevator for `Float` and `Double`+* Add record accessor functions: `chromaticityCIExyY`, `whitePointChromaticity`+* Fix show instance for `Gamut`+* Remove deprecated: `CIECAM02` and `ciecam02Adaptation`  ## 0.1.4 
Color.cabal view
@@ -1,5 +1,5 @@ name:                Color-version:             0.1.4+version:             0.2.0 synopsis:            Color spaces and conversions between them description:         Please see the README on GitHub at <https://github.com/lehins/Color#readme> homepage:            https://github.com/lehins/Color@@ -13,20 +13,13 @@                    , CHANGELOG.md extra-doc-files:     files/*.svg cabal-version:       >=1.18-build-type:          Custom+build-type:          Simple tested-with:          GHC == 8.4.3                     , GHC == 8.4.4                     , GHC == 8.6.3                     , GHC == 8.6.4                     , GHC == 8.6.5-                    , GHC == 8.8.1-                    , GHC == 8.8.2--custom-setup-  setup-depends:-      base-    , Cabal-    , cabal-doctest >=1.0.6+                    , GHC == 8.8.3  library   hs-source-dirs:      src@@ -45,23 +38,25 @@                      , Graphics.Color.Illuminant.Wikipedia                      , Graphics.Color.Model                      , Graphics.Color.Space-                     -- , Graphics.Color.Space.CIE1931.RGB+                     , Graphics.Color.Space.CIE1931.RGB                      , Graphics.Color.Space.CIE1931.XYZ                      , Graphics.Color.Space.CIE1976.LAB                      -- , Graphics.Color.Space.CIE1976.LAB.LCH                      -- , Graphics.Color.Space.CIE1976.LAB.HLC                      -- , Graphics.Color.Space.CIE1976.LUV                      , Graphics.Color.Space.RGB-                     , Graphics.Color.Space.RGB.SRGB+                     , Graphics.Color.Space.RGB.CIERGB                      , Graphics.Color.Space.RGB.AdobeRGB+                     , Graphics.Color.Space.RGB.SRGB                      , Graphics.Color.Space.RGB.Alternative                      , Graphics.Color.Space.RGB.Alternative.CMYK                      , Graphics.Color.Space.RGB.Alternative.HSI                      , Graphics.Color.Space.RGB.Alternative.HSV                      , Graphics.Color.Space.RGB.Alternative.HSL                      , Graphics.Color.Space.RGB.Alternative.YCbCr-                     , Graphics.Color.Space.RGB.Derived.SRGB                      , Graphics.Color.Space.RGB.Derived.AdobeRGB+                     , Graphics.Color.Space.RGB.Derived.CIERGB+                     , Graphics.Color.Space.RGB.Derived.SRGB                      , Graphics.Color.Space.RGB.ITU.Rec470                      , Graphics.Color.Space.RGB.ITU.Rec601                      , Graphics.Color.Space.RGB.ITU.Rec709@@ -116,10 +111,12 @@                     , Graphics.Color.Model.RGBSpec                     , Graphics.Color.Model.YCbCrSpec                     , Graphics.Color.Space.Common+                    , Graphics.Color.Space.CIE1931.RGBSpec                     , Graphics.Color.Space.CIE1976.LABSpec                     , Graphics.Color.Space.RGB.AdobeRGBSpec                     , Graphics.Color.Space.RGB.SRGBSpec                     , Graphics.Color.Space.RGB.Derived.AdobeRGBSpec+                    , Graphics.Color.Space.RGB.Derived.CIERGBSpec                     , Graphics.Color.Space.RGB.Derived.SRGBSpec                     , Graphics.Color.Space.RGB.ITU.Rec470Spec                     , Graphics.Color.Space.RGB.ITU.Rec601Spec@@ -158,10 +155,9 @@   hs-source-dirs:   tests   main-is:          doctests.hs   build-depends: base-               , doctest >=0.15+               , doctest >=0.16                , QuickCheck                , Color-               , template-haskell   default-language:    Haskell2010   ghc-options:        -Wall                       -Wincomplete-record-updates
README.md view
@@ -1,15 +1,19 @@ # Color -| Language | Travis | Coveralls |Gitter.im |-|:--------:|:------:|:---------:|:--------:|-| ![GitHub top language](https://img.shields.io/github/languages/top/lehins/Color.svg) | [![Travis](https://img.shields.io/travis/lehins/Color/master.svg?label=Linux%20%26%20OS%20X)](https://travis-ci.org/lehins/Color) | [![Coverage Status](https://coveralls.io/repos/github/lehins/Color/badge.svg?branch=master)](https://coveralls.io/github/lehins/Color?branch=master) | [![Join the chat at https://gitter.im/haskell-massiv/Lobby](https://badges.gitter.im/haskell-massiv/Lobby.svg)](https://gitter.im/haskell-massiv/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)+A library for dealing with Colors and pixels. It implements arbitrary color space+conversion, chromatic adaptation and other color manipulations. +## Status++| Language | Travis | Azure | Coveralls |Gitter.im |+|:--------:|:------:|:--------:|:---------:|:--------:|+| ![GitHub top language](https://img.shields.io/github/languages/top/lehins/Color.svg) | [![Travis](https://img.shields.io/travis/lehins/Color/master.svg?label=Linux%20%26%20OS%20X)](https://travis-ci.org/lehins/Color) | [![Build Status](https://dev.azure.com/kuleshevich/Color/_apis/build/status/lehins.Color?branchName=master)](https://dev.azure.com/kuleshevich/Color/_build/latest?definitionId=1?branchName=master) | [![Coverage Status](https://coveralls.io/repos/github/lehins/Color/badge.svg?branch=master)](https://coveralls.io/github/lehins/Color?branch=master) | [![Join the chat at https://gitter.im/haskell-massiv/Lobby](https://badges.gitter.im/haskell-massiv/Lobby.svg)](https://gitter.im/haskell-massiv/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)+ |      Package       | Hackage | Nightly | LTS | |:-------------------|:-------:|:-------:|:---:| |  [`Color`](https://github.com/lehins/Color/tree/master/Color)|                                       [![Hackage](https://img.shields.io/hackage/v/Color.svg)](https://hackage.haskell.org/package/Color)|                                                                                                        [![Nightly](https://www.stackage.org/package/Color/badge/nightly)](https://www.stackage.org/nightly/package/Color)|                                                                                         [![Nightly](https://www.stackage.org/package/Color/badge/lts)](https://www.stackage.org/lts/package/Color)| -A library for dealing with Colors and pixels. It implements arbitrary color space-conversion, chromatic adaptation and other color manipulations.+## Description  There is a clear separation between color models, color spaces and alternative representations of color spaces. All are distinct at the type level. The goal is to@@ -31,12 +35,13 @@ * Color spaces and arbitrary conversions between them:    * `Y` - luminance+  * `Y'` - luma   * `CIE XYZ`   * `CIE L*a*b*`   * `RGB`: -    * `sRGB`-    * `AdobeRGB`+    * `sRGB` - both standardized and derived+    * `AdobeRGB` - both standardized and derived     * ITU: `Rec470`, `Rec601` and `Rec709`     * Alternative representations: @@ -56,17 +61,18 @@    * VonKries adaptation with transformations: -      * VonKries-      * Bradford (default)-      * Fairchild-      * CIECAM02+      * `VonKries`+      * `Bradford` (default)+      * `Fairchild`+      * `CIECAM02`+      * `CMCCAT2000`  * Color Standards:    * RAL  -# External resources+## External resources  * `Color` is on a list of curated [Awesome Colour](https://awesome-colour.org/#haskell)   resources.
Setup.hs view
@@ -1,34 +1,4 @@-{-# LANGUAGE CPP #-}-{-# OPTIONS_GHC -Wall #-}-module Main (main) where--#ifndef MIN_VERSION_cabal_doctest-#define MIN_VERSION_cabal_doctest(x,y,z) 0-#endif--#if MIN_VERSION_cabal_doctest(1,0,0)--import Distribution.Extra.Doctest ( defaultMainWithDoctests )-main :: IO ()-main = defaultMainWithDoctests "doctests"--#else--#ifdef MIN_VERSION_Cabal--- If the macro is defined, we have new cabal-install,--- but for some reason we don't have cabal-doctest in package-db------ Probably we are running cabal sdist, when otherwise using new-build--- workflow-#warning You are configuring this package without cabal-doctest installed. \-         The doctests test-suite will not work as a result. \-         To fix this, install cabal-doctest before configuring.-#endif- import Distribution.Simple  main :: IO () main = defaultMain--#endif-
bench/Conversion.hs view
@@ -47,7 +47,7 @@   makeRandomRGB ::-     (RedGreenBlue cs (i :: k), RandomGen g, Random a, Elevator a) => g -> (Color cs a, g)+     (RedGreenBlue cs (i :: k), RandomGen g, Random a, Elevator a) => g -> (Color (cs 'NonLinear) a, g) makeRandomRGB gen =   case randomV3 gen of     (V3 r g b, gen') -> (mkColorRGB (CM.ColorRGB r g b), gen')@@ -69,8 +69,8 @@   -> g   -> (Benchmark, g) mkBenchmarks _ tyName g0 =-  let !(srgb :: Color SRGB f, g1) = makeRandomRGB g0-      !(srgbDerived :: Color (Derived.SRGB 'D65) f, g2) = makeRandomRGB g1+  let !(srgb :: Color (SRGB 'NonLinear) f, g1) = makeRandomRGB g0+      !(srgbDerived :: Color (Derived.SRGB 'D65 'NonLinear) f, g2) = makeRandomRGB g1       !(xyz :: Color (XYZ D65) f) = toColorXYZ srgb       !(xyzDerived :: Color (XYZ 'D65) f) = toColorXYZ srgbDerived       !(srgbColour :: Colour.Colour f, g3) = makeRandomColour g2
src/Graphics/Color/Adaptation/Internal.hs view
@@ -52,8 +52,8 @@ chromaticAdaptation ::      ChromaticAdaptation t it ir e   => Adaptation t it ir e-  -> Gamut cst it e-  -> Gamut csr ir e+  -> Gamut cs it e+  -> Gamut cs ir e chromaticAdaptation adaptation g = Gamut redPrimary greenPrimary bluePrimary   where     applyMatrix primary =
src/Graphics/Color/Adaptation/VonKries.hs view
@@ -11,7 +11,7 @@ {-# LANGUAGE TypeInType #-} -- | -- Module      : Graphics.Color.Adaptation.VonKries--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -33,9 +33,6 @@   , ciecat02Adaptation   , cmccat2000Adaptation   , adaptationMatrix-  -- * Deprecated-  , CIECAM02-  , ciecam02Adaptation   ) where  import Data.Coerce@@ -52,14 +49,14 @@   --   -- >>> cat :: CAT 'VonKries Float   -- CAT VonKries 'VonKries Float-  -- [ [ 0.400240, 0.707600,-0.080810 ]-  -- , [-0.226300, 1.165320, 0.045700 ]-  -- , [ 0.000000, 0.000000, 0.918220 ] ]+  -- [ [ 0.40024000, 0.70760000,-0.08081000 ]+  -- , [-0.22630000, 1.16532000, 0.04570000 ]+  -- , [ 0.00000000, 0.00000000, 0.91822000 ] ]   -- >>> icat :: ICAT 'VonKries Float   -- ICAT VonKries 'VonKries Float-  -- [ [ 1.859936,-1.129382, 0.219897 ]-  -- , [ 0.361191, 0.638812,-0.000006 ]-  -- , [-0.000000,-0.000000, 1.089064 ] ]+  -- [ [ 1.85993650,-1.12938170, 0.21989742 ]+  -- , [ 0.36119142, 0.63881250,-0.00000637 ]+  -- , [-0.00000000,-0.00000000, 1.08906360 ] ]   --   -- @since 0.1.0   | Bradford@@ -67,14 +64,14 @@   --   -- >>> cat :: CAT 'Bradford Float   -- CAT VonKries 'Bradford Float-  -- [ [ 0.895100, 0.266400,-0.161400 ]-  -- , [-0.750200, 1.713500, 0.036700 ]-  -- , [ 0.038900,-0.068500, 1.029600 ] ]+  -- [ [ 0.89510000, 0.26640000,-0.16140000 ]+  -- , [-0.75020000, 1.71350000, 0.03670000 ]+  -- , [ 0.03890000,-0.06850000, 1.02960000 ] ]   -- >>> icat :: ICAT 'Bradford Float   -- ICAT VonKries 'Bradford Float-  -- [ [ 0.986993,-0.147054, 0.159963 ]-  -- , [ 0.432305, 0.518360, 0.049291 ]-  -- , [-0.008529, 0.040043, 0.968487 ] ]+  -- [ [ 0.98699290,-0.14705427, 0.15996265 ]+  -- , [ 0.43230528, 0.51836026, 0.04929122 ]+  -- , [-0.00852867, 0.04004282, 0.96848667 ] ]   --   -- @since 0.1.0   | Fairchild@@ -82,14 +79,14 @@   --   -- >>> cat :: CAT 'Fairchild Float   -- CAT VonKries 'Fairchild Float-  -- [ [ 0.856200, 0.337200,-0.193400 ]-  -- , [-0.836000, 1.832700, 0.003300 ]-  -- , [ 0.035700,-0.046900, 1.011200 ] ]+  -- [ [ 0.85620000, 0.33720000,-0.19340000 ]+  -- , [-0.83600000, 1.83270000, 0.00330000 ]+  -- , [ 0.03570000,-0.04690000, 1.01120000 ] ]   -- >>> icat :: ICAT 'Fairchild Float   -- ICAT VonKries 'Fairchild Float-  -- [ [ 0.987400,-0.176825, 0.189425 ]-  -- , [ 0.450435, 0.464933, 0.084632 ]-  -- , [-0.013968, 0.027807, 0.986162 ] ]+  -- [ [ 0.98739994,-0.17682500, 0.18942511 ]+  -- , [ 0.45043513, 0.46493286, 0.08463200 ]+  -- , [-0.01396833, 0.02780657, 0.98616177 ] ]   --   -- @since 0.1.0   | CIECAT02@@ -97,14 +94,14 @@   --   -- >>> cat :: CAT 'CIECAT02 Float   -- CAT VonKries 'CIECAT02 Float-  -- [ [ 0.732800, 0.429600,-0.162400 ]-  -- , [-0.703600, 1.697500, 0.006100 ]-  -- , [ 0.003000, 0.013600, 0.983400 ] ]+  -- [ [ 0.73280000, 0.42960000,-0.16240000 ]+  -- , [-0.70360000, 1.69750000, 0.00610000 ]+  -- , [ 0.00300000, 0.01360000, 0.98340000 ] ]   -- >>> icat :: ICAT 'CIECAT02 Float   -- ICAT VonKries 'CIECAT02 Float-  -- [ [ 1.096124,-0.278869, 0.182745 ]-  -- , [ 0.454369, 0.473533, 0.072098 ]-  -- , [-0.009628,-0.005698, 1.015326 ] ]+  -- [ [ 1.09612380,-0.27886900, 0.18274519 ]+  -- , [ 0.45436904, 0.47353318, 0.07209781 ]+  -- , [-0.00962761,-0.00569803, 1.01532570 ] ]   --   -- @since 0.1.3   | CMCCAT2000@@ -112,14 +109,14 @@   --   -- >>> cat :: CAT 'CMCCAT2000 Float   -- CAT VonKries 'CMCCAT2000 Float-  -- [ [ 0.798200, 0.338900,-0.137100 ]-  -- , [-0.591800, 1.551200, 0.040600 ]-  -- , [ 0.000800, 0.023900, 0.975300 ] ]+  -- [ [ 0.79820000, 0.33890000,-0.13710000 ]+  -- , [-0.59180000, 1.55120000, 0.04060000 ]+  -- , [ 0.00080000, 0.02390000, 0.97530000 ] ]   -- >>> icat :: ICAT 'CMCCAT2000 Float   -- ICAT VonKries 'CMCCAT2000 Float-  -- [ [ 1.076450,-0.237662, 0.161212 ]-  -- , [ 0.410964, 0.554342, 0.034694 ]-  -- , [-0.010954,-0.013389, 1.024343 ] ]+  -- [ [ 1.07645010,-0.23766239, 0.16121234 ]+  -- , [ 0.41096430, 0.55434180, 0.03469386 ]+  -- , [-0.01095376,-0.01338936, 1.02434310 ] ]   --   -- @since 0.1.3 @@ -238,14 +235,6 @@ cmccat2000Adaptation :: ChromaticAdaptation 'CMCCAT2000 it ir e => Adaptation 'CIECAT02 it ir e cmccat2000Adaptation = adaptationMatrix {-# INLINE cmccat2000Adaptation #-}--type CIECAM02 = 'CIECAT02-{-# DEPRECATED CIECAM02 "In favor of a proper name 'CIECAT02'" #-}--ciecam02Adaptation :: ChromaticAdaptation CIECAM02 it ir e => Adaptation CIECAM02 it ir e-ciecam02Adaptation = adaptationMatrix-{-# INLINE ciecam02Adaptation #-}-{-# DEPRECATED ciecam02Adaptation "In favor of a proper name 'ciecat02Adaptation'" #-}  -- | This function allows conversion of a color between any two color spaces. It uses a -- very common `VonKries` chromatic adaptation transform with `Bradford` matrix. One of
src/Graphics/Color/Algebra.hs view
@@ -4,7 +4,7 @@ {-# LANGUAGE ScopedTypeVariables #-} -- | -- Module      : Graphics.Color.Algebra--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental
src/Graphics/Color/Algebra/Binary.hs view
@@ -8,7 +8,7 @@ {-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.Color.Algebra.Binary--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -29,7 +29,6 @@ import qualified Data.Vector.Generic as V import qualified Data.Vector.Generic.Mutable as M import qualified Data.Vector.Unboxed as U-import Data.Word (Word8) import Foreign.Storable import Graphics.Color.Algebra.Elevator import Prelude hiding (map)@@ -158,6 +157,8 @@   fromRealFloat 0 = Bit 0   fromRealFloat _ = Bit 1   {-# INLINE fromRealFloat #-}+  (//) (Bit x) (Bit y) = Bit (x `div` y)+  {-# INLINE (//) #-}   instance Num Bit where
src/Graphics/Color/Algebra/Elevator.hs view
@@ -5,7 +5,7 @@ {-# LANGUAGE ScopedTypeVariables #-} -- | -- Module      : Graphics.Color.Algebra.Elevator--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -26,6 +26,8 @@ import GHC.Float import Text.Printf +infixl 7 //+ defFieldFormat :: FieldFormat defFieldFormat = FieldFormat Nothing Nothing Nothing Nothing False "" 'v' @@ -74,7 +76,10 @@   fromDouble :: Double -> e   fromDouble = fromRealFloat +  -- | Division that works for integral types as well as floating points. May throw an exception.+  (//) :: e -> e -> e + -- | Lower the precision dropDown :: forall a b. (Integral a, Bounded a, Integral b, Bounded b) => a -> b dropDown !e = fromIntegral $ fromIntegral e `div` ((maxBound :: a) `div`@@ -112,8 +117,9 @@ {-# INLINE float2Word32 #-}  -- | Same as:--- λ> fromIntegral (maxBound :: Word32) :: Float+-- >>> fromIntegral (maxBound :: Word32) :: Float -- 4.2949673e9+-- maxWord32 :: Float maxWord32 = F# 4.2949673e9# {-# INLINE maxWord32 #-}@@ -127,10 +133,11 @@     d = maxWord64 * d' {-# INLINE double2Word64 #-} --- | Differs from `fromIntegral` due to: https://gitlab.haskell.org/ghc/ghc/issues/17782+-- | Differs from `fromIntegral` due to: [GHC #17782](https://gitlab.haskell.org/ghc/ghc/issues/17782) ----- λ> fromIntegral (maxBound :: Word64) :: Double+-- >>> fromIntegral (maxBound :: Word64) :: Double -- 1.844674407370955e19+-- maxWord64 :: Double maxWord64 = D# 1.8446744073709552e19## {-# INLINE maxWord64 #-}@@ -165,6 +172,8 @@   {-# INLINE toRealFloat #-}   fromRealFloat = toWord8   {-# INLINE fromRealFloat #-}+  (//) = div+  {-# INLINE (//) #-}   -- | Values between @[0, 65535]]@@@ -190,6 +199,8 @@   {-# INLINE toRealFloat #-}   fromRealFloat = toWord16   {-# INLINE fromRealFloat #-}+  (//) = div+  {-# INLINE (//) #-}   -- | Values between @[0, 4294967295]@@@ -215,6 +226,8 @@   {-# INLINE toRealFloat #-}   fromRealFloat = toWord32   {-# INLINE fromRealFloat #-}+  (//) = div+  {-# INLINE (//) #-}   -- | Values between @[0, 18446744073709551615]@@@ -240,6 +253,8 @@   {-# INLINE toRealFloat #-}   fromRealFloat = toWord64   {-# INLINE fromRealFloat #-}+  (//) = div+  {-# INLINE (//) #-}  -- | Values between @[0, 18446744073709551615]@ on 64bit instance Elevator Word where@@ -272,6 +287,8 @@   {-# INLINE toRealFloat #-}   fromRealFloat = stretch   {-# INLINE fromRealFloat #-}+  (//) = div+  {-# INLINE (//) #-}  -- | Values between @[0, 127]@ instance Elevator Int8 where@@ -292,6 +309,8 @@   {-# INLINE toRealFloat #-}   fromRealFloat = stretch   {-# INLINE fromRealFloat #-}+  (//) = div+  {-# INLINE (//) #-}   -- | Values between @[0, 32767]@@@ -313,6 +332,8 @@   {-# INLINE toRealFloat #-}   fromRealFloat = stretch   {-# INLINE fromRealFloat #-}+  (//) = div+  {-# INLINE (//) #-}   -- | Values between @[0, 2147483647]@@@ -334,6 +355,8 @@   {-# INLINE toRealFloat #-}   fromRealFloat = stretch   {-# INLINE fromRealFloat #-}+  (//) = div+  {-# INLINE (//) #-}   -- | Values between @[0, 9223372036854775807]@@@ -355,6 +378,8 @@   {-# INLINE toRealFloat #-}   fromRealFloat = stretch   {-# INLINE fromRealFloat #-}+  (//) = div+  {-# INLINE (//) #-}   -- | Values between @[0, 9223372036854775807]@ on 64bit@@ -382,13 +407,15 @@   {-# INLINE toRealFloat #-}   fromRealFloat = stretch   {-# INLINE fromRealFloat #-}+  (//) = div+  {-# INLINE (//) #-}   -- | Values between @[0.0, 1.0]@ instance Elevator Float where   maxValue = 1   minValue = 0-  fieldFormat _ = defFieldFormat { fmtWidth = Just 9, fmtPrecision = Just 6, fmtChar = 'f'}+  fieldFormat _ = defFieldFormat { fmtWidth = Just 11, fmtPrecision = Just 8, fmtChar = 'f'}   toWord8 = stretch   {-# INLINE toWord8 #-}   toWord16 = stretch@@ -407,13 +434,15 @@   {-# INLINE toRealFloat #-}   fromRealFloat = uncurry encodeFloat . decodeFloat   {-# INLINE fromRealFloat #-}+  (//) = (/)+  {-# INLINE (//) #-}   -- | Values between @[0.0, 1.0]@ instance Elevator Double where   maxValue = 1   minValue = 0-  fieldFormat _ = defFieldFormat { fmtWidth = Just 15, fmtPrecision = Just 12, fmtChar = 'f' }+  fieldFormat _ = defFieldFormat { fmtWidth = Just 19, fmtPrecision = Just 16, fmtChar = 'f' }   toWord8 = stretch   {-# INLINE toWord8 #-}   toWord16 = stretch@@ -432,6 +461,8 @@   {-# INLINE toRealFloat #-}   fromRealFloat = uncurry encodeFloat . decodeFloat   {-# INLINE fromRealFloat #-}+  (//) = (/)+  {-# INLINE (//) #-}  {-# RULES "toRealFloat   :: Double -> Double / Float -> Float" toRealFloat = id@@ -467,3 +498,5 @@   {-# INLINE toRealFloat #-}   fromRealFloat = (:+ 0) . fromRealFloat   {-# INLINE fromRealFloat #-}+  (//) = (/)+  {-# INLINE (//) #-}
src/Graphics/Color/Illuminant/CIE1931.hs view
@@ -89,7 +89,7 @@   whitePoint = WhitePoint 0.29903 0.31488   colorTemperature = rectifyColorTemperature 7500 1.4380 --- | @[x=1/3, y=1/3]@ - CIE 1931 2° Observer -+-- | @[x=1\/3, y=1\/3]@ - CIE 1931 2° Observer - -- /https://www.colour-science.org/ instance Illuminant 'E   where   type Temperature 'E = 5454
src/Graphics/Color/Illuminant/CIE1964.hs view
@@ -71,7 +71,7 @@   whitePoint = WhitePoint 0.29968 0.31740   colorTemperature = I2.rectifyColorTemperature 7500 1.4380 --- | @[x=1/3, y=1/3]@ - CIE 1964 10° Observer -+-- | @[x=1\/3, y=1\/3]@ - CIE 1964 10° Observer - -- /https://www.colour-science.org/ instance Illuminant 'E   where   type Temperature 'E = 5454
src/Graphics/Color/Illuminant/ICC/PCS.hs view
@@ -4,7 +4,7 @@ {-# LANGUAGE DataKinds #-} -- | -- Module      : Graphics.Color.Illuminant.ICC.PCS--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -20,9 +20,9 @@ -- white point defined in ICC PCS. Useful for chromatic adaptation. -- -- >>> whitePoint :: WhitePoint D50 Double--- WhitePoint (Chromaticity <CIExyY * D50:( 0.345702914919, 0.358538596680)>)+-- WhitePoint (Chromaticity {chromaticityCIExyY = <CIExyY * D50:( 0.3457029149190000, 0.3585385966800000)>}) -- >>> whitePointTristimulus :: Color (XYZ D50) Float--- <XYZ * D50:( 0.964200, 1.000000, 0.824900)>+-- <XYZ * D50:( 0.96420000, 1.00000000, 0.82490010)> -- >>> colorTemperature :: CCT D50 -- CCT {unCCT = 5003.0} --
src/Graphics/Color/Illuminant/ITU/Rec470.hs view
@@ -4,7 +4,7 @@ {-# LANGUAGE DataKinds #-} -- | -- Module      : Graphics.Color.Illuminant.ITU.Rec470--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -24,9 +24,9 @@ -- declaration in here. -- -- >>> whitePoint :: WhitePoint C Float--- WhitePoint (Chromaticity <CIExyY * C:( 0.310000, 0.316000)>)+-- WhitePoint (Chromaticity {chromaticityCIExyY = <CIExyY * C:( 0.31000000, 0.31600000)>}) -- >>> whitePointTristimulus :: Color (XYZ C) Float--- <XYZ * C:( 0.981013, 1.000000, 1.183544)>+-- <XYZ * C:( 0.98101264, 1.00000000, 1.18354420)> -- >>> colorTemperature :: CCT C -- CCT {unCCT = 6774.0} --@@ -47,9 +47,9 @@ -- declaration in here. -- -- >>> whitePoint :: WhitePoint D65 Float--- WhitePoint (Chromaticity <CIExyY * D65:( 0.313000, 0.329000)>)+-- WhitePoint (Chromaticity {chromaticityCIExyY = <CIExyY * D65:( 0.31300000, 0.32900000)>}) -- >>> whitePointTristimulus :: Color (XYZ D65) Float--- <XYZ * D65:( 0.951368, 1.000000, 1.088146)>+-- <XYZ * D65:( 0.95136780, 1.00000000, 1.08814610)> -- >>> colorTemperature :: CCT D65 -- CCT {unCCT = 6504.0} --
src/Graphics/Color/Illuminant/ITU/Rec601.hs view
@@ -4,7 +4,7 @@ {-# LANGUAGE DataKinds #-} -- | -- Module      : Graphics.Color.Illuminant.ITU.Rec601--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -22,9 +22,9 @@ -- `Graphics.Color.Illuminant.ITU.Rec470.D65` specified in Rec.470. -- -- >>> whitePoint :: WhitePoint D65 Float--- WhitePoint (Chromaticity <CIExyY * D65:( 0.312700, 0.329000)>)+-- WhitePoint (Chromaticity {chromaticityCIExyY = <CIExyY * D65:( 0.31270000, 0.32900000)>}) -- >>> whitePointTristimulus :: Color (XYZ D65) Float--- <XYZ * D65:( 0.950456, 1.000000, 1.089058)>+-- <XYZ * D65:( 0.95045596, 1.00000000, 1.08905770)> -- >>> colorTemperature :: CCT D65 -- CCT {unCCT = 6504.0} --
src/Graphics/Color/Illuminant/Wikipedia.hs view
@@ -51,7 +51,7 @@   type Temperature 'D75 = 7504   whitePoint = WhitePoint 0.29902 0.31485 --- | @[x=1/3, y=1/3]@ - 2° Observer - Wikipedia+-- | @[x=1\/3, y=1\/3]@ - 2° Observer - Wikipedia instance Illuminant 'E   where   type Temperature 'E = 5454   whitePoint = WhitePoint (1 / 3) (1 / 3)
src/Graphics/Color/Model.hs view
@@ -1,6 +1,6 @@ -- | -- Module      : Graphics.Color.Model--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -40,7 +40,7 @@ import Graphics.Color.Model.HSI import Graphics.Color.Model.HSL import Graphics.Color.Model.HSV-import Graphics.Color.Model.Internal+import Graphics.Color.Model.Internal hiding (MVector, Vector) import Graphics.Color.Model.RGB import Graphics.Color.Model.Y import Graphics.Color.Model.YCbCr
src/Graphics/Color/Model/CMYK.hs view
@@ -8,7 +8,7 @@ {-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.Color.Model.CMYK--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental
src/Graphics/Color/Model/HSI.hs view
@@ -11,7 +11,7 @@ {-# LANGUAGE ViewPatterns #-} -- | -- Module      : Graphics.Color.Model.HSI--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental
src/Graphics/Color/Model/HSL.hs view
@@ -11,7 +11,7 @@ {-# LANGUAGE ViewPatterns #-} -- | -- Module      : Graphics.Color.Model.HSL--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental
src/Graphics/Color/Model/HSV.hs view
@@ -11,7 +11,7 @@ {-# LANGUAGE ViewPatterns #-} -- | -- Module      : Graphics.Color.Model.HSV--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental
src/Graphics/Color/Model/Internal.hs view
@@ -8,7 +8,7 @@ {-# LANGUAGE UndecidableInstances #-} -- | -- Module      : Graphics.Color.Model.Internal--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental
src/Graphics/Color/Model/RGB.hs view
@@ -11,7 +11,7 @@ {-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.Color.Model.RGB--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental
src/Graphics/Color/Model/Y.hs view
@@ -9,7 +9,7 @@ {-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.Color.Model.Y--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental
src/Graphics/Color/Model/YCbCr.hs view
@@ -13,7 +13,7 @@ {-# LANGUAGE UndecidableInstances #-} -- | -- Module      : Graphics.Color.Model.YCbCr--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental
src/Graphics/Color/Space.hs view
@@ -2,7 +2,7 @@ {-# LANGUAGE ScopedTypeVariables #-} -- | -- Module      : Graphics.Color.Space--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental
+ src/Graphics/Color/Space/CIE1931/RGB.hs view
@@ -0,0 +1,107 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+-- |+-- Module      : Graphics.Color.Space.CIE1931.RGB+-- Copyright   : (c) Alexey Kuleshevich 2018-2020+-- License     : BSD3+-- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru>+-- Stability   : experimental+-- Portability : non-portable+--+module Graphics.Color.Space.CIE1931.RGB+  ( CIERGB+  , primaries+  , castLinearity+  , module Graphics.Color.Space+  ) where++import Data.Coerce+import Data.Typeable+import Foreign.Storable+import Graphics.Color.Model.Internal+import qualified Graphics.Color.Model.RGB as CM+import Graphics.Color.Space+import Graphics.Color.Illuminant.CIE1931+++-- | The original @CIE1931 RGB@ color space with an arbitrary illuminant+data CIERGB (l :: Linearity)++-- | `CIERGB` color space+newtype instance Color (CIERGB l) e = CIERGB (Color CM.RGB e)++-- | `CIERGB` color space+deriving instance Eq e => Eq (Color (CIERGB l) e)+-- | `CIERGB` color space+deriving instance Ord e => Ord (Color (CIERGB l) e)+-- | `CIERGB` color space+deriving instance Functor (Color (CIERGB l))+-- | `CIERGB` color space+deriving instance Applicative (Color (CIERGB l))+-- | `CIERGB` color space+deriving instance Foldable (Color (CIERGB l))+-- | `CIERGB` color space+deriving instance Traversable (Color (CIERGB l))+-- | `CIERGB` color space+deriving instance Storable e => Storable (Color (CIERGB l) e)++-- | `CIERGB` color space+instance (Typeable l, Elevator e) => Show (Color (CIERGB l) e) where+  showsPrec _ = showsColorModel++-- | `CIERGB` color space+instance (Typeable l, Elevator e) => ColorModel (CIERGB l) e where+  type Components (CIERGB l) e = (e, e, e)+  toComponents = toComponents . unColorRGB+  {-# INLINE toComponents #-}+  fromComponents = mkColorRGB . fromComponents+  {-# INLINE fromComponents #-}++-- | `CIERGB` linear color space+instance (Typeable l, Elevator e) => ColorSpace (CIERGB l) 'E e where+  type BaseModel (CIERGB l) = CM.RGB+  toBaseSpace = id+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = id+  {-# INLINE fromBaseSpace #-}+  luminance = rgbLinearLuminance . castLinearity . fmap toRealFloat+  {-# INLINE luminance #-}+  toColorXYZ = rgbLinear2xyz . fmap toRealFloat . castLinearity+  {-# INLINE toColorXYZ #-}+  fromColorXYZ xyz = castLinearity (fromRealFloat <$> (xyz2rgbLinear @CIERGB xyz))+  {-# INLINE fromColorXYZ #-}++-- | `CIERGB` color space+instance RedGreenBlue CIERGB 'E where+  gamut = primaries+  ecctf = coerce+  {-# INLINE ecctf #-}+  dcctf = coerce+  {-# INLINE dcctf #-}++-- | CIE RGB does not utilize any gamma function, therefore it is safe to cast the+-- `Linearity` kind.+--+-- @since 0.2.0+castLinearity :: Color (CIERGB l') e -> Color (CIERGB l) e+castLinearity = coerce+++-- | Primaries for CIERGB+--+-- @since 0.2.0+primaries :: RealFloat e => Gamut rgb i e+primaries = Gamut (Primary 0.734742840005998 0.265257159994002)+                  (Primary 0.273779033824958 0.717477700256116)+                  (Primary 0.166555629580280 0.008910726182545)+-- Source ^: https://github.com/colour-science/colour/blob/60679360c3990bc549b5f947bfeb621383e18b5e/colour/models/rgb/datasets/cie_rgb.py#L44-L48
src/Graphics/Color/Space/CIE1976/LAB.hs view
@@ -11,7 +11,7 @@ {-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.Color.Space.CIE1976.LAB--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental
src/Graphics/Color/Space/Internal.hs view
@@ -16,7 +16,7 @@ {-# LANGUAGE ViewPatterns #-} -- | -- Module      : Graphics.Color.Space.Internal--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2018-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -106,7 +106,6 @@  instance ( ColorSpace cs i e          , ColorSpace (BaseSpace cs) i e-         , ColorSpace (Alpha (BaseSpace cs)) i e          , cs ~ Opaque (Alpha cs)          , BaseModel cs ~ Opaque (Alpha (BaseModel cs))          ) =>@@ -130,7 +129,7 @@  -- | This is a data type that encodes a data point on the chromaticity diagram newtype Chromaticity i e =-  Chromaticity (Color (CIExyY i) e)+  Chromaticity { chromaticityCIExyY :: Color (CIExyY i) e }   deriving (Eq, Show)  @@ -152,7 +151,7 @@   newtype WhitePoint (i :: k) e =-  WhitePointChromaticity (Chromaticity i e)+  WhitePointChromaticity { whitePointChromaticity :: Chromaticity i e }   deriving (Eq)  instance (Illuminant i, Elevator e) => Show (WhitePoint (i :: k) e) where@@ -217,8 +216,11 @@ -- Primary -- ------------- -newtype Primary (i :: k) e = PrimaryChromaticity (Chromaticity i e)- deriving (Eq, Show)+newtype Primary (i :: k) e =+  PrimaryChromaticity+    { primaryChromaticity :: Chromaticity i e+    }+  deriving (Eq, Show)   -- | Constructor for the most common @XYZ@ color space
src/Graphics/Color/Space/RGB.hs view
@@ -7,7 +7,6 @@ -- Stability   : experimental -- Portability : non-portable --- module Graphics.Color.Space.RGB   ( -- * Default sRGB color space     pattern ColorSRGB
src/Graphics/Color/Space/RGB/AdobeRGB.hs view
@@ -11,7 +11,7 @@ {-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.Color.Space.RGB.AdobeRGB--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -32,6 +32,8 @@   , module Graphics.Color.Space   ) where +import Data.Typeable+import Data.Coerce import Foreign.Storable import Graphics.Color.Model.Internal import qualified Graphics.Color.Model.RGB as CM@@ -43,59 +45,73 @@ -- color space with the default `D65` illuminant -- -- @since 0.1.0-data AdobeRGB+data AdobeRGB (l :: Linearity) -newtype instance Color AdobeRGB e = AdobeRGB (Color CM.RGB e)+newtype instance Color (AdobeRGB l) e = AdobeRGB (Color CM.RGB e)  -- | Constructor for a color in @AdobeRGB@ color space -- -- @since 0.1.0-pattern ColorAdobeRGB :: e -> e -> e -> Color AdobeRGB e+pattern ColorAdobeRGB :: e -> e -> e -> Color (AdobeRGB l) e pattern ColorAdobeRGB r g b = AdobeRGB (CM.ColorRGB r g b) {-# COMPLETE ColorAdobeRGB #-}  -- | Constructor for a color in @AdobeRGB@ color space with alpha channel -- -- @since 0.1.0-pattern ColorAdobeRGBA :: e -> e -> e -> e -> Color (Alpha AdobeRGB) e+pattern ColorAdobeRGBA :: e -> e -> e -> e -> Color (Alpha (AdobeRGB l)) e pattern ColorAdobeRGBA r g b a = Alpha (AdobeRGB (CM.ColorRGB r g b)) a {-# COMPLETE ColorAdobeRGBA #-}  --- | Adobe`RGB` color space-deriving instance Eq e => Eq (Color AdobeRGB e)--- | Adobe`RGB` color space-deriving instance Ord e => Ord (Color AdobeRGB e)--- | Adobe`RGB` color space-deriving instance Functor (Color AdobeRGB)--- | Adobe`RGB` color space-deriving instance Applicative (Color AdobeRGB)--- | Adobe`RGB` color space-deriving instance Foldable (Color AdobeRGB)--- | Adobe`RGB` color space-deriving instance Traversable (Color AdobeRGB)--- | Adobe`RGB` color space-deriving instance Storable e => Storable (Color AdobeRGB e)+-- | `AdobeRGB` color space+deriving instance Eq e => Eq (Color (AdobeRGB l) e)+-- | `AdobeRGB` color space+deriving instance Ord e => Ord (Color (AdobeRGB l) e)+-- | `AdobeRGB` color space+deriving instance Functor (Color (AdobeRGB l))+-- | `AdobeRGB` color space+deriving instance Applicative (Color (AdobeRGB l))+-- | `AdobeRGB` color space+deriving instance Foldable (Color (AdobeRGB l))+-- | `AdobeRGB` color space+deriving instance Traversable (Color (AdobeRGB l))+-- | `AdobeRGB` color space+deriving instance Storable e => Storable (Color (AdobeRGB l) e) --- | Adobe`RGB` color space-instance Elevator e => Show (Color AdobeRGB e) where+-- | `AdobeRGB` color space+instance (Typeable l, Elevator e) => Show (Color (AdobeRGB l) e) where   showsPrec _ = showsColorModel --- | Adobe`RGB` color space-instance Elevator e => ColorModel AdobeRGB e where-  type Components AdobeRGB e = (e, e, e)+-- | `AdobeRGB` color space+instance (Typeable l, Elevator e) => ColorModel (AdobeRGB l) e where+  type Components (AdobeRGB l) e = (e, e, e)   toComponents = toComponents . unColorRGB   {-# INLINE toComponents #-}   fromComponents = mkColorRGB . fromComponents   {-# INLINE fromComponents #-} --- | Adobe`RGB` color space-instance Elevator e => ColorSpace AdobeRGB D65 e where-  type BaseModel AdobeRGB = CM.RGB+-- | `AdobeRGB` linear color space+instance Elevator e => ColorSpace (AdobeRGB 'Linear) D65 e where+  type BaseModel (AdobeRGB 'Linear) = CM.RGB   toBaseSpace = id   {-# INLINE toBaseSpace #-}   fromBaseSpace = id   {-# INLINE fromBaseSpace #-}+  luminance = rgbLinearLuminance . fmap toRealFloat+  {-# INLINE luminance #-}+  toColorXYZ = rgbLinear2xyz . fmap toRealFloat+  {-# INLINE toColorXYZ #-}+  fromColorXYZ = fmap fromRealFloat . xyz2rgbLinear+  {-# INLINE fromColorXYZ #-}++-- | `AdobeRGB` color space+instance Elevator e => ColorSpace (AdobeRGB 'NonLinear) D65 e where+  type BaseModel (AdobeRGB 'NonLinear) = CM.RGB+  toBaseSpace = id+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = id+  {-# INLINE fromBaseSpace #-}   luminance = rgbLuminance . fmap toRealFloat   {-# INLINE luminance #-}   toColorXYZ = rgb2xyz . fmap toRealFloat@@ -103,25 +119,24 @@   fromColorXYZ = fmap fromRealFloat . xyz2rgb   {-# INLINE fromColorXYZ #-} ---- | Adobe`RGB` color space+-- | `AdobeRGB` color space instance RedGreenBlue AdobeRGB D65 where   gamut = primaries   npm = npmStandard   inpm = inpmStandard-  ecctf = fmap transfer+  ecctf = AdobeRGB . fmap transfer . coerce   {-# INLINE ecctf #-}-  dcctf = fmap itransfer+  dcctf = AdobeRGB . fmap itransfer . coerce   {-# INLINE dcctf #-} --- | sRGB normalized primary matrix. This is a helper definition, use `npm` instead.+-- | AdobeRGB normalized primary matrix. This is a helper definition, use `npm` instead. -- -- >>> :set -XDataKinds -- >>> import Graphics.Color.Space.RGB.AdobeRGB -- >>> npmStandard :: NPM AdobeRGB Float--- [ [ 0.576670, 0.185560, 0.188230 ]--- , [ 0.297340, 0.627360, 0.075290 ]--- , [ 0.027030, 0.070690, 0.991340 ] ]+-- [ [ 0.57667000, 0.18556000, 0.18823000 ]+-- , [ 0.29734000, 0.62736000, 0.07529000 ]+-- , [ 0.02703000, 0.07069000, 0.99134000 ] ] -- -- @since 0.1.0 npmStandard :: RealFloat e => NPM AdobeRGB e@@ -130,14 +145,14 @@                          (V3 0.02703 0.07069 0.99134)  --- | sRGB inverse normalized primary matrix. This is a helper definition, use `inpm` instead.+-- | AdobeRGB inverse normalized primary matrix. This is a helper definition, use `inpm` instead. -- -- >>> :set -XDataKinds -- >>> import Graphics.Color.Space.RGB.AdobeRGB -- >>> inpmStandard :: INPM AdobeRGB Float--- [ [ 2.041590,-0.565010,-0.344730 ]--- , [-0.969240, 1.875970, 0.041560 ]--- , [ 0.013440,-0.118360, 1.015170 ] ]+-- [ [ 2.04159000,-0.56501000,-0.34473000 ]+-- , [-0.96924000, 1.87597000, 0.04156000 ]+-- , [ 0.01344000,-0.11836000, 1.01517000 ] ] -- -- @since 0.1.0 inpmStandard :: RealFloat e => INPM AdobeRGB e@@ -170,7 +185,7 @@ itransfer u = u ** 2.19921875 -- in rational form 563/256 {-# INLINE itransfer #-} --- | @sRGB@ primaries+-- | @AdobeRGB@ primaries -- -- @since 0.1.0 primaries :: RealFloat e => Gamut rgb i e
src/Graphics/Color/Space/RGB/Alternative.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE PatternSynonyms #-} -- | -- Module      : Graphics.Color.Space.RGB.Alternative--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental
src/Graphics/Color/Space/RGB/Alternative/CMYK.hs view
@@ -12,7 +12,7 @@ {-# LANGUAGE UndecidableInstances #-} -- | -- Module      : Graphics.Color.Space.RGB.Alternative.CMYK--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -33,7 +33,13 @@ import qualified Graphics.Color.Model.CMYK as CM import Graphics.Color.Model.Internal import Graphics.Color.Space+import Graphics.Color.Space.RGB.AdobeRGB as AdobeRGB+import qualified Graphics.Color.Space.RGB.ITU.Rec470 as Rec470+import Graphics.Color.Space.RGB.ITU.Rec601+import Graphics.Color.Space.RGB.ITU.Rec709+import Graphics.Color.Space.RGB.SRGB + -- | `CMYK` representation for some (@`RedGreenBlue` cs i@) color space data CMYK cs @@ -80,9 +86,89 @@   -- | `CMYK` representation for some (@`RedGreenBlue` cs i@) color space-instance (Typeable cs, ColorSpace cs i e, RedGreenBlue cs i) => ColorSpace (CMYK cs) i e where-  type BaseModel (CMYK cs) = CM.CMYK-  type BaseSpace (CMYK cs) = cs+instance (Typeable cs, ColorSpace (cs i l) i e, RedGreenBlue (cs i) i) =>+         ColorSpace (CMYK (cs i l)) i e where+  type BaseModel (CMYK (cs i l)) = CM.CMYK+  type BaseSpace (CMYK (cs i l)) = cs i l+  toBaseSpace = mkColorRGB . fmap fromDouble . CM.cmyk2rgb . fmap toDouble . coerce+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = coerce . fmap fromDouble . CM.rgb2cmyk . fmap toDouble . unColorRGB+  {-# INLINE fromBaseSpace #-}+  luminance = luminance . toBaseSpace+  {-# INLINE luminance #-}++++-- | `CMYK` representation for `SRGB` color space+instance ColorSpace (SRGB l) D65 e => ColorSpace (CMYK (SRGB l)) D65 e where+  type BaseModel (CMYK (SRGB l)) = CM.CMYK+  type BaseSpace (CMYK (SRGB l)) = SRGB l+  toBaseSpace = mkColorRGB . fmap fromDouble . CM.cmyk2rgb . fmap toDouble . coerce+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = coerce . fmap fromDouble . CM.rgb2cmyk . fmap toDouble . unColorRGB+  {-# INLINE fromBaseSpace #-}+  luminance = luminance . toBaseSpace+  {-# INLINE luminance #-}++-- | `CMYK` representation for `AdobeRGB` color space+instance ColorSpace (AdobeRGB l) D65 e => ColorSpace (CMYK (AdobeRGB l)) D65 e where+  type BaseModel (CMYK (AdobeRGB l)) = CM.CMYK+  type BaseSpace (CMYK (AdobeRGB l)) = AdobeRGB l+  toBaseSpace = mkColorRGB . fmap fromDouble . CM.cmyk2rgb . fmap toDouble . coerce+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = coerce . fmap fromDouble . CM.rgb2cmyk . fmap toDouble . unColorRGB+  {-# INLINE fromBaseSpace #-}+  luminance = luminance . toBaseSpace+  {-# INLINE luminance #-}++-- | `CMYK` representation for `Rec470.BT470_525` color space+instance ColorSpace (Rec470.BT470_525 l) D65 e => ColorSpace (CMYK (Rec470.BT470_525 l)) D65 e where+  type BaseModel (CMYK (Rec470.BT470_525 l)) = CM.CMYK+  type BaseSpace (CMYK (Rec470.BT470_525 l)) = Rec470.BT470_525 l+  toBaseSpace = mkColorRGB . fmap fromDouble . CM.cmyk2rgb . fmap toDouble . coerce+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = coerce . fmap fromDouble . CM.rgb2cmyk . fmap toDouble . unColorRGB+  {-# INLINE fromBaseSpace #-}+  luminance = luminance . toBaseSpace+  {-# INLINE luminance #-}++-- | `CMYK` representation for `Rec470.BT470_625` color space+instance ColorSpace (Rec470.BT470_625 l) D65 e => ColorSpace (CMYK (Rec470.BT470_625 l)) D65 e where+  type BaseModel (CMYK (Rec470.BT470_625 l)) = CM.CMYK+  type BaseSpace (CMYK (Rec470.BT470_625 l)) = Rec470.BT470_625 l+  toBaseSpace = mkColorRGB . fmap fromDouble . CM.cmyk2rgb . fmap toDouble . coerce+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = coerce . fmap fromDouble . CM.rgb2cmyk . fmap toDouble . unColorRGB+  {-# INLINE fromBaseSpace #-}+  luminance = luminance . toBaseSpace+  {-# INLINE luminance #-}++-- | `CMYK` representation for `BT601_525` color space+instance ColorSpace (BT601_525 l) D65 e => ColorSpace (CMYK (BT601_525 l)) D65 e where+  type BaseModel (CMYK (BT601_525 l)) = CM.CMYK+  type BaseSpace (CMYK (BT601_525 l)) = BT601_525 l+  toBaseSpace = mkColorRGB . fmap fromDouble . CM.cmyk2rgb . fmap toDouble . coerce+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = coerce . fmap fromDouble . CM.rgb2cmyk . fmap toDouble . unColorRGB+  {-# INLINE fromBaseSpace #-}+  luminance = luminance . toBaseSpace+  {-# INLINE luminance #-}++-- | `CMYK` representation for `BT601_625` color space+instance ColorSpace (BT601_625 l) D65 e => ColorSpace (CMYK (BT601_625 l)) D65 e where+  type BaseModel (CMYK (BT601_625 l)) = CM.CMYK+  type BaseSpace (CMYK (BT601_625 l)) = BT601_625 l+  toBaseSpace = mkColorRGB . fmap fromDouble . CM.cmyk2rgb . fmap toDouble . coerce+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = coerce . fmap fromDouble . CM.rgb2cmyk . fmap toDouble . unColorRGB+  {-# INLINE fromBaseSpace #-}+  luminance = luminance . toBaseSpace+  {-# INLINE luminance #-}++-- | `CMYK` representation for `BT709` color space+instance ColorSpace (BT709 l) D65 e => ColorSpace (CMYK (BT709 l)) D65 e where+  type BaseModel (CMYK (BT709 l)) = CM.CMYK+  type BaseSpace (CMYK (BT709 l)) = BT709 l   toBaseSpace = mkColorRGB . fmap fromDouble . CM.cmyk2rgb . fmap toDouble . coerce   {-# INLINE toBaseSpace #-}   fromBaseSpace = coerce . fmap fromDouble . CM.rgb2cmyk . fmap toDouble . unColorRGB
src/Graphics/Color/Space/RGB/Alternative/HSI.hs view
@@ -13,7 +13,7 @@ {-# LANGUAGE ViewPatterns #-} -- | -- Module      : Graphics.Color.Space.RGB.Alternative.HSI--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -30,7 +30,6 @@  import Data.Coerce import Data.Proxy-import Data.Typeable import Foreign.Storable import qualified Graphics.Color.Model.HSI as CM import Graphics.Color.Model.Internal@@ -92,9 +91,9 @@   -- | `HSI` representation for some (@`RedGreenBlue` cs i@) color space-instance (Typeable cs, ColorSpace cs i e, RedGreenBlue cs i) => ColorSpace (HSI cs) i e where-  type BaseModel (HSI cs) = CM.HSI-  type BaseSpace (HSI cs) = cs+instance (ColorSpace (cs l) i e, RedGreenBlue cs i) => ColorSpace (HSI (cs l)) i e where+  type BaseModel (HSI (cs l)) = CM.HSI+  type BaseSpace (HSI (cs l)) = cs l   toBaseSpace = mkColorRGB . fmap fromDouble . CM.hsi2rgb . fmap toDouble . coerce   {-# INLINE toBaseSpace #-}   fromBaseSpace = coerce . fmap fromDouble . CM.rgb2hsi . fmap toDouble . unColorRGB
src/Graphics/Color/Space/RGB/Alternative/HSL.hs view
@@ -13,7 +13,7 @@ {-# LANGUAGE ViewPatterns #-} -- | -- Module      : Graphics.Color.Space.RGB.Alternative.HSL--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -30,7 +30,6 @@  import Data.Coerce import Data.Proxy-import Data.Typeable import Foreign.Storable import qualified Graphics.Color.Model.HSL as CM import Graphics.Color.Model.Internal@@ -91,9 +90,9 @@   -- | `HSL` representation for some (@`RedGreenBlue` cs i@) color space-instance (Typeable cs, ColorSpace cs i e, RedGreenBlue cs i) => ColorSpace (HSL cs) i e where-  type BaseModel (HSL cs) = CM.HSL-  type BaseSpace (HSL cs) = cs+instance (ColorSpace (cs l) i e, RedGreenBlue cs i) => ColorSpace (HSL (cs l)) i e where+  type BaseModel (HSL (cs l)) = CM.HSL+  type BaseSpace (HSL (cs l)) = cs l   toBaseSpace = mkColorRGB . fmap fromDouble . CM.hsl2rgb . fmap toDouble . coerce   {-# INLINE toBaseSpace #-}   fromBaseSpace = coerce . fmap fromDouble . CM.rgb2hsl . fmap toDouble . unColorRGB
src/Graphics/Color/Space/RGB/Alternative/HSV.hs view
@@ -13,7 +13,7 @@ {-# LANGUAGE ViewPatterns #-} -- | -- Module      : Graphics.Color.Space.RGB.Alternative.HSV--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -90,9 +90,9 @@   -- | `HSV` representation for some (@`RedGreenBlue` cs i@) color space-instance (ColorSpace cs i e, RedGreenBlue cs i) => ColorSpace (HSV cs) i e where-  type BaseModel (HSV cs) = CM.HSV-  type BaseSpace (HSV cs) = cs+instance (ColorSpace (cs l) i e, RedGreenBlue cs i) => ColorSpace (HSV (cs l)) i e where+  type BaseModel (HSV (cs l)) = CM.HSV+  type BaseSpace (HSV (cs l)) = cs l   toBaseSpace = mkColorRGB . fmap fromDouble . CM.hsv2rgb . fmap toDouble . coerce   {-# INLINE toBaseSpace #-}   fromBaseSpace = coerce . fmap fromDouble . CM.rgb2hsv . fmap toDouble . unColorRGB
src/Graphics/Color/Space/RGB/Alternative/YCbCr.hs view
@@ -13,7 +13,7 @@ {-# LANGUAGE UndecidableInstances #-} -- | -- Module      : Graphics.Color.Space.RGB.Alternative.YCbCr--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -88,9 +88,9 @@   showsColorModelName _ = ("YCbCr-" ++) . showsColorModelName (Proxy :: Proxy (Color cs e))  -- | `YCbCr` representation for `SRGB` color space-instance Elevator e => ColorSpace (YCbCr SRGB) D65 e where-  type BaseModel (YCbCr SRGB) = CM.YCbCr-  type BaseSpace (YCbCr SRGB) = SRGB+instance Elevator e => ColorSpace (YCbCr (SRGB 'NonLinear)) D65 e where+  type BaseModel (YCbCr (SRGB 'NonLinear)) = CM.YCbCr+  type BaseSpace (YCbCr (SRGB 'NonLinear)) = SRGB 'NonLinear   toBaseSpace = fmap fromRealFloat . ycbcr2srgb . fmap toFloat   {-# INLINE toBaseSpace #-}   fromBaseSpace = fmap fromRealFloat . srgb2ycbcr . fmap toFloat@@ -99,9 +99,9 @@   {-# INLINE luminance #-}  -- | `YCbCr` representation for `BT601_525` color space-instance Elevator e => ColorSpace (YCbCr BT601_525) D65 e where-  type BaseModel (YCbCr BT601_525) = CM.YCbCr-  type BaseSpace (YCbCr BT601_525) = BT601_525+instance Elevator e => ColorSpace (YCbCr (BT601_525 'NonLinear)) D65 e where+  type BaseModel (YCbCr (BT601_525 'NonLinear)) = CM.YCbCr+  type BaseSpace (YCbCr (BT601_525 'NonLinear)) = BT601_525 'NonLinear   toBaseSpace = fmap fromDouble . fromColorYCbCr   {-# INLINE toBaseSpace #-}   fromBaseSpace = fmap fromDouble . toColorYCbCr@@ -110,9 +110,9 @@   {-# INLINE luminance #-}  -- | `YCbCr` representation for `BT601_625` color space-instance Elevator e => ColorSpace (YCbCr BT601_625) D65 e where-  type BaseModel (YCbCr BT601_625) = CM.YCbCr-  type BaseSpace (YCbCr BT601_625) = BT601_625+instance Elevator e => ColorSpace (YCbCr (BT601_625 'NonLinear)) D65 e where+  type BaseModel (YCbCr (BT601_625 'NonLinear)) = CM.YCbCr+  type BaseSpace (YCbCr (BT601_625 'NonLinear)) = BT601_625 'NonLinear   toBaseSpace = fmap fromDouble . fromColorYCbCr   {-# INLINE toBaseSpace #-}   fromBaseSpace = fmap fromDouble . toColorYCbCr@@ -121,9 +121,9 @@   {-# INLINE luminance #-}  -- | `YCbCr` representation for `BT709` color space-instance Elevator e => ColorSpace (YCbCr BT709) D65 e where-  type BaseModel (YCbCr BT709) = CM.YCbCr-  type BaseSpace (YCbCr BT709) = BT709+instance Elevator e => ColorSpace (YCbCr (BT709 'NonLinear)) D65 e where+  type BaseModel (YCbCr (BT709 'NonLinear)) = CM.YCbCr+  type BaseSpace (YCbCr (BT709 'NonLinear)) = BT709 'NonLinear   toBaseSpace = fmap fromDouble . fromColorYCbCr   {-# INLINE toBaseSpace #-}   fromBaseSpace = fmap fromDouble . toColorYCbCr@@ -132,10 +132,10 @@   {-# INLINE luminance #-}  -- | `YCbCr` representation for some (@`RedGreenBlue` cs i@) color space-instance (Luma (cs i), ColorSpace (cs i) i e, RedGreenBlue (cs i) i) =>-         ColorSpace (YCbCr (cs i)) i e where-  type BaseModel (YCbCr (cs i)) = CM.YCbCr-  type BaseSpace (YCbCr (cs i)) = cs i+instance (Luma (cs i), ColorSpace (cs i 'NonLinear) i e, RedGreenBlue (cs i) i) =>+         ColorSpace (YCbCr (cs i 'NonLinear)) i e where+  type BaseModel (YCbCr (cs i 'NonLinear)) = CM.YCbCr+  type BaseSpace (YCbCr (cs i 'NonLinear)) = cs i 'NonLinear   toBaseSpace = fmap fromDouble . fromColorYCbCr   {-# INLINE toBaseSpace #-}   fromBaseSpace = fmap fromDouble . toColorYCbCr@@ -147,7 +147,8 @@ -- | This conversion is only correct for sRGB and Rec601. Source: ITU-T Rec. T.871 -- -- @since 0.1.3-ycbcr2srgb :: (RedGreenBlue cs i, RealFloat e) => Color (YCbCr cs) e -> Color cs e+ycbcr2srgb ::+     (RedGreenBlue cs i, RealFloat e) => Color (YCbCr (cs 'NonLinear)) e -> Color (cs 'NonLinear) e ycbcr2srgb (ColorYCbCr y' cb cr) = ColorRGB r' g' b'   where     !cb05 = cb - 0.5@@ -160,7 +161,8 @@ -- | This conversion is only correct for sRGB and Rec601. Source: ITU-T Rec. T.871 -- -- @since 0.1.3-srgb2ycbcr :: (RedGreenBlue cs i, RealFloat e) => Color cs e -> Color (YCbCr cs) e+srgb2ycbcr ::+     (RedGreenBlue cs i, RealFloat e) => Color (cs 'NonLinear) e -> Color (YCbCr (cs 'NonLinear)) e srgb2ycbcr (ColorRGB r' g' b') = ColorYCbCr y' cb cr   where     !y' =          0.299 * r' +    0.587 * g' +    0.114 * b'@@ -173,8 +175,8 @@ -- @since 0.1.3 toColorYCbCr ::      forall cs i e' e. (Luma cs, RedGreenBlue cs i, Elevator e', Elevator e, RealFloat e)-  => Color cs e'-  -> Color (YCbCr cs) e+  => Color (cs 'NonLinear) e'+  -> Color (YCbCr (cs 'NonLinear)) e toColorYCbCr rgb = YCbCr (CM.rgb2ycbcr (unColorRGB rgb) weights)   where     !weights = rgbLumaWeights rgb@@ -185,8 +187,8 @@ -- @since 0.1.3 fromColorYCbCr ::      forall cs i e' e. (Luma cs, RedGreenBlue cs i, Elevator e', Elevator e, RealFloat e)-  => Color (YCbCr cs) e'-  -> Color cs e+  => Color (YCbCr (cs 'NonLinear)) e'+  -> Color (cs 'NonLinear) e fromColorYCbCr ycbcr = rgb   where     !rgb = mkColorRGB (CM.ycbcr2rgb (coerce ycbcr :: Color CM.YCbCr e') weights)
+ src/Graphics/Color/Space/RGB/CIERGB.hs view
@@ -0,0 +1,13 @@+-- |+-- Module      : Graphics.Color.Space.RGB.Derived.CIERGB+-- Copyright   : (c) Alexey Kuleshevich 2020+-- License     : BSD3+-- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru>+-- Stability   : experimental+-- Portability : non-portable+--+module Graphics.Color.Space.RGB.CIERGB+  ( module Graphics.Color.Space.CIE1931.RGB+  ) where++import Graphics.Color.Space.CIE1931.RGB
src/Graphics/Color/Space/RGB/Derived/AdobeRGB.hs view
@@ -11,7 +11,7 @@ {-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.Color.Space.RGB.Derived.AdobeRGB--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -25,6 +25,8 @@   , module Graphics.Color.Space   ) where +import Data.Coerce+import Data.Typeable import Foreign.Storable import Graphics.Color.Model.Internal import qualified Graphics.Color.Model.RGB as CM@@ -33,41 +35,55 @@   -- | The most common @AdobeRGB@ color space with an arbitrary illuminant-data AdobeRGB (i :: k)+data AdobeRGB (i :: k) (l :: Linearity)  -- | `AdobeRGB` color space (derived)-newtype instance Color (AdobeRGB i) e = AdobeRGB (Color CM.RGB e)+newtype instance Color (AdobeRGB i l) e = AdobeRGB (Color CM.RGB e)  -- | `AdobeRGB` color space (derived)-deriving instance Eq e => Eq (Color (AdobeRGB i) e)+deriving instance Eq e => Eq (Color (AdobeRGB i l) e) -- | `AdobeRGB` color space (derived)-deriving instance Ord e => Ord (Color (AdobeRGB i) e)+deriving instance Ord e => Ord (Color (AdobeRGB i l) e) -- | `AdobeRGB` color space (derived)-deriving instance Functor (Color (AdobeRGB i))+deriving instance Functor (Color (AdobeRGB i l)) -- | `AdobeRGB` color space (derived)-deriving instance Applicative (Color (AdobeRGB i))+deriving instance Applicative (Color (AdobeRGB i l)) -- | `AdobeRGB` color space (derived)-deriving instance Foldable (Color (AdobeRGB i))+deriving instance Foldable (Color (AdobeRGB i l)) -- | `AdobeRGB` color space (derived)-deriving instance Traversable (Color (AdobeRGB i))+deriving instance Traversable (Color (AdobeRGB i l)) -- | `AdobeRGB` color space (derived)-deriving instance Storable e => Storable (Color (AdobeRGB i) e)+deriving instance Storable e => Storable (Color (AdobeRGB i l) e)  -- | `AdobeRGB` color space (derived)-instance (Illuminant i, Elevator e) => Show (Color (AdobeRGB (i :: k)) e) where+instance (Typeable l, Illuminant i, Elevator e) => Show (Color (AdobeRGB (i :: k) l) e) where   showsPrec _ = showsColorModel  -- | `AdobeRGB` color space (derived)-instance (Illuminant i, Elevator e) => ColorModel (AdobeRGB (i :: k)) e where-  type Components (AdobeRGB i) e = (e, e, e)+instance (Typeable l, Illuminant i, Elevator e) => ColorModel (AdobeRGB (i :: k) l) e where+  type Components (AdobeRGB i l) e = (e, e, e)   toComponents = toComponents . unColorRGB   {-# INLINE toComponents #-}   fromComponents = mkColorRGB . fromComponents   {-# INLINE fromComponents #-} +-- | `AdobeRGB` linear color space (derived)+instance (Illuminant i, Elevator e) => ColorSpace (AdobeRGB i 'Linear) i e where+  type BaseModel (AdobeRGB i 'Linear) = CM.RGB+  toBaseSpace = id+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = id+  {-# INLINE fromBaseSpace #-}+  luminance = rgbLinearLuminance . fmap toRealFloat+  {-# INLINE luminance #-}+  toColorXYZ = rgbLinear2xyz . fmap toRealFloat+  {-# INLINE toColorXYZ #-}+  fromColorXYZ = fmap fromRealFloat . xyz2rgbLinear+  {-# INLINE fromColorXYZ #-}+ -- | `AdobeRGB` color space (derived)-instance (Illuminant i, Elevator e) => ColorSpace (AdobeRGB i) i e where-  type BaseModel (AdobeRGB i) = CM.RGB+instance (Illuminant i, Elevator e) => ColorSpace (AdobeRGB i 'NonLinear) i e where+  type BaseModel (AdobeRGB i 'NonLinear) = CM.RGB   toBaseSpace = id   {-# INLINE toBaseSpace #-}   fromBaseSpace = id@@ -82,7 +98,7 @@ -- | `AdobeRGB` color space (derived) instance Illuminant i => RedGreenBlue (AdobeRGB i) i where   gamut = AdobeRGB.primaries-  ecctf = fmap AdobeRGB.transfer+  ecctf = AdobeRGB . fmap AdobeRGB.transfer . coerce   {-# INLINE ecctf #-}-  dcctf = fmap AdobeRGB.itransfer+  dcctf = AdobeRGB . fmap AdobeRGB.itransfer . coerce   {-# INLINE dcctf #-}
+ src/Graphics/Color/Space/RGB/Derived/CIERGB.hs view
@@ -0,0 +1,97 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+-- |+-- Module      : Graphics.Color.Space.RGB.Derived.CIERGB+-- Copyright   : (c) Alexey Kuleshevich 2018-2020+-- License     : BSD3+-- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru>+-- Stability   : experimental+-- Portability : non-portable+--+module Graphics.Color.Space.RGB.Derived.CIERGB+  ( CIERGB+  , CIERGB.primaries+  , castLinearity+  , module Graphics.Color.Space+  ) where++import Data.Coerce+import Data.Typeable+import Foreign.Storable+import Graphics.Color.Model.Internal+import qualified Graphics.Color.Model.RGB as CM+import Graphics.Color.Space+import qualified Graphics.Color.Space.CIE1931.RGB as CIERGB+++-- | The original @CIE1931 RGB@ color space with an arbitrary illuminant+data CIERGB (i :: k) (l :: Linearity)++-- | `CIERGB` color space (derived)+newtype instance Color (CIERGB i l) e = CIERGB (Color CM.RGB e)++-- | `CIERGB` color space (derived)+deriving instance Eq e => Eq (Color (CIERGB i l) e)+-- | `CIERGB` color space (derived)+deriving instance Ord e => Ord (Color (CIERGB i l) e)+-- | `CIERGB` color space (derived)+deriving instance Functor (Color (CIERGB i l))+-- | `CIERGB` color space (derived)+deriving instance Applicative (Color (CIERGB i l))+-- | `CIERGB` color space (derived)+deriving instance Foldable (Color (CIERGB i l))+-- | `CIERGB` color space (derived)+deriving instance Traversable (Color (CIERGB i l))+-- | `CIERGB` color space (derived)+deriving instance Storable e => Storable (Color (CIERGB i l) e)++-- | `CIERGB` color space (derived)+instance (Typeable l, Illuminant i, Elevator e) => Show (Color (CIERGB (i :: k) l) e) where+  showsPrec _ = showsColorModel++-- | `CIERGB` color space (derived)+instance (Typeable l, Illuminant i, Elevator e) => ColorModel (CIERGB (i :: k) l) e where+  type Components (CIERGB i l) e = (e, e, e)+  toComponents = toComponents . unColorRGB+  {-# INLINE toComponents #-}+  fromComponents = mkColorRGB . fromComponents+  {-# INLINE fromComponents #-}++-- | `CIERGB` linear color space (derived)+instance (Illuminant i, Typeable l, Elevator e) => ColorSpace (CIERGB i l) i e where+  type BaseModel (CIERGB i l) = CM.RGB+  toBaseSpace = id+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = id+  {-# INLINE fromBaseSpace #-}+  luminance = rgbLinearLuminance . castLinearity . fmap toRealFloat+  {-# INLINE luminance #-}+  toColorXYZ = rgbLinear2xyz . fmap toRealFloat . castLinearity+  {-# INLINE toColorXYZ #-}+  fromColorXYZ xyz = castLinearity (fromRealFloat <$> (xyz2rgbLinear @(CIERGB i) xyz))+  {-# INLINE fromColorXYZ #-}++-- | `CIERGB` color space (derived)+instance Illuminant i => RedGreenBlue (CIERGB i) i where+  gamut = CIERGB.primaries+  ecctf = coerce+  {-# INLINE ecctf #-}+  dcctf = coerce+  {-# INLINE dcctf #-}++-- | CIE RGB does not utilize any gamma function, therefore it is safe to cast the+-- `Linearity` kind.+--+-- @since 0.2.0+castLinearity :: Color (CIERGB i l') e -> Color (CIERGB i l) e+castLinearity = coerce
src/Graphics/Color/Space/RGB/Derived/SRGB.hs view
@@ -11,7 +11,7 @@ {-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.Color.Space.RGB.Derived.SRGB--- Copyright   : (c) Alexey Kuleshevich 2018-2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -25,6 +25,8 @@   , module Graphics.Color.Space   ) where +import Data.Coerce+import Data.Typeable import Foreign.Storable import Graphics.Color.Model.Internal import qualified Graphics.Color.Model.RGB as CM@@ -34,41 +36,56 @@   -- | The most common @sRGB@ color space with an arbitrary illuminant-data SRGB (i :: k)+data SRGB (i :: k) (l :: Linearity)  -- | `SRGB` color space (derived)-newtype instance Color (SRGB i) e = SRGB (Color CM.RGB e)+newtype instance Color (SRGB i l) e = SRGB (Color CM.RGB e)  -- | `SRGB` color space (derived)-deriving instance Eq e => Eq (Color (SRGB i) e)+deriving instance Eq e => Eq (Color (SRGB i l) e) -- | `SRGB` color space (derived)-deriving instance Ord e => Ord (Color (SRGB i) e)+deriving instance Ord e => Ord (Color (SRGB i l) e) -- | `SRGB` color space (derived)-deriving instance Functor (Color (SRGB i))+deriving instance Functor (Color (SRGB i l)) -- | `SRGB` color space (derived)-deriving instance Applicative (Color (SRGB i))+deriving instance Applicative (Color (SRGB i l)) -- | `SRGB` color space (derived)-deriving instance Foldable (Color (SRGB i))+deriving instance Foldable (Color (SRGB i l)) -- | `SRGB` color space (derived)-deriving instance Traversable (Color (SRGB i))+deriving instance Traversable (Color (SRGB i l)) -- | `SRGB` color space (derived)-deriving instance Storable e => Storable (Color (SRGB i) e)+deriving instance Storable e => Storable (Color (SRGB i l) e)  -- | `SRGB` color space (derived)-instance (Illuminant i, Elevator e) => Show (Color (SRGB (i :: k)) e) where+instance (Typeable l, Illuminant i, Elevator e) => Show (Color (SRGB (i :: k) l) e) where   showsPrec _ = showsColorModel  -- | `SRGB` color space (derived)-instance (Illuminant i, Elevator e) => ColorModel (SRGB (i :: k)) e where-  type Components (SRGB i) e = (e, e, e)+instance (Typeable l, Illuminant i, Elevator e) => ColorModel (SRGB (i :: k) l) e where+  type Components (SRGB i l) e = (e, e, e)   toComponents = toComponents . unColorRGB   {-# INLINE toComponents #-}   fromComponents = mkColorRGB . fromComponents   {-# INLINE fromComponents #-} +-- | `SRGB` linear color space (derived)+instance (Illuminant i, Elevator e) => ColorSpace (SRGB i 'Linear) i e where+  type BaseModel (SRGB i 'Linear) = CM.RGB+  toBaseSpace = id+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = id+  {-# INLINE fromBaseSpace #-}+  luminance = rgbLinearLuminance . fmap toRealFloat+  {-# INLINE luminance #-}+  toColorXYZ = rgbLinear2xyz . fmap toRealFloat+  {-# INLINE toColorXYZ #-}+  fromColorXYZ = fmap fromRealFloat . xyz2rgbLinear+  {-# INLINE fromColorXYZ #-}++ -- | `SRGB` color space (derived)-instance (Illuminant i, Elevator e) => ColorSpace (SRGB i) i e where-  type BaseModel (SRGB i) = CM.RGB+instance (Illuminant i, Elevator e) => ColorSpace (SRGB i 'NonLinear) i e where+  type BaseModel (SRGB i 'NonLinear) = CM.RGB   toBaseSpace = id   {-# INLINE toBaseSpace #-}   fromBaseSpace = id@@ -83,9 +100,9 @@ -- | `SRGB` color space (derived) instance Illuminant i => RedGreenBlue (SRGB i) i where   gamut = SRGB.primaries-  ecctf = fmap SRGB.transfer+  ecctf = SRGB . fmap SRGB.transfer . coerce   {-# INLINE ecctf #-}-  dcctf = fmap SRGB.itransfer+  dcctf = SRGB . fmap SRGB.itransfer . coerce   {-# INLINE dcctf #-}  
src/Graphics/Color/Space/RGB/ITU/Rec470.hs view
@@ -11,7 +11,7 @@ {-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.Color.Space.RGB.ITU.Rec470--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -29,6 +29,8 @@   , module Graphics.Color.Space   ) where +import Data.Coerce+import Data.Typeable import Foreign.Storable import qualified Graphics.Color.Model.RGB as CM import Graphics.Color.Space@@ -39,44 +41,58 @@ ------------------------------------  -- | [ITU-R BT.470](https://www.itu.int/rec/R-REC-BT.470) (525) color space. Used in NTSC-data BT470_525+data BT470_525 (l :: Linearity) -newtype instance Color BT470_525 e = BT470_525 (Color CM.RGB e)+newtype instance Color (BT470_525 l) e = BT470_525 (Color CM.RGB e)  -- | ITU-R BT.470 (525) color space-deriving instance Eq e => Eq (Color BT470_525 e)+deriving instance Eq e => Eq (Color (BT470_525 l) e) -- | ITU-R BT.470 (525) color space-deriving instance Ord e => Ord (Color BT470_525 e)+deriving instance Ord e => Ord (Color (BT470_525 l) e) -- | ITU-R BT.470 (525) color space-deriving instance Functor (Color BT470_525)+deriving instance Functor (Color (BT470_525 l)) -- | ITU-R BT.470 (525) color space-deriving instance Applicative (Color BT470_525)+deriving instance Applicative (Color (BT470_525 l)) -- | ITU-R BT.470 (525) color space-deriving instance Foldable (Color BT470_525)+deriving instance Foldable (Color (BT470_525 l)) -- | ITU-R BT.470 (525) color space-deriving instance Traversable (Color BT470_525)+deriving instance Traversable (Color (BT470_525 l)) -- | ITU-R BT.470 (525) color space-deriving instance Storable e => Storable (Color BT470_525 e)+deriving instance Storable e => Storable (Color (BT470_525 l) e)  -- | ITU-R BT.470 (525) color space-instance Elevator e => Show (Color BT470_525 e) where+instance (Typeable l, Elevator e) => Show (Color (BT470_525 l) e) where   showsPrec _ = showsColorModel  -- | ITU-R BT.470 (525) color space-instance Elevator e => ColorModel BT470_525 e where-  type Components BT470_525 e = (e, e, e)+instance (Typeable l, Elevator e) => ColorModel (BT470_525 l) e where+  type Components (BT470_525 l) e = (e, e, e)   toComponents = toComponents . unColorRGB   {-# INLINE toComponents #-}   fromComponents = mkColorRGB . fromComponents   {-# INLINE fromComponents #-}  -- | ITU-R BT.470 (525) color space-instance Elevator e => ColorSpace BT470_525 C e where-  type BaseModel BT470_525 = CM.RGB+instance Elevator e => ColorSpace (BT470_525 'Linear) C e where+  type BaseModel (BT470_525 'Linear) = CM.RGB   toBaseSpace = id   {-# INLINE toBaseSpace #-}   fromBaseSpace = id   {-# INLINE fromBaseSpace #-}+  luminance = rgbLinearLuminance . fmap toRealFloat+  {-# INLINE luminance #-}+  toColorXYZ = rgbLinear2xyz . fmap toRealFloat+  {-# INLINE toColorXYZ #-}+  fromColorXYZ = fmap fromRealFloat . xyz2rgbLinear+  {-# INLINE fromColorXYZ #-}++-- | ITU-R BT.470 (525) color space+instance Elevator e => ColorSpace (BT470_525 'NonLinear) C e where+  type BaseModel (BT470_525 'NonLinear) = CM.RGB+  toBaseSpace = id+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = id+  {-# INLINE fromBaseSpace #-}   luminance = rgbLuminance . fmap toRealFloat   {-# INLINE luminance #-}   toColorXYZ = rgb2xyz . fmap toRealFloat@@ -87,9 +103,9 @@ -- | ITU-R BT.470 (525) color space instance RedGreenBlue BT470_525 C where   gamut = primaries525-  ecctf = fmap (gamma 2.2)+  ecctf c = BT470_525 (fmap (gamma 2.2) (coerce c))   {-# INLINE ecctf #-}-  dcctf = fmap (igamma 2.2)+  dcctf c = BT470_525 (fmap (igamma 2.2) (coerce c))   {-# INLINE dcctf #-}  ------------------------------------@@ -97,44 +113,58 @@ ------------------------------------  -- | [ITU-R BT.470](https://www.itu.int/rec/R-REC-BT.470) (625) color space. Used in PAL/SECAM-data BT470_625+data BT470_625 (l :: Linearity) -newtype instance Color BT470_625 e = BT470_625 (Color CM.RGB e)+newtype instance Color (BT470_625 l) e = BT470_625 (Color CM.RGB e)  -- | ITU-R BT.470 (625) color space-deriving instance Eq e => Eq (Color BT470_625 e)+deriving instance Eq e => Eq (Color (BT470_625 l) e) -- | ITU-R BT.470 (625) color space-deriving instance Ord e => Ord (Color BT470_625 e)+deriving instance Ord e => Ord (Color (BT470_625 l) e) -- | ITU-R BT.470 (625) color space-deriving instance Functor (Color BT470_625)+deriving instance Functor (Color (BT470_625 l)) -- | ITU-R BT.470 (625) color space-deriving instance Applicative (Color BT470_625)+deriving instance Applicative (Color (BT470_625 l)) -- | ITU-R BT.470 (625) color space-deriving instance Foldable (Color BT470_625)+deriving instance Foldable (Color (BT470_625 l)) -- | ITU-R BT.470 (625) color space-deriving instance Traversable (Color BT470_625)+deriving instance Traversable (Color (BT470_625 l)) -- | ITU-R BT.470 (625) color space-deriving instance Storable e => Storable (Color BT470_625 e)+deriving instance Storable e => Storable (Color (BT470_625 l) e)  -- | ITU-R BT.470 (625) color space-instance Elevator e => Show (Color BT470_625 e) where+instance (Typeable l, Elevator e) => Show (Color (BT470_625 l) e) where   showsPrec _ = showsColorModel  -- | ITU-R BT.470 (625) color space-instance Elevator e => ColorModel BT470_625 e where-  type Components BT470_625 e = (e, e, e)+instance (Typeable l, Elevator e) => ColorModel (BT470_625 l) e where+  type Components (BT470_625 l) e = (e, e, e)   toComponents = toComponents . unColorRGB   {-# INLINE toComponents #-}   fromComponents = mkColorRGB . fromComponents   {-# INLINE fromComponents #-}  -- | ITU-R BT.470 (625) color space-instance Elevator e => ColorSpace BT470_625 D65 e where-  type BaseModel BT470_625 = CM.RGB+instance Elevator e => ColorSpace (BT470_625 'Linear) D65 e where+  type BaseModel (BT470_625 'Linear) = CM.RGB   toBaseSpace = id   {-# INLINE toBaseSpace #-}   fromBaseSpace = id   {-# INLINE fromBaseSpace #-}+  luminance = rgbLinearLuminance . fmap toRealFloat+  {-# INLINE luminance #-}+  toColorXYZ = rgbLinear2xyz . fmap toRealFloat+  {-# INLINE toColorXYZ #-}+  fromColorXYZ = fmap fromRealFloat . xyz2rgbLinear+  {-# INLINE fromColorXYZ #-}++-- | ITU-R BT.470 (625) color space+instance Elevator e => ColorSpace (BT470_625 'NonLinear) D65 e where+  type BaseModel (BT470_625 'NonLinear) = CM.RGB+  toBaseSpace = id+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = id+  {-# INLINE fromBaseSpace #-}   luminance = rgbLuminance . fmap toRealFloat   {-# INLINE luminance #-}   toColorXYZ = rgb2xyz . fmap toRealFloat@@ -145,9 +175,9 @@ -- | ITU-R BT.470 (625) color space instance RedGreenBlue BT470_625 D65 where   gamut = primaries625-  ecctf = fmap (gamma 2.8)+  ecctf c = BT470_625 (fmap (gamma 2.8) (coerce c))   {-# INLINE ecctf #-}-  dcctf = fmap (igamma 2.8)+  dcctf c = BT470_625 (fmap (igamma 2.8) (coerce c))   {-# INLINE dcctf #-}  gamma :: Floating a => a -> a -> a
src/Graphics/Color/Space/RGB/ITU/Rec601.hs view
@@ -12,7 +12,7 @@ {-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.Color.Space.RGB.ITU.Rec601--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -31,13 +31,15 @@   , module Graphics.Color.Space   ) where +import Data.Coerce+import Data.Typeable import Foreign.Storable+import Graphics.Color.Illuminant.ITU.Rec601 import Graphics.Color.Model.Internal import qualified Graphics.Color.Model.RGB as CM import Graphics.Color.Space import Graphics.Color.Space.RGB.ITU.Rec470 (primaries625) import Graphics.Color.Space.RGB.Luma-import Graphics.Color.Illuminant.ITU.Rec601   @@ -46,44 +48,59 @@ ------------------------------------  -- | [ITU-R BT.601](https://en.wikipedia.org/wiki/Rec._601) (525) color space-data BT601_525+data BT601_525 (l :: Linearity) -newtype instance Color BT601_525 e = BT601_525 (Color CM.RGB e)+newtype instance Color (BT601_525 l) e = BT601_525 (Color CM.RGB e)  -- | ITU-R BT.601 (525) color space-deriving instance Eq e => Eq (Color BT601_525 e)+deriving instance Eq e => Eq (Color (BT601_525 l) e) -- | ITU-R BT.601 (525) color space-deriving instance Ord e => Ord (Color BT601_525 e)+deriving instance Ord e => Ord (Color (BT601_525 l) e) -- | ITU-R BT.601 (525) color space-deriving instance Functor (Color BT601_525)+deriving instance Functor (Color (BT601_525 l)) -- | ITU-R BT.601 (525) color space-deriving instance Applicative (Color BT601_525)+deriving instance Applicative (Color (BT601_525 l)) -- | ITU-R BT.601 (525) color space-deriving instance Foldable (Color BT601_525)+deriving instance Foldable (Color (BT601_525 l)) -- | ITU-R BT.601 (525) color space-deriving instance Traversable (Color BT601_525)+deriving instance Traversable (Color (BT601_525 l)) -- | ITU-R BT.601 (525) color space-deriving instance Storable e => Storable (Color BT601_525 e)+deriving instance Storable e => Storable (Color (BT601_525 l) e)  -- | ITU-R BT.601 (525) color space-instance Elevator e => Show (Color BT601_525 e) where+instance  (Typeable l, Elevator e) => Show (Color (BT601_525 l) e) where   showsPrec _ = showsColorModel  -- | ITU-R BT.601 (525) color space-instance Elevator e => ColorModel BT601_525 e where-  type Components BT601_525 e = (e, e, e)+instance  (Typeable l, Elevator e) => ColorModel (BT601_525 l) e where+  type Components (BT601_525 l) e = (e, e, e)   toComponents = toComponents . unColorRGB   {-# INLINE toComponents #-}   fromComponents = mkColorRGB . fromComponents   {-# INLINE fromComponents #-} --- | ITU-R BT.601 (525) color space-instance Elevator e => ColorSpace BT601_525 D65 e where-  type BaseModel BT601_525 = CM.RGB+-- | ITU-R BT.601 (525) linear color space+instance Elevator e => ColorSpace (BT601_525 'Linear) D65 e where+  type BaseModel (BT601_525 'Linear) = CM.RGB   toBaseSpace = id   {-# INLINE toBaseSpace #-}   fromBaseSpace = id   {-# INLINE fromBaseSpace #-}+  luminance = rgbLinearLuminance . fmap toRealFloat+  {-# INLINE luminance #-}+  toColorXYZ = rgbLinear2xyz . fmap toRealFloat+  {-# INLINE toColorXYZ #-}+  fromColorXYZ = fmap fromRealFloat . xyz2rgbLinear+  {-# INLINE fromColorXYZ #-}+++-- | ITU-R BT.601 (525) linear color space+instance Elevator e => ColorSpace (BT601_525 'NonLinear) D65 e where+  type BaseModel (BT601_525 'NonLinear) = CM.RGB+  toBaseSpace = id+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = id+  {-# INLINE fromBaseSpace #-}   luminance = rgbLuminance . fmap toRealFloat   {-# INLINE luminance #-}   toColorXYZ = rgb2xyz . fmap toRealFloat@@ -94,9 +111,9 @@ -- | ITU-R BT.601 (525) color space instance RedGreenBlue BT601_525 D65 where   gamut = primaries525-  ecctf = fmap transfer+  ecctf = BT601_525 . fmap transfer . coerce   {-# INLINE ecctf #-}-  dcctf = fmap itransfer+  dcctf = BT601_525 . fmap itransfer . coerce   {-# INLINE dcctf #-}  ------------------------------------@@ -104,40 +121,54 @@ ------------------------------------  -- | [ITU-R BT.601](https://en.wikipedia.org/wiki/Rec._601) (625) color space-data BT601_625+data BT601_625 (l :: Linearity) -newtype instance Color BT601_625 e = BT601_625 (Color CM.RGB e)+newtype instance Color (BT601_625 l) e = BT601_625 (Color CM.RGB e)  -- | ITU-R BT.601 (625) color space-deriving instance Eq e => Eq (Color BT601_625 e)+deriving instance Eq e => Eq (Color (BT601_625 l) e) -- | ITU-R BT.601 (625) color space-deriving instance Ord e => Ord (Color BT601_625 e)+deriving instance Ord e => Ord (Color (BT601_625 l) e) -- | ITU-R BT.601 (625) color space-deriving instance Functor (Color BT601_625)+deriving instance Functor (Color (BT601_625 l)) -- | ITU-R BT.601 (625) color space-deriving instance Applicative (Color BT601_625)+deriving instance Applicative (Color (BT601_625 l)) -- | ITU-R BT.601 (625) color space-deriving instance Foldable (Color BT601_625)+deriving instance Foldable (Color (BT601_625 l)) -- | ITU-R BT.601 (625) color space-deriving instance Traversable (Color BT601_625)+deriving instance Traversable (Color (BT601_625 l)) -- | ITU-R BT.601 (625) color space-deriving instance Storable e => Storable (Color BT601_625 e)+deriving instance Storable e => Storable (Color (BT601_625 l) e)  -- | ITU-R BT.601 (625) color space-instance Elevator e => Show (Color BT601_625 e) where+instance (Typeable l, Elevator e) => Show (Color (BT601_625 l) e) where   showsPrec _ = showsColorModel  -- | ITU-R BT.601 (625) color space-instance Elevator e => ColorModel BT601_625 e where-  type Components BT601_625 e = (e, e, e)+instance (Typeable l, Elevator e) => ColorModel (BT601_625 l) e where+  type Components (BT601_625 l) e = (e, e, e)   toComponents = toComponents . unColorRGB   {-# INLINE toComponents #-}   fromComponents = mkColorRGB . fromComponents   {-# INLINE fromComponents #-} +-- | ITU-R BT.601 (625) linear color space+instance Elevator e => ColorSpace (BT601_625 'Linear) D65 e where+  type BaseModel (BT601_625 'Linear) = CM.RGB+  toBaseSpace = id+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = id+  {-# INLINE fromBaseSpace #-}+  luminance = rgbLinearLuminance . fmap toRealFloat+  {-# INLINE luminance #-}+  toColorXYZ = rgbLinear2xyz . fmap toRealFloat+  {-# INLINE toColorXYZ #-}+  fromColorXYZ = fmap fromRealFloat . xyz2rgbLinear+  {-# INLINE fromColorXYZ #-}+ -- | ITU-R BT.601 (625) color space-instance Elevator e => ColorSpace BT601_625 D65 e where-  type BaseModel BT601_625 = CM.RGB+instance Elevator e => ColorSpace (BT601_625 'NonLinear) D65 e where+  type BaseModel (BT601_625 'NonLinear) = CM.RGB   toBaseSpace = id   {-# INLINE toBaseSpace #-}   fromBaseSpace = id@@ -152,9 +183,9 @@ -- | ITU-R BT.601 (625) color space instance RedGreenBlue BT601_625 D65 where   gamut = primaries625-  ecctf = fmap transfer+  ecctf = BT601_625 . fmap transfer . coerce   {-# INLINE ecctf #-}-  dcctf = fmap itransfer+  dcctf = BT601_625 . fmap itransfer . coerce   {-# INLINE dcctf #-}  instance Luma BT601_525 where
src/Graphics/Color/Space/RGB/ITU/Rec709.hs view
@@ -11,7 +11,7 @@ {-# LANGUAGE TypeFamilies #-} -- | -- Module      : Graphics.Color.Space.RGB.ITU.Rec709--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -27,6 +27,8 @@   , module Graphics.Color.Space   ) where +import Data.Coerce+import Data.Typeable import Foreign.Storable import Graphics.Color.Model.Internal import qualified Graphics.Color.Model.RGB as CM@@ -35,40 +37,54 @@ import Graphics.Color.Space.RGB.Luma  -- | [ITU-R BT.709](https://en.wikipedia.org/wiki/Rec._709) color space-data BT709+data BT709 (l :: Linearity) -newtype instance Color BT709 e = BT709 (Color CM.RGB e)+newtype instance Color (BT709 l) e = BT709 (Color CM.RGB e)  -- | ITU-R BT.709 color space-deriving instance Eq e => Eq (Color BT709 e)+deriving instance Eq e => Eq (Color (BT709 l) e) -- | ITU-R BT.709 color space-deriving instance Ord e => Ord (Color BT709 e)+deriving instance Ord e => Ord (Color (BT709 l) e) -- | ITU-R BT.709 color space-deriving instance Functor (Color BT709)+deriving instance Functor (Color (BT709 l)) -- | ITU-R BT.709 color space-deriving instance Applicative (Color BT709)+deriving instance Applicative (Color (BT709 l)) -- | ITU-R BT.709 color space-deriving instance Foldable (Color BT709)+deriving instance Foldable (Color (BT709 l)) -- | ITU-R BT.709 color space-deriving instance Traversable (Color BT709)+deriving instance Traversable (Color (BT709 l)) -- | ITU-R BT.709 color space-deriving instance Storable e => Storable (Color BT709 e)+deriving instance Storable e => Storable (Color (BT709 l) e)  -- | ITU-R BT.709 color space-instance Elevator e => Show (Color BT709 e) where+instance (Typeable l, Elevator e) => Show (Color (BT709 l) e) where   showsPrec _ = showsColorModel  -- | ITU-R BT.709 color space-instance Elevator e => ColorModel BT709 e where-  type Components BT709 e = (e, e, e)+instance (Typeable l, Elevator e) => ColorModel (BT709 l) e where+  type Components (BT709 l) e = (e, e, e)   toComponents = toComponents . unColorRGB   {-# INLINE toComponents #-}   fromComponents = mkColorRGB . fromComponents   {-# INLINE fromComponents #-} +-- | ITU-R BT.709 linear color space+instance Elevator e => ColorSpace (BT709 'Linear) D65 e where+  type BaseModel (BT709 'Linear) = CM.RGB+  toBaseSpace = id+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = id+  {-# INLINE fromBaseSpace #-}+  luminance = rgbLinearLuminance . fmap toRealFloat+  {-# INLINE luminance #-}+  toColorXYZ = rgbLinear2xyz . fmap toRealFloat+  {-# INLINE toColorXYZ #-}+  fromColorXYZ = fmap fromRealFloat . xyz2rgbLinear+  {-# INLINE fromColorXYZ #-}+ -- | ITU-R BT.709 color space-instance Elevator e => ColorSpace BT709 D65 e where-  type BaseModel BT709 = CM.RGB+instance Elevator e => ColorSpace (BT709 'NonLinear) D65 e where+  type BaseModel (BT709 'NonLinear) = CM.RGB   toBaseSpace = id   {-# INLINE toBaseSpace #-}   fromBaseSpace = id@@ -83,9 +99,9 @@ -- | ITU-R BT.709 color space instance RedGreenBlue BT709 D65 where   gamut = primaries-  ecctf = fmap Rec601.transfer+  ecctf = BT709 . fmap Rec601.transfer . coerce   {-# INLINE ecctf #-}-  dcctf = fmap Rec601.itransfer+  dcctf = BT709 . fmap Rec601.itransfer . coerce   {-# INLINE dcctf #-}  
src/Graphics/Color/Space/RGB/Internal.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE BangPatterns #-}+{-# LANGUAGE DataKinds #-} {-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE FlexibleContexts #-}@@ -8,6 +9,7 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE PolyKinds #-}+{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeFamilies #-}@@ -15,7 +17,7 @@ {-# LANGUAGE ViewPatterns #-} -- | -- Module      : Graphics.Color.Space.RGB.Internal--- Copyright   : (c) Alexey Kuleshevich 2019+-- Copyright   : (c) Alexey Kuleshevich 2019-2020 -- License     : BSD3 -- Maintainer  : Alexey Kuleshevich <lehins@yandex.ru> -- Stability   : experimental@@ -25,10 +27,14 @@   ( pattern ColorRGB   , pattern ColorRGBA   , RedGreenBlue(..)+  , Linearity(..)   , Gamut(..)   , rgb2xyz+  , rgbLinear2xyz   , xyz2rgb+  , xyz2rgbLinear   , rgbLuminance+  , rgbLinearLuminance   , NPM(..)   , npmApply   , npmDerive@@ -45,42 +51,44 @@ import Graphics.Color.Algebra import qualified Graphics.Color.Model.RGB as CM import Graphics.Color.Space.Internal+import Data.Kind +data Linearity = Linear | NonLinear -class Illuminant i => RedGreenBlue cs (i :: k) | cs -> i where+class Illuminant i => RedGreenBlue (cs :: Linearity -> Type) (i :: k) | cs -> i where   -- | RGB primaries that are defined for the RGB color space, while point is defined by   -- the __@i@__ type parameter   gamut :: RealFloat e => Gamut cs i e    -- | Encoding color component transfer function (inverse). Also known as opto-electronic   -- transfer function (OETF / OECF) or gamma function.-  ecctf :: (RealFloat a, Elevator a) => Color cs a -> Color cs a+  ecctf :: (RealFloat a, Elevator a) => Color (cs 'Linear) a -> Color (cs 'NonLinear) a    -- | Decoding color component transfer function (forward)-  dcctf :: (RealFloat a, Elevator a) => Color cs a -> Color cs a+  dcctf :: (RealFloat a, Elevator a) => Color (cs 'NonLinear) a -> Color (cs 'Linear) a    -- | Normalized primary matrix for this RGB color space. Default implementation derives   -- it from `chromaticity`-  npm :: (ColorSpace cs i a, RealFloat a) => NPM cs a+  npm :: (ColorSpace (cs 'Linear) i a, RealFloat a) => NPM cs a   npm = npmDerive gamut   {-# INLINE npm #-}    -- | Inverse normalized primary matrix for this RGB color space. Default implementation   -- derives it from `chromaticity`-  inpm :: (ColorSpace cs i a, RealFloat a) => INPM cs a+  inpm :: (ColorSpace (cs 'Linear) i a, RealFloat a) => INPM cs a   inpm = inpmDerive gamut   {-# INLINE inpm #-}    -- | Lift RGB color model into a RGB color space-  mkColorRGB :: Color CM.RGB e -> Color cs e+  mkColorRGB :: Color CM.RGB e -> Color (cs l) e   default mkColorRGB ::-    Coercible (Color CM.RGB e) (Color cs e) => Color CM.RGB e -> Color cs e+    Coercible (Color CM.RGB e) (Color (cs l) e) => Color CM.RGB e -> Color (cs l) e   mkColorRGB = coerce    -- | Drop RGB color space down to the RGB color model-  unColorRGB :: Color cs e -> Color CM.RGB e+  unColorRGB :: Color (cs l) e -> Color CM.RGB e   default unColorRGB ::-    Coercible (Color cs e) (Color CM.RGB e) => Color cs e -> Color CM.RGB e+    Coercible (Color (cs l) e) (Color CM.RGB e) => Color (cs l) e -> Color CM.RGB e   unColorRGB = coerce  @@ -90,8 +98,16 @@   , gamutBluePrimary  :: !(Primary i e)   } deriving instance Eq e => Eq (Gamut cs i e)-deriving instance ColorSpace cs i e => Show (Gamut cs i e) -- TODO: better show with whitepoint +instance (RealFloat e, Elevator e, Illuminant i) => Show (Gamut cs i e) where+  show Gamut {..} =+    unlines+      [ "Gamut:"+      , "  Red:   " <> show (primaryChromaticity gamutRedPrimary)+      , "  Green: " <> show (primaryChromaticity gamutGreenPrimary)+      , "  Blue:  " <> show (primaryChromaticity gamutBluePrimary)+      ]+ -- | Get the `WhitePoint` of chromaticity. `Chromaticity` itself isn't actually evaluated, -- its type carries enough information for this operation. --@@ -113,30 +129,35 @@ -- >>> import Graphics.Color.Illuminant.CIE1931 -- >>> import Graphics.Color.Space.RGB.Derived.SRGB -- >>> :{--- srgbFromLinear :: Color (SRGB 'D65) Float -> Color (XYZ 'D65) Float+-- srgbFromLinear :: Color (SRGB 'D65 'Linear) Float -> Color (XYZ 'D65) Float -- srgbFromLinear = npmApply npm' --   where npm' = trace "Evaluated only once!!!" npm :: NPM (SRGB 'D65) Float -- :} -- -- >>> srgbFromLinear $ ColorRGB 0.1 0.2 0.3 -- <XYZ CIE1931 'D65:(Evaluated only once!!!---  0.166888, 0.185953, 0.310856)>+--  0.16688849, 0.18595251, 0.31085595)> -- >>> srgbFromLinear $ ColorRGB 0.1 0.2 0.3--- <XYZ CIE1931 'D65:( 0.166888, 0.185953, 0.310856)>--- >>> rgb = ColorRGB 0.1 0.2 0.3 :: Color (SRGB 'D65) Float+-- <XYZ CIE1931 'D65:( 0.16688849, 0.18595251, 0.31085595)>+-- >>> rgb = ColorRGB 0.1 0.2 0.3 :: Color (SRGB 'D65 'Linear) Float -- >>> npmApply npm rgb :: Color (XYZ 'D65) Float--- <XYZ CIE1931 'D65:( 0.166888, 0.185953, 0.310856)>+-- <XYZ CIE1931 'D65:( 0.16688849, 0.18595251, 0.31085595)> -- -- Here is a comparison with a non-liner sRGB conversion: --+-- >>> rgb = ColorRGB 0.1 0.2 0.3 :: Color (SRGB 'D65 'NonLinear) Float -- >>> npmApply npm (dcctf rgb) :: Color (XYZ 'D65) Float {- non-linear transformation -}--- <XYZ CIE1931 'D65:( 0.029186, 0.031093, 0.073737)>+-- <XYZ CIE1931 'D65:( 0.02918611, 0.03109305, 0.07373714)> -- >>> toColorXYZ rgb :: Color (XYZ 'D65) Float           {- non-linear transformation -}--- <XYZ CIE1931 'D65:( 0.029186, 0.031093, 0.073737)>+-- <XYZ CIE1931 'D65:( 0.02918611, 0.03109305, 0.07373714)> -- -- -- @since 0.1.0-npmApply :: (RedGreenBlue cs i, Elevator e) => NPM cs e -> Color cs e -> Color (XYZ i) e+npmApply ::+     (RedGreenBlue cs i, Elevator e)+  => NPM cs e+  -> Color (cs 'Linear) e+  -> Color (XYZ i) e npmApply (NPM npm') = coerce . multM3x3byV3 npm' . coerce . unColorRGB {-# INLINE npmApply #-} @@ -144,43 +165,69 @@ -- -- @since 0.1.0 inpmApply ::-     (RedGreenBlue cs i, Elevator e) => INPM cs e -> Color (XYZ i) e -> Color cs e+     (RedGreenBlue cs i, Elevator e)+  => INPM cs e+  -> Color (XYZ i) e+  -> Color (cs 'Linear) e inpmApply (INPM inpm') = mkColorRGB . coerce . multM3x3byV3 inpm' . coerce {-# INLINE inpmApply #-}  -- | Linear transformation of a color into a linear luminance, i.e. the Y component of -- XYZ color space-npmApplyLuminance ::-     forall cs i e. (RedGreenBlue cs i, ColorSpace cs i e, RealFloat e)-  => Color cs e+rgbLinearLuminance ::+     forall cs i e. (RedGreenBlue cs i, ColorSpace (cs 'Linear) i e, RealFloat e)+  => Color (cs 'Linear) e   -> Color (Y i) e-npmApplyLuminance px = Y (m3x3row1 (unNPM (npm :: NPM cs e)) `dotProduct` coerce (unColorRGB px))-{-# INLINE npmApplyLuminance #-}+rgbLinearLuminance px =+  Y (m3x3row1 (unNPM (npm :: NPM cs e)) `dotProduct` coerce (unColorRGB px))+{-# INLINE rgbLinearLuminance #-}  -rgbLuminance :: (RedGreenBlue cs i, ColorSpace cs i e, RealFloat e) => Color cs e -> Color (Y i) e-rgbLuminance = npmApplyLuminance . dcctf+rgbLuminance ::+     (RedGreenBlue cs i, ColorSpace (cs 'Linear) i e, RealFloat e)+  => Color (cs 'NonLinear) e+  -> Color (Y i) e+rgbLuminance = rgbLinearLuminance . dcctf {-# INLINE rgbLuminance #-} -rgb2xyz :: (RedGreenBlue cs i, ColorSpace cs i e, RealFloat e) => Color cs e -> Color (XYZ i) e+rgb2xyz ::+     (RedGreenBlue cs i, ColorSpace (cs 'NonLinear) i e, ColorSpace (cs 'Linear) i e, RealFloat e)+  => Color (cs 'NonLinear) e+  -> Color (XYZ i) e rgb2xyz = npmApply npm . dcctf {-# INLINE rgb2xyz #-}  xyz2rgb ::-     (RedGreenBlue cs i, ColorSpace cs i e, RealFloat e)+     (RedGreenBlue cs i, ColorSpace (cs 'NonLinear) i e, ColorSpace (cs 'Linear) i e, RealFloat e)   => Color (XYZ i) e-  -> Color cs e+  -> Color (cs 'NonLinear) e xyz2rgb = ecctf . inpmApply inpm {-# INLINE xyz2rgb #-} ++rgbLinear2xyz ::+     (RedGreenBlue cs i, ColorSpace (cs 'NonLinear) i e, ColorSpace (cs 'Linear) i e, RealFloat e)+  => Color (cs 'Linear) e+  -> Color (XYZ i) e+rgbLinear2xyz = npmApply npm+{-# INLINE rgbLinear2xyz #-}++xyz2rgbLinear ::+     forall cs i e.+     (RedGreenBlue cs i, ColorSpace (cs 'NonLinear) i e, ColorSpace (cs 'Linear) i e, RealFloat e)+  => Color (XYZ i) e+  -> Color (cs 'Linear) e+xyz2rgbLinear = inpmApply inpm+{-# INLINE xyz2rgbLinear #-}+ -- | Constructor for an RGB color space.-pattern ColorRGB :: RedGreenBlue cs i => e -> e -> e -> Color cs e+pattern ColorRGB :: RedGreenBlue cs i => e -> e -> e -> Color (cs l) e pattern ColorRGB r g b <- (unColorRGB -> CM.ColorRGB r g b) where         ColorRGB r g b = mkColorRGB (CM.ColorRGB r g b) {-# COMPLETE ColorRGB #-}  -- | Constructor for an RGB color space with Alpha channel-pattern ColorRGBA :: RedGreenBlue cs i => e -> e -> e -> e -> Color (Alpha cs) e+pattern ColorRGBA :: RedGreenBlue cs i => e -> e -> e -> e -> Color (Alpha (cs l)) e pattern ColorRGBA r g b a <- Alpha (unColorRGB -> CM.ColorRGB r g b) a where         ColorRGBA r g b a = Alpha (mkColorRGB (CM.ColorRGB r g b)) a {-# COMPLETE ColorRGBA #-}@@ -219,7 +266,7 @@   { unNPM :: M3x3 e   } deriving (Eq, Functor, Applicative, Foldable, Traversable) -instance ColorSpace cs i e => Show (NPM cs e) where+instance Elevator e => Show (NPM cs e) where   show = show . unNPM  -- | Inverse normalized primary matrix (iNPM), which is used to tranform linear@@ -239,7 +286,7 @@ -- -- @since 0.1.0 npmDerive ::-     forall cs i e. (ColorSpace cs i e, RealFloat e)+     forall cs i e. (ColorSpace (cs 'Linear) i e, RealFloat e)   => Gamut cs i e   -> NPM cs e npmDerive (Gamut r g b) = NPM (primaries' * M3x3 coeff coeff coeff)@@ -258,7 +305,7 @@ -- -- @since 0.1.0 inpmDerive ::-     forall cs i e. (ColorSpace cs i e, RealFloat e)+     forall cs i e. (ColorSpace (cs 'Linear) i e, RealFloat e)   => Gamut cs i e   -> INPM cs e inpmDerive = INPM . invertM3x3 . unNPM . npmDerive@@ -270,7 +317,7 @@ -- evaluated, its type carries enough information for this operation. -- -- @since 0.1.0-rgbColorGamut :: (RedGreenBlue cs i, RealFloat e) => Color cs a -> Gamut cs i e+rgbColorGamut :: (RedGreenBlue cs i, RealFloat e) => Color (cs l) a -> Gamut cs i e rgbColorGamut _ = gamut {-# INLINE rgbColorGamut #-} @@ -281,14 +328,12 @@ -- >>> import Graphics.Color.Space.RGB -- >>> :set -XTypeApplications -- >>> pixelWhitePoint @Float (ColorSRGB @Word8 1 2 3)--- WhitePoint (Chromaticity <CIExyY * D65:( 0.312700, 0.329000)>)--- >>> Just (pixelWhitePoint @Float (ColorSRGB @Word8 1 2 3))--- Just (WhitePoint (Chromaticity <CIExyY * D65:( 0.312700, 0.329000)>))+-- WhitePoint (Chromaticity {chromaticityCIExyY = <CIExyY * D65:( 0.31270000, 0.32900000)>}) -- -- @since 0.1.0 pixelWhitePoint ::-     forall e cs a i. (RedGreenBlue cs i, RealFloat e)-  => Color cs a+     forall e cs a i l. (RedGreenBlue cs i, RealFloat e)+  => Color (cs l) a   -> WhitePoint i e pixelWhitePoint _ = whitePoint {-# INLINE pixelWhitePoint #-}
src/Graphics/Color/Space/RGB/Luma.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE BangPatterns #-}+{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveTraversable #-} {-# LANGUAGE FlexibleContexts #-}@@ -31,6 +32,7 @@   , rgbLumaWeights   ) where +import Data.Kind import Data.Coerce import Foreign.Storable import Graphics.Color.Model.RGB as CM@@ -96,7 +98,7 @@ -- Luma Weights -- ------------------ -class Luma cs where+class Luma (cs :: Linearity -> Type) where   {-# MINIMAL (rWeight, gWeight)|(rWeight, bWeight)|(gWeight, bWeight) #-}   rWeight :: RealFloat e => Weight cs e   rWeight = 1 - bWeight - gWeight@@ -119,7 +121,7 @@ -- @since 0.1.4 rgbLumaWeights ::      forall cs e' e. (Luma cs, RealFloat e)-  => Color cs e'+  => Color (cs 'NonLinear) e'   -> Weights e rgbLumaWeights _ =   Weights (V3 (coerce (rWeight :: Weight cs e) :: e)@@ -132,7 +134,7 @@ -- @since 0.1.0 rgbLuma ::      forall cs i e' e. (Luma cs, RedGreenBlue cs i, Elevator e', Elevator e, RealFloat e)-  => Color cs e'+  => Color (cs 'NonLinear) e'   -> Color Y' e rgbLuma rgb' = Y' (coerce (fmap toRealFloat rgb :: Color CM.RGB e) `dotProduct` coerce weights)   where
src/Graphics/Color/Space/RGB/SRGB.hs view
@@ -32,71 +32,88 @@   , itransfer   ) where +import Data.Coerce+import Data.Typeable import Foreign.Storable+import Graphics.Color.Illuminant.ICC.PCS (D50) import Graphics.Color.Model.Internal import qualified Graphics.Color.Model.RGB as CM import Graphics.Color.Space.Internal import Graphics.Color.Space.RGB.Internal-import Graphics.Color.Space.RGB.Luma-import Graphics.Color.Illuminant.ICC.PCS (D50) import Graphics.Color.Space.RGB.ITU.Rec709 (D65, primaries)+import Graphics.Color.Space.RGB.Luma  -- | The most common [sRGB](https://en.wikipedia.org/wiki/SRGB) color space with the -- default `D65` illuminant-data SRGB+data SRGB (l :: Linearity)  -newtype instance Color SRGB e = SRGB (Color CM.RGB e)+newtype instance Color (SRGB l) e = SRGB (Color CM.RGB e)  -- | Constructor for a color in @sRGB@ color space -- -- @since 0.1.0-pattern ColorSRGB :: e -> e -> e -> Color SRGB e+pattern ColorSRGB :: e -> e -> e -> Color (SRGB l) e pattern ColorSRGB r g b = SRGB (CM.ColorRGB r g b) {-# COMPLETE ColorSRGB #-}  -- | Constructor for a color in @sRGB@ color space with alphs channel -- -- @since 0.1.0-pattern ColorSRGBA :: e -> e -> e -> e -> Color (Alpha SRGB) e+pattern ColorSRGBA :: e -> e -> e -> e -> Color (Alpha (SRGB l)) e pattern ColorSRGBA r g b a = Alpha (SRGB (CM.ColorRGB r g b)) a {-# COMPLETE ColorSRGBA #-}  --- | s`RGB` color space-deriving instance Eq e => Eq (Color SRGB e)--- | s`RGB` color space-deriving instance Ord e => Ord (Color SRGB e)--- | s`RGB` color space-deriving instance Functor (Color SRGB)--- | s`RGB` color space-deriving instance Applicative (Color SRGB)--- | s`RGB` color space-deriving instance Foldable (Color SRGB)--- | s`RGB` color space-deriving instance Traversable (Color SRGB)--- | s`RGB` color space-deriving instance Storable e => Storable (Color SRGB e)+-- | `SRGB` color space+deriving instance Eq e => Eq (Color (SRGB l) e)+-- | `SRGB` color space+deriving instance Ord e => Ord (Color (SRGB l) e)+-- | `SRGB` color space+deriving instance Functor (Color (SRGB l))+-- | `SRGB` color space+deriving instance Applicative (Color (SRGB l))+-- | `SRGB` color space+deriving instance Foldable (Color (SRGB l))+-- | `SRGB` color space+deriving instance Traversable (Color (SRGB l))+-- | `SRGB` color space+deriving instance Storable e => Storable (Color (SRGB l) e) --- | s`RGB` color space-instance Elevator e => Show (Color SRGB e) where+-- | `SRGB` color space+instance (Typeable l, Elevator e) => Show (Color (SRGB l) e) where   showsPrec _ = showsColorModel --- | s`RGB` color space-instance Elevator e => ColorModel SRGB e where-  type Components SRGB e = (e, e, e)+-- | `SRGB` color space+instance (Typeable l, Elevator e) => ColorModel (SRGB l) e where+  type Components (SRGB l) e = (e, e, e)   toComponents = toComponents . unColorRGB   {-# INLINE toComponents #-}   fromComponents = mkColorRGB . fromComponents   {-# INLINE fromComponents #-} --- | s`RGB` color space-instance Elevator e => ColorSpace SRGB D65 e where-  type BaseModel SRGB = CM.RGB+-- | `SRGB` linear color space+instance Elevator e => ColorSpace (SRGB 'Linear) D65 e where+  type BaseModel (SRGB 'Linear) = CM.RGB   toBaseSpace = id   {-# INLINE toBaseSpace #-}   fromBaseSpace = id   {-# INLINE fromBaseSpace #-}+  luminance = rgbLinearLuminance . fmap toRealFloat+  {-# INLINE luminance #-}+  toColorXYZ = rgbLinear2xyz . fmap toRealFloat+  {-# INLINE toColorXYZ #-}+  fromColorXYZ = fmap fromRealFloat . xyz2rgbLinear+  {-# INLINE fromColorXYZ #-}+++-- | `SRGB` linear color space+instance Elevator e => ColorSpace (SRGB 'NonLinear) D65 e where+  type BaseModel (SRGB 'NonLinear) = CM.RGB+  toBaseSpace = id+  {-# INLINE toBaseSpace #-}+  fromBaseSpace = id+  {-# INLINE fromBaseSpace #-}   luminance = rgbLuminance . fmap toRealFloat   {-# INLINE luminance #-}   toColorXYZ = rgb2xyz . fmap toRealFloat@@ -104,14 +121,14 @@   fromColorXYZ = fmap fromRealFloat . xyz2rgb   {-# INLINE fromColorXYZ #-} --- | s`RGB` color space+-- | `SRGB` color space instance RedGreenBlue SRGB D65 where   gamut = primaries   npm = npmStandard   inpm = inpmStandard-  ecctf = fmap transfer+  ecctf = SRGB . fmap transfer . coerce   {-# INLINE ecctf #-}-  dcctf = fmap itransfer+  dcctf = SRGB . fmap itransfer . coerce   {-# INLINE dcctf #-}  instance Luma SRGB where@@ -125,9 +142,9 @@ -- >>> :set -XDataKinds -- >>> import Graphics.Color.Space.RGB -- >>> npmStandard :: NPM SRGB Float--- [ [ 0.412400, 0.357600, 0.180500 ]--- , [ 0.212600, 0.715200, 0.072200 ]--- , [ 0.019300, 0.119200, 0.950500 ] ]+-- [ [ 0.41240000, 0.35760000, 0.18050000 ]+-- , [ 0.21260000, 0.71520000, 0.07220000 ]+-- , [ 0.01930000, 0.11920000, 0.95050000 ] ] -- -- @since 0.1.0 npmStandard :: RealFloat a => NPM SRGB a@@ -141,9 +158,9 @@ -- >>> :set -XDataKinds -- >>> import Graphics.Color.Space.RGB -- >>> inpmStandard :: INPM SRGB Float--- [ [ 3.240600,-1.537200,-0.498600 ]--- , [-0.968900, 1.875800, 0.041500 ]--- , [ 0.055700,-0.204000, 1.057000 ] ]+-- [ [ 3.24060000,-1.53720000,-0.49860000 ]+-- , [-0.96890000, 1.87580000, 0.04150000 ]+-- , [ 0.05570000,-0.20400000, 1.05700000 ] ] -- -- @since 0.1.0 inpmStandard :: RealFloat a => INPM SRGB a
src/Graphics/Pixel/ColorSpace.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DataKinds #-} {-# LANGUAGE ExplicitForAll #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE KindSignatures #-}@@ -39,6 +40,8 @@   , toPixelF   , toPixelD   -- * RGB+  , toPixelLinearRGB+  , fromPixelLinearRGB   -- ** sRGB color space   , pattern PixelSRGB   , pattern PixelSRGBA@@ -69,12 +72,13 @@  -- | Convert a pixel from one color space to any other. --+-- >>> :set -XDataKinds -- >>> :set -XTypeApplications -- >>> px = PixelSRGB @Float 0.0 0.5 1.0 -- >>> px--- <SRGB:( 0.000000, 0.500000, 1.000000)>--- >>> convertPixel @AdobeRGB @_ @Word8 px--- <AdobeRGB:( 71,127,251)>+-- <SRGB 'NonLinear:( 0.00000000, 0.50000000, 1.00000000)>+-- >>> convertPixel @(AdobeRGB 'NonLinear) @_ @Word8 px+-- <AdobeRGB 'NonLinear:( 71,127,251)> -- -- @since 0.1.0 convertPixel ::@@ -87,14 +91,14 @@ -- | Constructor for a pixel in @sRGB@ color space -- -- @since 0.1.0-pattern PixelSRGB :: e -> e -> e -> Pixel SRGB e+pattern PixelSRGB :: e -> e -> e -> Pixel (SRGB 'NonLinear) e pattern PixelSRGB r g b = Pixel (SRGB (CM.ColorRGB r g b)) {-# COMPLETE PixelSRGB #-}  -- | Constructor for a pixel in @sRGB@ color space with Alpha channel -- -- @since 0.1.0-pattern PixelSRGBA :: e -> e -> e -> e -> Pixel (Alpha SRGB) e+pattern PixelSRGBA :: e -> e -> e -> e -> Pixel (Alpha (SRGB 'NonLinear)) e pattern PixelSRGBA r g b a = Pixel (Alpha (SRGB (CM.ColorRGB r g b)) a) {-# COMPLETE PixelSRGBA #-} @@ -130,7 +134,7 @@ -- | Constructor for a pixel in RGB color space. -- -- @since 0.1.0-pattern PixelRGB :: RedGreenBlue cs (i :: k) => e -> e -> e -> Pixel cs e+pattern PixelRGB :: RedGreenBlue cs (i :: k) => e -> e -> e -> Pixel (cs l) e pattern PixelRGB r g b <- (coerce . unColorRGB . coerce -> V3 r g b) where         PixelRGB r g b = coerce (mkColorRGB (coerce (V3 r g b))) {-# COMPLETE PixelRGB #-}@@ -191,7 +195,7 @@ -- | Constructor for a pixel in RGB color space with Alpha channel -- -- @since 0.1.0-pattern PixelRGBA :: RedGreenBlue cs i => e -> e -> e -> e -> Pixel (Alpha cs) e+pattern PixelRGBA :: RedGreenBlue cs i => e -> e -> e -> e -> Pixel (Alpha (cs l)) e pattern PixelRGBA r g b a <- (pixelColor -> Alpha (unColorRGB -> CM.ColorRGB r g b) a) where         PixelRGBA r g b a = Pixel (Alpha (mkColorRGB (CM.ColorRGB r g b)) a) {-# COMPLETE PixelRGBA #-}@@ -235,12 +239,28 @@ pattern PixelYCbCrA y cb cr a = Pixel (ColorYCbCrA y cb cr a) {-# COMPLETE PixelYCbCrA #-} +-- | Convert non-linear RGB color space into linear one+--+-- @since 0.2.0+toPixelLinearRGB ::+     (RedGreenBlue cs i, Elevator e, RealFloat e) => Pixel (cs 'NonLinear) e -> Pixel (cs 'Linear) e+toPixelLinearRGB = liftPixel dcctf+{-# INLINE toPixelLinearRGB #-}++-- | Convert linear RGB color space into a non-linear one+--+-- @since 0.2.0+fromPixelLinearRGB ::+     (RedGreenBlue cs i, Elevator e, RealFloat e) => Pixel (cs 'Linear) e -> Pixel (cs 'NonLinear) e+fromPixelLinearRGB = liftPixel ecctf+{-# INLINE fromPixelLinearRGB #-}+ -- | Convert an RGB pixel to `Y'` if it has the weights specified with `Luma`. -- -- @since 0.1.4 rgbPixelLuma ::      forall cs i e' e. (Luma cs, RedGreenBlue cs i, Elevator e', Elevator e, RealFloat e)-  => Pixel cs e'+  => Pixel (cs 'NonLinear) e'   -> Pixel Y' e rgbPixelLuma = liftPixel rgbLuma 
src/Graphics/Pixel/Internal.hs view
@@ -33,6 +33,7 @@ import qualified Data.Vector.Generic as V import qualified Data.Vector.Generic.Mutable as VM import qualified Data.Vector.Unboxed as VU+import Data.Default.Class (Default)  -- | Digital imaging is one of the most common places for a color to be used in. The -- smallest element in any image is a pixel, which is defined by its color.@@ -57,6 +58,7 @@ deriving instance Foldable (Color cs) => Foldable (Pixel cs) deriving instance Traversable (Color cs) => Traversable (Pixel cs) deriving instance Storable (Color cs e) => Storable (Pixel cs e)+deriving instance Default (Color cs e) => Default (Pixel cs e) instance Show (Color cs e) => Show (Pixel cs e) where   show = show . pixelColor 
+ tests/Graphics/Color/Space/CIE1931/RGBSpec.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}+module Graphics.Color.Space.CIE1931.RGBSpec (spec) where++import Graphics.Color.Space.CIE1931.RGB+import Graphics.Color.Space.Common++instance (Elevator e, Random e) => Arbitrary (Color (CIERGB l) e) where+  arbitrary = ColorRGB <$> arbitraryElevator <*> arbitraryElevator <*> arbitraryElevator++spec :: Spec+spec = describe "RGB" $ do+  colorModelSpec @(CIERGB 'NonLinear) @Word "CIERGB 'NonLinear"+  colorSpaceSpec @(CIERGB 'NonLinear) @Float+  colorModelSpec @(CIERGB 'Linear) @Int "CIERGB 'Linear"+  colorSpaceSpec @(CIERGB 'Linear) @Double
tests/Graphics/Color/Space/CIE1976/LABSpec.hs view
@@ -28,9 +28,9 @@     prop "lab2srgb" $ \lab@(ColorLAB l' a' b' :: Color (LAB 'W.D65) Double) ->       case Colour.toSRGB (Colour.cieLAB Colour.d65 l' a' b') of         Colour.RGB r g b ->-          (convertColor lab :: Color (SRGB 'W.D65) Double)+          (convertColor lab :: Color (SRGB 'W.D65 'NonLinear) Double)           `epsilonEqColorDouble` ColorRGB r g b-    prop "srgb2xlab" $ \rgb@(ColorRGB r g b :: Color (SRGB 'W.D65) Double) ->+    prop "srgb2xlab" $ \rgb@(ColorRGB r g b :: Color (SRGB 'W.D65 'NonLinear) Double) ->       case Colour.cieLABView Colour.d65 (Colour.sRGB r g b) of         (l', a', b') ->           convertColor rgb `epsilonEqColorDouble` (ColorLAB l' a' b' :: Color (LAB 'W.D65) Double)
tests/Graphics/Color/Space/RGB/AdobeRGBSpec.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeApplications #-} module Graphics.Color.Space.RGB.AdobeRGBSpec (spec, arbitraryElevator) where@@ -5,11 +6,12 @@ import Graphics.Color.Space.Common import Graphics.Color.Space.RGB.AdobeRGB -instance (Elevator e, Random e) => Arbitrary (Color AdobeRGB e) where+instance (Elevator e, Random e) => Arbitrary (Color (AdobeRGB l) e) where   arbitrary = ColorRGB <$> arbitraryElevator <*> arbitraryElevator <*> arbitraryElevator   spec :: Spec spec = describe "AdobeRGB" $ do-  colorModelSpec @AdobeRGB @Word "AdobeRGB"-  colorSpaceLenientSpec @AdobeRGB @Float 0.00001+  colorModelSpec @(AdobeRGB 'NonLinear) @Word "AdobeRGB 'NonLinear"+  colorSpaceLenientSpec @(AdobeRGB 'NonLinear) @Float 0.00001+  colorSpaceLenientSpec @(AdobeRGB 'Linear) @Double 0.00001
tests/Graphics/Color/Space/RGB/Alternative/CMYKSpec.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-}@@ -18,9 +19,9 @@ spec :: Spec spec =   describe "CMYK" $ do-    colorModelSpec @(CMYK (Derived.SRGB D65)) @Word "CMYK"-    colorSpaceCommonSpec @(CMYK (Derived.SRGB D65)) @Double $ pure ()+    colorModelSpec @(CMYK (Derived.SRGB D65 'NonLinear)) @Word "CMYK"+    colorSpaceCommonSpec @(CMYK (Derived.SRGB D65 'NonLinear)) @Double $ pure ()     -- Arbitrary inverse CMYKtoSRGB is not true.-    prop "sRGBtoCMYK" $ \ (srgb :: Color (Derived.SRGB D65) Double) ->-      toBaseSpace (fromBaseSpace srgb :: Color (CMYK (Derived.SRGB D65)) Double)+    prop "sRGBtoCMYK" $ \ (srgb :: Color (Derived.SRGB D65 'NonLinear) Double) ->+      toBaseSpace (fromBaseSpace srgb :: Color (CMYK (Derived.SRGB D65 'NonLinear)) Double)       `epsilonEqColor` srgb
tests/Graphics/Color/Space/RGB/Alternative/HSISpec.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeApplications #-} module Graphics.Color.Space.RGB.Alternative.HSISpec (spec) where@@ -17,5 +18,5 @@ spec =   describe "HSI" $ do     describe "Derived-sRGB" $ do-      colorModelSpec @(HSI (Derived.SRGB D65)) @Word "HSI"-      colorSpaceSpec @(HSI (Derived.SRGB D65)) @Double+      colorModelSpec @(HSI (Derived.SRGB D65 'NonLinear)) @Word "HSI"+      colorSpaceSpec @(HSI (Derived.SRGB D65 'NonLinear)) @Double
tests/Graphics/Color/Space/RGB/Alternative/HSLSpec.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeApplications #-} module Graphics.Color.Space.RGB.Alternative.HSLSpec (spec) where@@ -17,5 +18,5 @@ spec =   describe "HSL" $ do     describe "Derived-sRGB" $ do-      colorModelSpec @(HSL (Derived.SRGB D65)) @Word "HSL"-      colorSpaceSpec @(HSL (Derived.SRGB D65)) @Double+      colorModelSpec @(HSL (Derived.SRGB D65 'NonLinear)) @Word "HSL"+      colorSpaceSpec @(HSL (Derived.SRGB D65 'NonLinear)) @Double
tests/Graphics/Color/Space/RGB/Alternative/HSVSpec.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeApplications #-} module Graphics.Color.Space.RGB.Alternative.HSVSpec (spec) where@@ -17,5 +18,7 @@ spec =   describe "HSV" $ do     describe "Derived-sRGB" $ do-      colorModelSpec @(HSV (Derived.SRGB D65)) @Word "HSV"-      colorSpaceSpec @(HSV (Derived.SRGB D65)) @Double+      colorModelSpec @(HSV (Derived.SRGB D65 'NonLinear)) @Word "HSV"+      colorSpaceSpec @(HSV (Derived.SRGB D65 'NonLinear)) @Double+      colorModelSpec @(HSV (Derived.SRGB D65 'Linear)) @Int "HSV"+      colorSpaceSpec @(HSV (Derived.SRGB D65 'Linear)) @Float
tests/Graphics/Color/Space/RGB/Alternative/YCbCrSpec.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE ScopedTypeVariables #-}@@ -23,26 +24,26 @@ spec =   describe "YCbCr" $ do     describe "sRGB" $ do-      colorModelSpec @(YCbCr SRGB) @Word "YCbCr"-      colorSpaceCommonSpec @(YCbCr SRGB) @Double $ pure ()+      colorModelSpec @(YCbCr (SRGB 'NonLinear)) @Word "YCbCr"+      colorSpaceCommonSpec @(YCbCr (SRGB 'NonLinear)) @Double $ pure ()     describe "Derived-sRGB" $ do-      colorModelSpec @(YCbCr (Derived.SRGB D65)) @Word "YCbCr"-      colorSpaceCommonSpec @(YCbCr (Derived.SRGB D65)) @Double $ pure ()-    prop "toColorYCbCr . toColorYCbCr" $ \(rgb :: Color (Derived.SRGB D65) Double) ->+      colorModelSpec @(YCbCr (Derived.SRGB D65 'NonLinear)) @Word "YCbCr"+      colorSpaceCommonSpec @(YCbCr (Derived.SRGB D65 'NonLinear)) @Double $ pure ()+    prop "toColorYCbCr . toColorYCbCr" $ \(rgb :: Color (Derived.SRGB D65 'NonLinear) Double) ->       rgb `epsilonEqColor`-      fromColorYCbCr (toColorYCbCr rgb :: Color (YCbCr (Derived.SRGB D65)) Double)-    prop "toColorYCbCr == srgb2ycbcr" $ \(rgb :: Color SRGB Double) ->+      fromColorYCbCr (toColorYCbCr rgb :: Color (YCbCr (Derived.SRGB D65 'NonLinear)) Double)+    prop "toColorYCbCr == srgb2ycbcr" $ \(rgb :: Color (SRGB 'NonLinear) Double) ->       srgb2ycbcr rgb `epsilonEqColor`-      (toColorYCbCr rgb :: Color (YCbCr SRGB) Double)-    prop "fromColorYCbCr == ycbcr2srgb" $ \(ycbcr :: Color (YCbCr SRGB) Double) ->-      ycbcr2srgb ycbcr `epsilonEqColor` (fromColorYCbCr ycbcr :: Color SRGB Double)+      (toColorYCbCr rgb :: Color (YCbCr (SRGB 'NonLinear)) Double)+    prop "fromColorYCbCr == ycbcr2srgb" $ \(ycbcr :: Color (YCbCr (SRGB 'NonLinear)) Double) ->+      ycbcr2srgb ycbcr `epsilonEqColor` (fromColorYCbCr ycbcr :: Color (SRGB 'NonLinear) Double)     describe "Match JuicyPixels" $ do-      prop "rgb2ycbcr" $ \(rgb@(ColorRGB r g b) :: Color SRGB Word8) ->+      prop "rgb2ycbcr" $ \(rgb@(ColorRGB r g b) :: Color (SRGB 'NonLinear) Word8) ->         case JuicyPixels.convertPixel (JuicyPixels.PixelRGB8 r g b) of           JuicyPixels.PixelYCbCr8 y cb cr ->-            (fromBaseSpace rgb :: Color (YCbCr SRGB) Word8)+            (fromBaseSpace rgb :: Color (YCbCr (SRGB 'NonLinear)) Word8)             `approxIntegralColorExpect1` ColorYCbCr y cb cr-      prop "ycbcr2rgb" $ \(ycbcr@(ColorYCbCr y cb cr) :: Color (YCbCr SRGB) Word8) ->+      prop "ycbcr2rgb" $ \(ycbcr@(ColorYCbCr y cb cr) :: Color (YCbCr (SRGB 'NonLinear)) Word8) ->         case JuicyPixels.convertPixel (JuicyPixels.PixelYCbCr8 y cb cr) of           JuicyPixels.PixelRGB8 r g b ->             (toBaseSpace ycbcr) `approxIntegralColorExpect1` ColorRGB r g b
tests/Graphics/Color/Space/RGB/Derived/AdobeRGBSpec.hs view
@@ -10,11 +10,13 @@ import Graphics.Color.Space.Common import Graphics.Color.Space.RGB.Derived.AdobeRGB -instance (Elevator e, Random e, Illuminant i) => Arbitrary (Color (AdobeRGB (i :: k)) e) where+instance (Elevator e, Random e, Illuminant i) => Arbitrary (Color (AdobeRGB (i :: k) l) e) where   arbitrary = ColorRGB <$> arbitraryElevator <*> arbitraryElevator <*> arbitraryElevator   spec :: Spec spec = describe "AdobeRGB" $ do-  colorModelSpec @(AdobeRGB 'D65) @Word "AdobeRGB"-  colorSpaceSpec @(AdobeRGB 'D65) @Float+  colorModelSpec @(AdobeRGB 'D65 'NonLinear) @Word "AdobeRGB CIE1931 'D65 'NonLinear"+  colorSpaceSpec @(AdobeRGB 'D65 'NonLinear) @Float+  colorModelSpec @(AdobeRGB 'D50 'Linear) @Int "AdobeRGB CIE1931 'D50 'Linear"+  colorSpaceSpec @(AdobeRGB 'D50 'Linear) @Double
+ tests/Graphics/Color/Space/RGB/Derived/CIERGBSpec.hs view
@@ -0,0 +1,21 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}+module Graphics.Color.Space.RGB.Derived.CIERGBSpec (spec) where++import Graphics.Color.Illuminant.CIE1931+import Graphics.Color.Space.RGB.Derived.CIERGB+import Graphics.Color.Space.Common++instance (Elevator e, Random e, Illuminant i) => Arbitrary (Color (CIERGB (i :: k) l) e) where+  arbitrary = ColorRGB <$> arbitraryElevator <*> arbitraryElevator <*> arbitraryElevator++spec :: Spec+spec = describe "RGB" $ do+  colorModelSpec @(CIERGB 'E 'NonLinear) @Word "CIERGB CIE1931 'E 'NonLinear"+  colorSpaceSpec @(CIERGB 'E 'NonLinear) @Float+  colorModelSpec @(CIERGB 'D75 'Linear) @Int "CIERGB CIE1931 'D75 'Linear"+  colorSpaceSpec @(CIERGB 'D75 'Linear) @Double
tests/Graphics/Color/Space/RGB/Derived/SRGBSpec.hs view
@@ -14,29 +14,33 @@ import Graphics.Color.Space.Common import Graphics.Color.Space.RGB.Derived.SRGB -instance (Elevator e, Random e, Illuminant i) => Arbitrary (Color (SRGB (i :: k)) e) where+instance (Elevator e, Random e, Illuminant i) => Arbitrary (Color (SRGB (i :: k) l) e) where   arbitrary = ColorRGB <$> arbitraryElevator <*> arbitraryElevator <*> arbitraryElevator   spec :: Spec spec = describe "SRGB" $ do-  colorModelSpec @(SRGB 'D65) @Word "SRGB"-  colorSpaceSpec @(SRGB 'D65) @Float+  colorModelSpec @(SRGB 'D65 'NonLinear) @Word "SRGB CIE1931 'D65 'NonLinear"+  colorSpaceSpec @(SRGB 'D65 'NonLinear) @Float+  colorModelSpec @(SRGB 'D55 'Linear) @Int "SRGB CIE1931 'D55 'Linear"+  colorSpaceSpec @(SRGB 'D55 'Linear) @Double   describe "Same as colour package" $ do     prop "xyz2srgb" $ \xyz@(ColorXYZ x y z :: Color (XYZ 'W.D65) Double) ->       case Colour.toSRGB (Colour.cieXYZ x y z) of         Colour.RGB r g b ->-          (fromColorXYZ xyz :: Color (SRGB 'W.D65) Double) `epsilonEqColorDouble` ColorRGB r g b-    prop "xyz2linearsrgb" $ \xyz@(ColorXYZ x y z :: Color (XYZ 'W.D65) Double) ->+          (fromColorXYZ xyz :: Color (SRGB 'W.D65 'NonLinear) Double)+          `epsilonEqColorDouble`+          ColorRGB r g b+    prop "xyz2linearsrgb" $ \xyz@(ColorXYZ x y z :: Color (XYZ 'W.D65 ) Double) ->       case Colour.toRGB (Colour.cieXYZ x y z) of         Colour.RGB r g b ->-          dcctf (fromColorXYZ xyz :: Color (SRGB 'W.D65) Double) `epsilonEqColorDouble`+          dcctf (fromColorXYZ xyz :: Color (SRGB 'W.D65 'NonLinear) Double) `epsilonEqColorDouble`           ColorRGB r g b-    prop "srgb2xyz" $ \rgb@(ColorRGB r g b :: Color (SRGB 'W.D65) Double) ->+    prop "srgb2xyz" $ \rgb@(ColorRGB r g b :: Color (SRGB 'W.D65 'NonLinear) Double) ->       case Colour.cieXYZView (Colour.sRGB r g b) of         (x, y, z) ->           toColorXYZ rgb `epsilonEqColorDouble` ColorXYZ x y z-    prop "linersrgb2xyz" $ \rgb@(ColorRGB r g b :: Color (SRGB 'W.D65) Double) ->+    prop "linersrgb2xyz" $ \rgb@(ColorRGB r g b :: Color (SRGB 'W.D65 'Linear) Double) ->       case Colour.cieXYZView (Colour.rgb r g b) of         (x, y, z) ->           toColorXYZ (ecctf rgb) `epsilonEqColorDouble` ColorXYZ x y z
tests/Graphics/Color/Space/RGB/ITU/Rec470Spec.hs view
@@ -7,18 +7,22 @@ import Graphics.Color.Space.Common import Graphics.Color.Space.RGB.ITU.Rec470 -instance (Elevator e, Random e) => Arbitrary (Color BT470_525 e) where+instance (Elevator e, Random e) => Arbitrary (Color (BT470_525 l) e) where   arbitrary = ColorRGB <$> arbitraryElevator <*> arbitraryElevator <*> arbitraryElevator -instance (Elevator e, Random e) => Arbitrary (Color BT470_625 e) where+instance (Elevator e, Random e) => Arbitrary (Color (BT470_625 l) e) where   arbitrary = ColorRGB <$> arbitraryElevator <*> arbitraryElevator <*> arbitraryElevator   spec :: Spec spec = do   describe "Rec470 (525)" $ do-    colorModelSpec @BT470_525 @Word "BT470_525"-    colorSpaceSpec @BT470_525 @Float+    colorModelSpec @(BT470_525 'NonLinear) @Word "BT470_525 'NonLinear"+    colorSpaceSpec @(BT470_525 'NonLinear) @Float+    colorModelSpec @(BT470_525 'Linear) @Word8 "BT470_525 'Linear"+    colorSpaceSpec @(BT470_525 'Linear) @Double   describe "Rec470 (625)" $ do-    colorModelSpec @BT470_625 @Word "BT470_625"-    colorSpaceSpec @BT470_625 @Float+    colorModelSpec @(BT470_625 'NonLinear) @Word "BT470_625 'NonLinear"+    colorSpaceSpec @(BT470_625 'NonLinear) @Float+    colorModelSpec @(BT470_625 'Linear) @Word16 "BT470_625 'Linear"+    colorSpaceSpec @(BT470_625 'Linear) @Double
tests/Graphics/Color/Space/RGB/ITU/Rec601Spec.hs view
@@ -7,18 +7,20 @@ import Graphics.Color.Space.Common import Graphics.Color.Space.RGB.ITU.Rec601 -instance (Elevator e, Random e) => Arbitrary (Color BT601_525 e) where+instance (Elevator e, Random e) => Arbitrary (Color (BT601_525 l) e) where   arbitrary = ColorRGB <$> arbitraryElevator <*> arbitraryElevator <*> arbitraryElevator -instance (Elevator e, Random e) => Arbitrary (Color BT601_625 e) where+instance (Elevator e, Random e) => Arbitrary (Color (BT601_625 l) e) where   arbitrary = ColorRGB <$> arbitraryElevator <*> arbitraryElevator <*> arbitraryElevator   spec :: Spec spec = do   describe "Rec601 (525)" $ do-    colorModelSpec @BT601_525 @Word "BT601_525"-    colorSpaceSpec @BT601_525 @Float+    colorModelSpec @(BT601_525 'NonLinear) @Word "BT601_525"+    colorSpaceSpec @(BT601_525 'NonLinear) @Float+    colorSpaceSpec @(BT601_525 'Linear) @Double   describe "Rec601 (625)" $ do-    colorModelSpec @BT601_625 @Word "BT601_625"-    colorSpaceSpec @BT601_625 @Float+    colorModelSpec @(BT601_625 'NonLinear) @Word "BT601_625"+    colorSpaceSpec @(BT601_625 'NonLinear) @Float+    colorSpaceSpec @(BT601_625 'Linear) @Double
tests/Graphics/Color/Space/RGB/ITU/Rec709Spec.hs view
@@ -7,12 +7,13 @@ import Graphics.Color.Space.Common import Graphics.Color.Space.RGB.ITU.Rec709 -instance (Elevator e, Random e) => Arbitrary (Color BT709 e) where+instance (Elevator e, Random e) => Arbitrary (Color (BT709 l) e) where   arbitrary = ColorRGB <$> arbitraryElevator <*> arbitraryElevator <*> arbitraryElevator   spec :: Spec spec = describe "Rec709" $ do-  colorModelSpec @BT709 @Word "BT709"+  colorModelSpec @(BT709 'NonLinear) @Word "BT709"   -- Roundrtrip is not always very accurate, eg: 8.115324539550295e-2 /= 8.140132075907752e-2-  colorSpaceLenientSpec @BT709 @Float 5e-4+  colorSpaceLenientSpec @(BT709 'NonLinear) @Float 5e-4+  colorSpaceLenientSpec @(BT709 'Linear) @Double 5e-4
tests/Graphics/Color/Space/RGB/SRGBSpec.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeApplications #-} module Graphics.Color.Space.RGB.SRGBSpec (spec, arbitraryElevator) where@@ -5,11 +6,13 @@ import Graphics.Color.Space.Common import Graphics.Color.Space.RGB.SRGB -instance (Elevator e, Random e) => Arbitrary (Color SRGB e) where+instance (Elevator e, Random e) => Arbitrary (Color (SRGB l) e) where   arbitrary = ColorRGB <$> arbitraryElevator <*> arbitraryElevator <*> arbitraryElevator   spec :: Spec spec = describe "SRGB" $ do-  colorModelSpec @SRGB @Word "SRGB"-  colorSpaceLenientSpec @SRGB @Float 0.001+  colorModelSpec @(SRGB 'NonLinear) @Word "SRGB 'NonLinear"+  colorSpaceLenientSpec @(SRGB 'NonLinear) @Float 0.001+  colorModelSpec @(SRGB 'Linear) @Word "SRGB 'Linear"+  colorSpaceLenientSpec @(SRGB 'Linear) @Double 0.001
tests/Graphics/Color/Standard/RALSpec.hs view
@@ -1178,7 +1178,10 @@   ]  -ralAlternatives :: [(Color SRGB Word8, Color (HSL SRGB) Float, Color (CMYK SRGB) Word8)]+ralAlternatives ::+     [( Color (SRGB 'NonLinear) Word8+      , Color (HSL (SRGB 'NonLinear)) Float+      , Color (CMYK (SRGB 'NonLinear)) Word8)] ralAlternatives =   [ (ColorRGB r g b, ColorH360SL h (s / 100) (l / 100), ColorCMYK c m y k)   | (_y', r, g, b, h, s, l, c, m, y, k) <- ralAlternativeRaw@@ -1402,7 +1405,7 @@       , (122.57, 121, 123, 123, 0.50, 0.82, 47.84, 2, 0, 0, 52)       ] -_hexes :: [Color SRGB Word8]+_hexes :: [Color (SRGB 'NonLinear) Word8] _hexes =   [ fromIntegral <$>   fromComponents (shiftR (x .&. 0xFF0000) 16, shiftR (x .&. 0xFF00) 8, x .&. 0xFF)
tests/Main.hs view
@@ -1,10 +1,11 @@ module Main where  import Spec-import System.IO (BufferMode (LineBuffering), hSetBuffering, stdout)+import System.IO (BufferMode (LineBuffering), hSetBuffering, hSetEncoding, stdout, utf8) import Test.Hspec  main :: IO () main = do   hSetBuffering stdout LineBuffering+  hSetEncoding stdout utf8   hspec spec
tests/doctests.hs view
@@ -1,12 +1,6 @@ module Main where -import Build_doctests (flags, pkgs, module_sources)-import Data.Foldable (traverse_) import Test.DocTest (doctest)  main :: IO ()-main = do-    traverse_ putStrLn args-    doctest args-  where-    args = flags ++ pkgs ++ module_sources+main = doctest ["src"]