{-|
Module:      Graphics.Blank.Style
Copyright:   (C) 2014-2015, The University of Kansas
License:     BSD-style (see the file LICENSE)
Maintainer:  Andy Gill
Stability:   Beta
Portability: GHC

This module exposes overloaded versions of @blank-canvas@ functions that take a
style or color as an argument, which may be of interest if you desire stronger
type safety than @Text@ provides.

Note that this module exports function names that conflict with "Graphics.Blank".
Make sure to hide any functions from "Graphics.Blank" that you use from this
module.
-}
module Graphics.Blank.Style 
    ( -- * Overloaded versions of 'Canvas' functions
      strokeStyle
    , fillStyle
    , shadowColor
    , addColorStop
    , Style(..)
    , CanvasColor
      -- * 'CanvasColor' creation
    , rgb
    , rgbPercent
    , rgba
    , rgbaPercent
    , hsl
    , hsla
      -- * @colour@ reexports
      -- ** 'Colour' and 'AlphaColour'
    , Colour
    , AlphaColour
    , transparent
    , readColourName
      -- ** CSS Level 1 colors
    , aqua
    , black
    , blue
    , fuchsia
    , gray
    , green
    , lime
    , maroon
    , navy
    , olive
    , purple
    , red
    , silver
    , teal
    , white
    , yellow
      -- ** CSS Level 2 color
    , orange
      -- ** CSS Color Module Level 3 colors
    , aliceblue
    , antiquewhite
    , aquamarine
    , azure
    , beige
    , bisque
    , blanchedalmond
    , blueviolet
    , brown
    , burlywood
    , cadetblue
    , chartreuse
    , chocolate
    , coral
    , cornflowerblue
    , cornsilk
    , crimson
    , cyan
    , darkblue
    , darkcyan
    , darkgoldenrod
    , darkgray
    , darkgreen
    , darkgrey
    , darkkhaki
    , darkmagenta
    , darkolivegreen
    , darkorange
    , darkorchid
    , darkred
    , darksalmon
    , darkseagreen
    , darkslateblue
    , darkslategray
    , darkslategrey
    , darkturquoise
    , darkviolet
    , deeppink
    , deepskyblue
    , dimgray
    , dimgrey
    , dodgerblue
    , firebrick
    , floralwhite
    , forestgreen
    , gainsboro
    , ghostwhite
    , gold
    , goldenrod
    , grey
    , greenyellow
    , honeydew
    , hotpink
    , indianred
    , indigo
    , ivory
    , khaki
    , lavender
    , lavenderblush
    , lawngreen
    , lemonchiffon
    , lightblue
    , lightcoral
    , lightcyan
    , lightgoldenrodyellow
    , lightgray
    , lightgreen
    , lightgrey
    , lightpink
    , lightsalmon
    , lightseagreen
    , lightskyblue
    , lightslategray
    , lightslategrey
    , lightsteelblue
    , lightyellow
    , limegreen
    , linen
    , magenta
    , mediumaquamarine
    , mediumblue
    , mediumorchid
    , mediumpurple
    , mediumseagreen
    , mediumslateblue
    , mediumspringgreen
    , mediumturquoise
    , mediumvioletred
    , midnightblue
    , mintcream
    , mistyrose
    , moccasin
    , navajowhite
    , oldlace
    , olivedrab
    , orangered
    , orchid
    , palegoldenrod
    , palegreen
    , paleturquoise
    , palevioletred
    , papayawhip
    , peachpuff
    , peru
    , pink
    , plum
    , powderblue
    , rosybrown
    , royalblue
    , saddlebrown
    , salmon
    , sandybrown
    , seagreen
    , seashell
    , sienna
    , skyblue
    , slateblue
    , slategray
    , slategrey
    , snow
    , springgreen
    , steelblue
    , tan
    , thistle
    , tomato
    , turquoise
    , violet
    , wheat
    , whitesmoke
    , yellowgreen
      -- ** CSS Color Module Level 4 color
    , rebeccapurple
    ) where

import qualified Control.Monad.Fail as Fail

import qualified Data.Colour as Colour
import           Data.Colour hiding (black, transparent)
import qualified Data.Colour.Names as Names
import           Data.Colour.RGBSpace
import qualified Data.Colour.RGBSpace.HSL as HSL
import           Data.Colour.SRGB
import           Data.Word

import           Graphics.Blank.Canvas
import           Graphics.Blank.Generated
import           Graphics.Blank.JavaScript
import           Graphics.Blank.Types

import           Prelude hiding (tan)

-- | Specifies a 'Colour' by its red, green, and blue components, where each component
-- is an integer between 0 and 255.
rgb :: Word8 -> Word8 -> Word8 -> Colour Double
rgb :: Word8 -> Word8 -> Word8 -> Colour Double
rgb = forall b.
(Ord b, Floating b) =>
Word8 -> Word8 -> Word8 -> Colour b
sRGB24

-- | Specifies a 'Colour' by its red, green, and blue components, where each component
-- is given by a percentage (which should be between 0% to 100%) of 255.
rgbPercent :: Percentage -> Percentage -> Percentage -> Colour Double
rgbPercent :: Double -> Double -> Double -> Colour Double
rgbPercent Double
r Double
g Double
b = forall b. (Ord b, Floating b) => b -> b -> b -> Colour b
sRGB (Double
rforall a. Fractional a => a -> a -> a
/Double
100) (Double
gforall a. Fractional a => a -> a -> a
/Double
100) (Double
bforall a. Fractional a => a -> a -> a
/Double
100)

-- | Specifies an 'AlphaColour' by its RGB components and an alpha value.
-- 
-- @
-- 'rgba' r g b 0.0 = 'transparent'
-- @
rgba :: Word8 -> Word8 -> Word8 -> Alpha -> AlphaColour Double
rgba :: Word8 -> Word8 -> Word8 -> Double -> AlphaColour Double
rgba Word8
r Word8
g Word8
b = forall a. Num a => Colour a -> a -> AlphaColour a
withOpacity forall a b. (a -> b) -> a -> b
$ Word8 -> Word8 -> Word8 -> Colour Double
rgb Word8
r Word8
g Word8
b

-- | Specifies an 'AlphaColour' by its RGB component percentages (which should be
-- between 0% and 100%) and an alpha value.
-- 
-- @
-- 'rgbaPercent' r g b 0.0 = 'transparent'
-- @
rgbaPercent :: Percentage -> Percentage -> Percentage -> Alpha -> AlphaColour Double
rgbaPercent :: Double -> Double -> Double -> Double -> AlphaColour Double
rgbaPercent Double
r Double
g Double
b = forall a. Num a => Colour a -> a -> AlphaColour a
withOpacity forall a b. (a -> b) -> a -> b
$ Double -> Double -> Double -> Colour Double
rgbPercent Double
r Double
g Double
b

-- | Specifies a 'Colour' by its hue, saturation, and lightness value, where
-- saturation and lightness are percentages between 0% and 100%.
hsl :: Degrees -> Percentage -> Percentage -> Colour Double
hsl :: Double -> Double -> Double -> Colour Double
hsl Double
h Double
s Double
l = forall a b. (a -> a -> a -> b) -> RGB a -> b
uncurryRGB forall b. (Ord b, Floating b) => b -> b -> b -> Colour b
sRGB forall a b. (a -> b) -> a -> b
$ forall a. (RealFrac a, Ord a) => a -> a -> a -> RGB a
HSL.hsl (forall a b. (Real a, Fractional b) => a -> b
realToFrac Double
h) (Double
sforall a. Fractional a => a -> a -> a
/Double
100) (Double
lforall a. Fractional a => a -> a -> a
/Double
100)

-- |
-- Specifies an 'AlphaColour' by its HSL values and an alpha value.
-- 
-- @
-- 'hsla' h s v 0.0 = 'transparent'
-- @
hsla :: Degrees -> Percentage -> Percentage -> Alpha -> AlphaColour Double
hsla :: Double -> Double -> Double -> Double -> AlphaColour Double
hsla Double
h Double
s Double
l = forall a. Num a => Colour a -> a -> AlphaColour a
withOpacity forall a b. (a -> b) -> a -> b
$ Double -> Double -> Double -> Colour Double
hsl Double
h Double
s Double
l

-- |
-- Takes a string naming a 'Colour' (must be all lowercase) and returns it. Fails if
-- the name is not recognized.
readColourName :: Fail.MonadFail m => String -> m (Colour Double)
readColourName :: forall (m :: * -> *). MonadFail m => String -> m (Colour Double)
readColourName String
"rebeccapurple" = forall (m :: * -> *) a. Monad m => a -> m a
return Colour Double
rebeccapurple
readColourName String
name            = forall (m :: * -> *) a.
(MonadFail m, Monad m, Ord a, Floating a) =>
String -> m (Colour a)
Names.readColourName String
name

-- | @#F0F8FF@, @rgb(240, 248, 255)@, @hsl(208, 100%, 97%)@
aliceblue :: Colour Double
aliceblue :: Colour Double
aliceblue = forall a. (Ord a, Floating a) => Colour a
Names.aliceblue

-- | @#FAEBD7@, @rgb(250, 235, 215)@, @hsl(34, 78%, 91%)@
antiquewhite :: Colour Double
antiquewhite :: Colour Double
antiquewhite = forall a. (Ord a, Floating a) => Colour a
Names.antiquewhite

-- | @#00FFFF@, @rgb(0, 255, 255)@, @hsl(180, 100%, 50%)@. Same as 'cyan'.
aqua :: Colour Double
aqua :: Colour Double
aqua = forall a. (Ord a, Floating a) => Colour a
Names.aqua

-- | @#7FFFD4@, @rgb(127, 255, 212)@, @hsl(160, 100%, 75%)@
aquamarine :: Colour Double
aquamarine :: Colour Double
aquamarine = forall a. (Ord a, Floating a) => Colour a
Names.aquamarine

-- | @#F0FFFF@, @rgb(240, 255, 255)@, @hsl(180, 100%, 97%)@
azure :: Colour Double
azure :: Colour Double
azure = forall a. (Ord a, Floating a) => Colour a
Names.azure

-- | @#F5F5DC@, @rgb(245, 245, 220)@, @hsl(60, 56%, 91%)@
beige :: Colour Double
beige :: Colour Double
beige = forall a. (Ord a, Floating a) => Colour a
Names.beige

-- | @#FFE4C4@, @rgb(255, 228, 196)@, @hsl(33, 100%, 88%)@
bisque :: Colour Double
bisque :: Colour Double
bisque = forall a. (Ord a, Floating a) => Colour a
Names.bisque

-- | @#000000@, @rgb(0, 0, 0)@, @hsl(0, 0%, 0%)@
black :: Colour Double
black :: Colour Double
black = forall a. Num a => Colour a
Colour.black

-- | @#FFEBCD@, @rgb(255, 235, 205)@, @hsl(36, 100%, 90%)@
blanchedalmond :: Colour Double
blanchedalmond :: Colour Double
blanchedalmond = forall a. (Ord a, Floating a) => Colour a
Names.blanchedalmond

-- | @#0000FF@, @rgb(0, 0, 255)@, @hsl(240, 100%, 50%)@
blue :: Colour Double
blue :: Colour Double
blue = forall a. (Ord a, Floating a) => Colour a
Names.blue

-- | @#8A2BE2@, @rgb(138, 43, 226)@, @hsl(271, 76%, 53%)@
blueviolet :: Colour Double
blueviolet :: Colour Double
blueviolet = forall a. (Ord a, Floating a) => Colour a
Names.blueviolet

-- | @#A52A2A@, @rgb(165, 42, 42)@, @hsl(0, 59%, 41%)@
brown :: Colour Double
brown :: Colour Double
brown = forall a. (Ord a, Floating a) => Colour a
Names.brown

-- | @#DEB887@, @rgb(222, 184, 135)@, @hsl(34, 57%, 70%)@
burlywood :: Colour Double
burlywood :: Colour Double
burlywood = forall a. (Ord a, Floating a) => Colour a
Names.burlywood

-- | @#5F9EA0@, @rgb(95, 158, 160)@, @hsl(182, 25%, 50%)@
cadetblue :: Colour Double
cadetblue :: Colour Double
cadetblue = forall a. (Ord a, Floating a) => Colour a
Names.cadetblue

-- | @#7FFF00@, @rgb(127, 255, 0)@, @hsl(90, 100%, 50%)@
chartreuse :: Colour Double
chartreuse :: Colour Double
chartreuse = forall a. (Ord a, Floating a) => Colour a
Names.chartreuse

-- | @#D2691E@, @rgb(210, 105, 30)@, @hsl(25, 75%, 47%)@
chocolate :: Colour Double
chocolate :: Colour Double
chocolate = forall a. (Ord a, Floating a) => Colour a
Names.chocolate

-- | @#FF7F50@, @rgb(255, 127, 80)@, @hsl(16, 100%, 66%)@
coral :: Colour Double
coral :: Colour Double
coral = forall a. (Ord a, Floating a) => Colour a
Names.coral

-- | @#6495ED@, @rgb(100, 149, 237)@, @hsl(219, 79%, 66%)@
cornflowerblue :: Colour Double
cornflowerblue :: Colour Double
cornflowerblue = forall a. (Ord a, Floating a) => Colour a
Names.cornflowerblue

-- | @#FFF8DC@, @rgb(255, 248, 220)@, @hsl(48, 100%, 93%)@
cornsilk :: Colour Double
cornsilk :: Colour Double
cornsilk = forall a. (Ord a, Floating a) => Colour a
Names.cornsilk

-- | @#DC143C@, @rgb(220, 20, 60)@, @hsl(348, 83%, 58%)@
crimson :: Colour Double
crimson :: Colour Double
crimson = forall a. (Ord a, Floating a) => Colour a
Names.crimson

-- | @#00FFFF@, @rgb(0, 255, 255)@, @hsl(180, 100%, 50%)@. Same as 'aqua'.
cyan :: Colour Double
cyan :: Colour Double
cyan = forall a. (Ord a, Floating a) => Colour a
Names.cyan

-- | @#00008B@, @rgb(0, 0, 139)@, @hsl(240, 100%, 27%)@
darkblue :: Colour Double
darkblue :: Colour Double
darkblue = forall a. (Ord a, Floating a) => Colour a
Names.darkblue

-- | @#008B8B@, @rgb(0, 139, 139)@, @hsl(180, 100%, 27%)@
darkcyan :: Colour Double
darkcyan :: Colour Double
darkcyan = forall a. (Ord a, Floating a) => Colour a
Names.darkcyan

-- | @#B8860B@, @rgb(184, 134, 11)@, @hsl(43, 89%, 38%)@
darkgoldenrod :: Colour Double
darkgoldenrod :: Colour Double
darkgoldenrod = forall a. (Ord a, Floating a) => Colour a
Names.darkgoldenrod

-- | @#A9A9A9@, @rgb(169, 169, 169)@, @hsl(0, 0%, 66%)@. Same as 'darkgrey'.
darkgray :: Colour Double
darkgray :: Colour Double
darkgray = forall a. (Ord a, Floating a) => Colour a
Names.darkgray

-- | @#006400@, @rgb(0, 100, 0)@, @hsl(120, 100%, 20%)@
darkgreen :: Colour Double
darkgreen :: Colour Double
darkgreen = forall a. (Ord a, Floating a) => Colour a
Names.darkgreen

-- | @#A9A9A9@, @rgb(169, 169, 169)@, @hsl(0, 0%, 66%)@. Same as 'darkgray'.
darkgrey :: Colour Double
darkgrey :: Colour Double
darkgrey = forall a. (Ord a, Floating a) => Colour a
Names.darkgrey

-- | @#BDB76B@, @rgb(189, 183, 107)@, @hsl(56, 38%, 58%)@
darkkhaki :: Colour Double
darkkhaki :: Colour Double
darkkhaki = forall a. (Ord a, Floating a) => Colour a
Names.darkkhaki

-- | @#8B008B@, @rgb(139, 0, 139)@, @hsl(300, 100%, 27%)@
darkmagenta :: Colour Double
darkmagenta :: Colour Double
darkmagenta = forall a. (Ord a, Floating a) => Colour a
Names.darkmagenta

-- | @#556B2F@, @rgb(85, 107, 47)@, @hsl(82, 39%, 30%)@
darkolivegreen :: Colour Double
darkolivegreen :: Colour Double
darkolivegreen = forall a. (Ord a, Floating a) => Colour a
Names.darkolivegreen

-- | @#FF8C00@, @rgb(255, 140, 0)@, @hsl(33, 100%, 50%)@
darkorange :: Colour Double
darkorange :: Colour Double
darkorange = forall a. (Ord a, Floating a) => Colour a
Names.darkorange

-- | @#9932CC@, @rgb(153, 50, 204)@, @hsl(280, 61%, 50%)@
darkorchid :: Colour Double
darkorchid :: Colour Double
darkorchid = forall a. (Ord a, Floating a) => Colour a
Names.darkorchid

-- | @#8B0000@, @rgb(139, 0, 0)@, @hsl(0, 100%, 27%)@
darkred :: Colour Double
darkred :: Colour Double
darkred = forall a. (Ord a, Floating a) => Colour a
Names.darkred

-- | @#E9967A@, @rgb(233, 150, 122)@, @hsl(15, 72%, 70%)@
darksalmon :: Colour Double
darksalmon :: Colour Double
darksalmon = forall a. (Ord a, Floating a) => Colour a
Names.darksalmon

-- | @#8FBC8F@, @rgb(143, 188, 143)@, @hsl(120, 25%, 65%)@
darkseagreen :: Colour Double
darkseagreen :: Colour Double
darkseagreen = forall a. (Ord a, Floating a) => Colour a
Names.darkseagreen

-- | @#483D8B@, @rgb(72, 61, 139)@, @hsl(248, 39%, 39%)@
darkslateblue :: Colour Double
darkslateblue :: Colour Double
darkslateblue = forall a. (Ord a, Floating a) => Colour a
Names.darkslateblue

-- | @#2F4F4F@, @rgb(47, 79, 79)@, @hsl(180, 25%, 25%)@. Same as 'darkslategrey'.
darkslategray :: Colour Double
darkslategray :: Colour Double
darkslategray = forall a. (Ord a, Floating a) => Colour a
Names.darkslategray

-- | @#2F4F4F@, @rgb(47, 79, 79)@, @hsl(180, 25%, 25%)@. Same as 'darkslategray'.
darkslategrey :: Colour Double
darkslategrey :: Colour Double
darkslategrey = forall a. (Ord a, Floating a) => Colour a
Names.darkslategrey

-- | @#00CED1@, @rgb(0, 206, 209)@, @hsl(181, 100%, 41%)@
darkturquoise :: Colour Double
darkturquoise :: Colour Double
darkturquoise = forall a. (Ord a, Floating a) => Colour a
Names.darkturquoise

-- | @#9400D3@, @rgb(148, 0, 211)@, @hsl(282, 100%, 41%)@
darkviolet :: Colour Double
darkviolet :: Colour Double
darkviolet = forall a. (Ord a, Floating a) => Colour a
Names.darkviolet

-- | @#FF1493@, @rgb(255, 20, 147)@, @hsl(328, 100%, 54%)@
deeppink :: Colour Double
deeppink :: Colour Double
deeppink = forall a. (Ord a, Floating a) => Colour a
Names.deeppink

-- | @#00BFFF@, @rgb(0, 191, 255)@, @hsl(195, 100%, 50%)@
deepskyblue :: Colour Double
deepskyblue :: Colour Double
deepskyblue = forall a. (Ord a, Floating a) => Colour a
Names.deepskyblue

-- | @#696969@, @rgb(105, 105, 105)@, @hsl(0, 0%, 41%)@. Same as 'darkgrey'.
dimgray :: Colour Double
dimgray :: Colour Double
dimgray = forall a. (Ord a, Floating a) => Colour a
Names.dimgray

-- | @#696969@, @rgb(105, 105, 105)@, @hsl(0, 0%, 41%)@. Same as 'darkgray'.
dimgrey :: Colour Double
dimgrey :: Colour Double
dimgrey = forall a. (Ord a, Floating a) => Colour a
Names.dimgrey

-- | @#1E90FF@, @rgb(30, 144, 255)@, @hsl(210, 100%, 56%)@
dodgerblue :: Colour Double
dodgerblue :: Colour Double
dodgerblue = forall a. (Ord a, Floating a) => Colour a
Names.dodgerblue

-- | @#B22222@, @rgb(178, 34, 34)@, @hsl(0, 68%, 42%)@
firebrick :: Colour Double
firebrick :: Colour Double
firebrick = forall a. (Ord a, Floating a) => Colour a
Names.firebrick

-- | @#FFFAF0@, @rgb(255, 250, 240)@, @hsl(40, 100%, 97%)@
floralwhite :: Colour Double
floralwhite :: Colour Double
floralwhite = forall a. (Ord a, Floating a) => Colour a
Names.floralwhite

-- | @#228B22@, @rgb(34, 139, 34)@, @hsl(120, 61%, 34%)@
forestgreen :: Colour Double
forestgreen :: Colour Double
forestgreen = forall a. (Ord a, Floating a) => Colour a
Names.forestgreen

-- | @#FF00FF@, @rgb(255, 0, 255)@, @hsl(300, 100%, 50%)@. Same as 'magenta'.
fuchsia :: Colour Double
fuchsia :: Colour Double
fuchsia = forall a. (Ord a, Floating a) => Colour a
Names.fuchsia

-- | @#DCDCDC@, @rgb(220, 220, 220)@, @hsl(0, 0%, 86%)@
gainsboro :: Colour Double
gainsboro :: Colour Double
gainsboro = forall a. (Ord a, Floating a) => Colour a
Names.gainsboro

-- | @#F8F8FF@, @rgb(248, 248, 255)@, @hsl(240, 100%, 99%)@
ghostwhite :: Colour Double
ghostwhite :: Colour Double
ghostwhite = forall a. (Ord a, Floating a) => Colour a
Names.ghostwhite

-- | @#FFD700@, @rgb(255, 215, 0)@, @hsl(51, 100%, 50%)@
gold :: Colour Double
gold :: Colour Double
gold = forall a. (Ord a, Floating a) => Colour a
Names.gold

-- | @#DAA520@, @rgb(218, 165, 32)@, @hsl(43, 74%, 49%)@
goldenrod :: Colour Double
goldenrod :: Colour Double
goldenrod = forall a. (Ord a, Floating a) => Colour a
Names.goldenrod

-- | @#808080@, @rgb(128, 128, 128)@, @hsl(0, 0%, 50%)@. Same as 'grey'.
gray :: Colour Double
gray :: Colour Double
gray = forall a. (Ord a, Floating a) => Colour a
Names.gray

-- | @#008000@, @rgb(0, 128, 0)@, @hsl(120, 100%, 25%)@
green :: Colour Double
green :: Colour Double
green = forall a. (Ord a, Floating a) => Colour a
Names.green

-- | @#808080@, @rgb(128, 128, 128)@, @hsl(0, 0%, 50%)@. Same as 'gray'.
grey :: Colour Double
grey :: Colour Double
grey = forall a. (Ord a, Floating a) => Colour a
Names.grey

-- | @#ADFF2F@, @rgb(173, 255, 47)@, @hsl(84, 100%, 59%)@
greenyellow :: Colour Double
greenyellow :: Colour Double
greenyellow = forall a. (Ord a, Floating a) => Colour a
Names.greenyellow

-- | @#F0FFF0@, @rgb(240, 255, 240)@, @hsl(120, 100%, 97%)@
honeydew :: Colour Double
honeydew :: Colour Double
honeydew = forall a. (Ord a, Floating a) => Colour a
Names.honeydew

-- | @#FF69B4@, @rgb(255, 105, 180)@, @hsl(330, 100%, 71%)@
hotpink :: Colour Double
hotpink :: Colour Double
hotpink = forall a. (Ord a, Floating a) => Colour a
Names.hotpink

-- | @#CD5C5C@, @rgb(205, 92, 92)@, @hsl(0, 53%, 58%)@
indianred :: Colour Double
indianred :: Colour Double
indianred = forall a. (Ord a, Floating a) => Colour a
Names.indianred

-- | @#4B0082@, @rgb(75, 0, 130)@, @hsl(275, 100%, 25%)@
indigo :: Colour Double
indigo :: Colour Double
indigo = forall a. (Ord a, Floating a) => Colour a
Names.indigo

-- | @#FFFFF0@, @rgb(255, 255, 240)@, @hsl(60, 100%, 97%)@
ivory :: Colour Double
ivory :: Colour Double
ivory = forall a. (Ord a, Floating a) => Colour a
Names.ivory

-- | @#F0E68C@, @rgb(240, 230, 140)@, @hsl(54, 77%, 75%)@
khaki :: Colour Double
khaki :: Colour Double
khaki = forall a. (Ord a, Floating a) => Colour a
Names.khaki

-- | @#E6E6FA@, @rgb(230, 230, 250)@, @hsl(240, 67%, 94%)@
lavender :: Colour Double
lavender :: Colour Double
lavender = forall a. (Ord a, Floating a) => Colour a
Names.lavender

-- | @#FFF0F5@, @rgb(255, 240, 245)@, @hsl(340, 100%, 97%)@
lavenderblush :: Colour Double
lavenderblush :: Colour Double
lavenderblush = forall a. (Ord a, Floating a) => Colour a
Names.lavenderblush

-- | @#7CFC00@, @rgb(124, 252, 0)@, @hsl(90, 100%, 49%)@
lawngreen :: Colour Double
lawngreen :: Colour Double
lawngreen = forall a. (Ord a, Floating a) => Colour a
Names.lawngreen

-- | @#FFFACD@, @rgb(255, 250, 205)@, @hsl(54, 100%, 90%)@
lemonchiffon :: Colour Double
lemonchiffon :: Colour Double
lemonchiffon = forall a. (Ord a, Floating a) => Colour a
Names.lemonchiffon

-- | @#ADD8E6@, @rgb(173, 216, 230)@, @hsl(195, 53%, 79%)@
lightblue :: Colour Double
lightblue :: Colour Double
lightblue = forall a. (Ord a, Floating a) => Colour a
Names.lightblue

-- | @#F08080@, @rgb(240, 128, 128)@, @hsl(0, 79%, 72%)@
lightcoral :: Colour Double
lightcoral :: Colour Double
lightcoral = forall a. (Ord a, Floating a) => Colour a
Names.lightcoral

-- | @#E0FFFF@, @rgb(224, 255, 255)@, @hsl(180, 100%, 94%)@
lightcyan :: Colour Double
lightcyan :: Colour Double
lightcyan = forall a. (Ord a, Floating a) => Colour a
Names.lightcyan

-- | @#FAFAD2@, @rgb(250, 250, 210)@, @hsl(60, 80%, 90%)@
lightgoldenrodyellow :: Colour Double
lightgoldenrodyellow :: Colour Double
lightgoldenrodyellow = forall a. (Ord a, Floating a) => Colour a
Names.lightgoldenrodyellow

-- | @#D3D3D3@, @rgb(211, 211, 211)@, @hsl(0, 0%, 83%)@. Same as 'lightgrey'.
lightgray :: Colour Double
lightgray :: Colour Double
lightgray = forall a. (Ord a, Floating a) => Colour a
Names.lightgray

-- | @#90EE90@, @rgb(144, 238, 144)@, @hsl(120, 73%, 75%)@
lightgreen :: Colour Double
lightgreen :: Colour Double
lightgreen = forall a. (Ord a, Floating a) => Colour a
Names.lightgreen

-- | @#D3D3D3@, @rgb(211, 211, 211)@, @hsl(0, 0%, 83%)@. Same as 'lightgray'.
lightgrey :: Colour Double
lightgrey :: Colour Double
lightgrey = forall a. (Ord a, Floating a) => Colour a
Names.lightgrey

-- | @#FFB6C1@, @rgb(255, 182, 193)@, @hsl(351, 100%, 86%)@
lightpink :: Colour Double
lightpink :: Colour Double
lightpink = forall a. (Ord a, Floating a) => Colour a
Names.lightpink

-- | @#FFA07A@, @rgb(255, 160, 122)@, @hsl(17, 100%, 74%)@
lightsalmon :: Colour Double
lightsalmon :: Colour Double
lightsalmon = forall a. (Ord a, Floating a) => Colour a
Names.lightsalmon

-- | @#20B2AA@, @rgb(32, 178, 170)@, @hsl(177, 70%, 41%)@
lightseagreen :: Colour Double
lightseagreen :: Colour Double
lightseagreen = forall a. (Ord a, Floating a) => Colour a
Names.lightseagreen

-- | @#87CEFA@, @rgb(135, 206, 250)@, @hsl(203, 92%, 75%)@
lightskyblue :: Colour Double
lightskyblue :: Colour Double
lightskyblue = forall a. (Ord a, Floating a) => Colour a
Names.lightskyblue

-- | @#778899@, @rgb(119, 136, 153)@, @hsl(210, 14%, 53%)@. Same as 'lightslategrey'.
lightslategray :: Colour Double
lightslategray :: Colour Double
lightslategray = forall a. (Ord a, Floating a) => Colour a
Names.lightslategray

-- | @#778899@, @rgb(119, 136, 153)@, @hsl(210, 14%, 53%)@. Same as 'lightslategray'.
lightslategrey :: Colour Double
lightslategrey :: Colour Double
lightslategrey = forall a. (Ord a, Floating a) => Colour a
Names.lightslategrey

-- | @#B0C4DE@, @rgb(176, 196, 222)@, @hsl(214, 41%, 78%)@
lightsteelblue :: Colour Double
lightsteelblue :: Colour Double
lightsteelblue = forall a. (Ord a, Floating a) => Colour a
Names.lightsteelblue

-- | @#FFFFE0@, @rgb(255, 255, 224)@, @hsl(60, 100%, 94%)@
lightyellow :: Colour Double
lightyellow :: Colour Double
lightyellow = forall a. (Ord a, Floating a) => Colour a
Names.lightyellow

-- | @#00FF00@, @rgb(0, 255, 0)@, @hsl(120, 100%, 50%)@
lime :: Colour Double
lime :: Colour Double
lime = forall a. (Ord a, Floating a) => Colour a
Names.lime

-- | @#32CD32@, @rgb(50, 205, 50)@, @hsl(120, 61%, 50%)@
limegreen :: Colour Double
limegreen :: Colour Double
limegreen = forall a. (Ord a, Floating a) => Colour a
Names.limegreen

-- | @#FAF0E6@, @rgb(250, 240, 230)@, @hsl(30, 67%, 94%)@
linen :: Colour Double
linen :: Colour Double
linen = forall a. (Ord a, Floating a) => Colour a
Names.linen

-- | @#FF00FF@, @rgb(255, 0, 255)@, @hsl(300, 100%, 50%)@. Same as 'fuchsia'.
magenta :: Colour Double
magenta :: Colour Double
magenta = forall a. (Ord a, Floating a) => Colour a
Names.magenta

-- | @#800000@, @rgb(128, 0, 0)@, @hsl(0, 100%, 25%)@
maroon :: Colour Double
maroon :: Colour Double
maroon = forall a. (Ord a, Floating a) => Colour a
Names.maroon

-- | @#66CDAA@, @rgb(102, 205, 170)@, @hsl(160, 51%, 60%)@
mediumaquamarine :: Colour Double
mediumaquamarine :: Colour Double
mediumaquamarine = forall a. (Ord a, Floating a) => Colour a
Names.mediumaquamarine

-- | @#0000CD@, @rgb(0, 0, 205)@, @hsl(240, 100%, 40%)@
mediumblue :: Colour Double
mediumblue :: Colour Double
mediumblue = forall a. (Ord a, Floating a) => Colour a
Names.mediumblue

-- | @#BA55D3@, @rgb(186, 85, 211)@, @hsl(288, 59%, 58%)@
mediumorchid :: Colour Double
mediumorchid :: Colour Double
mediumorchid = forall a. (Ord a, Floating a) => Colour a
Names.mediumorchid

-- | @#9370DB@, @rgb(147, 112, 219)@, @hsl(260, 60%, 65%)@
mediumpurple :: Colour Double
mediumpurple :: Colour Double
mediumpurple = forall a. (Ord a, Floating a) => Colour a
Names.mediumpurple

-- | @#3CB371@, @rgb(60, 179, 113)@, @hsl(147, 50%, 47%)@
mediumseagreen :: Colour Double
mediumseagreen :: Colour Double
mediumseagreen = forall a. (Ord a, Floating a) => Colour a
Names.mediumseagreen

-- | @#7B68EE@, @rgb(123, 104, 238)@, @hsl(249, 80%, 67%)@
mediumslateblue :: Colour Double
mediumslateblue :: Colour Double
mediumslateblue = forall a. (Ord a, Floating a) => Colour a
Names.mediumslateblue

-- | @#00FA9A@, @rgb(0, 250, 154)@, @hsl(157, 100%, 49%)@
mediumspringgreen :: Colour Double
mediumspringgreen :: Colour Double
mediumspringgreen = forall a. (Ord a, Floating a) => Colour a
Names.mediumspringgreen

-- | @#48D1CC@, @rgb(72, 209, 204)@, @hsl(178, 60%, 55%)@
mediumturquoise :: Colour Double
mediumturquoise :: Colour Double
mediumturquoise = forall a. (Ord a, Floating a) => Colour a
Names.turquoise

-- | @#C71585@, @rgb(199, 21, 133)@, @hsl(322, 81%, 43%)@
mediumvioletred :: Colour Double
mediumvioletred :: Colour Double
mediumvioletred = forall a. (Ord a, Floating a) => Colour a
Names.mediumvioletred

-- | @#191970@, @rgb(25, 25, 112)@, @hsl(240, 64%, 27%)@
midnightblue :: Colour Double
midnightblue :: Colour Double
midnightblue = forall a. (Ord a, Floating a) => Colour a
Names.midnightblue

-- | @#F5FFFA@, @rgb(245, 255, 250)@, @hsl(150, 100%, 98%)@
mintcream :: Colour Double
mintcream :: Colour Double
mintcream = forall a. (Ord a, Floating a) => Colour a
Names.mintcream

-- | @#FFE4E1@, @rgb(255, 228, 225)@, @hsl(6, 100%, 94%)@
mistyrose :: Colour Double
mistyrose :: Colour Double
mistyrose = forall a. (Ord a, Floating a) => Colour a
Names.mistyrose

-- | @#FFE4B5@, @rgb(255, 228, 181)@, @hsl(38, 100%, 85%)@
moccasin :: Colour Double
moccasin :: Colour Double
moccasin = forall a. (Ord a, Floating a) => Colour a
Names.moccasin

-- | @#FFDEAD@, @rgb(255, 222, 173)@, @hsl(36, 100%, 84%)@
navajowhite :: Colour Double
navajowhite :: Colour Double
navajowhite = forall a. (Ord a, Floating a) => Colour a
Names.navajowhite

-- | @#000080@, @rgb(0, 0, 128)@, @hsl(240, 100%, 25%)@
navy :: Colour Double
navy :: Colour Double
navy = forall a. (Ord a, Floating a) => Colour a
Names.navy

-- | @#FDF5E6@, @rgb(253, 245, 230)@, @hsl(39, 85%, 95%)@
oldlace :: Colour Double
oldlace :: Colour Double
oldlace = forall a. (Ord a, Floating a) => Colour a
Names.oldlace

-- | @#808000@, @rgb(128, 128, 0)@, @hsl(60, 100%, 25%)@
olive :: Colour Double
olive :: Colour Double
olive = forall a. (Ord a, Floating a) => Colour a
Names.olive

-- | @#6B8E23@, @rgb(107, 142, 35)@, @hsl(80, 60%, 35%)@
olivedrab :: Colour Double
olivedrab :: Colour Double
olivedrab = forall a. (Ord a, Floating a) => Colour a
Names.olivedrab

-- | @#FFA500@, @rgb(255, 165, 0)@, @hsl(39, 100%, 50%)@
orange :: Colour Double
orange :: Colour Double
orange = forall a. (Ord a, Floating a) => Colour a
Names.orange

-- | @#FF4500@, @rgb(255, 69, 0)@, @hsl(16, 100%, 50%)@
orangered :: Colour Double
orangered :: Colour Double
orangered = forall a. (Ord a, Floating a) => Colour a
Names.orangered

-- | @#DA70D6@, @rgb(218, 112, 214)@, @hsl(302, 59%, 65%)@
orchid :: Colour Double
orchid :: Colour Double
orchid = forall a. (Ord a, Floating a) => Colour a
Names.orchid

-- | @#EEE8AA@, @rgb(238, 232, 170)@, @hsl(55, 67%, 80%)@
palegoldenrod :: Colour Double
palegoldenrod :: Colour Double
palegoldenrod = forall a. (Ord a, Floating a) => Colour a
Names.palegoldenrod

-- | @#98FB98@, @rgb(152, 251, 152)@, @hsl(120, 93%, 79%)@
palegreen :: Colour Double
palegreen :: Colour Double
palegreen = forall a. (Ord a, Floating a) => Colour a
Names.palegreen

-- | @#AFEEEE@, @rgb(175, 238, 238)@, @hsl(180, 65%, 81%)@
paleturquoise :: Colour Double
paleturquoise :: Colour Double
paleturquoise = forall a. (Ord a, Floating a) => Colour a
Names.paleturquoise

-- | @#DB7093@, @rgb(219, 112, 147)@, @hsl(340, 60%, 65%)@
palevioletred :: Colour Double
palevioletred :: Colour Double
palevioletred = forall a. (Ord a, Floating a) => Colour a
Names.palevioletred

-- | @#FFEFD5@, @rgb(255, 239, 213)@, @hsl(37, 100%, 92%)@
papayawhip :: Colour Double
papayawhip :: Colour Double
papayawhip = forall a. (Ord a, Floating a) => Colour a
Names.papayawhip

-- | @#FFDAB9@, @rgb(255, 218, 185)@, @hsl(28, 100%, 86%)@
peachpuff :: Colour Double
peachpuff :: Colour Double
peachpuff = forall a. (Ord a, Floating a) => Colour a
Names.peachpuff

-- | @#CD853F@, @rgb(205, 133, 63)@, @hsl(30, 59%, 53%)@
peru :: Colour Double
peru :: Colour Double
peru = forall a. (Ord a, Floating a) => Colour a
Names.peru

-- | @#FFC0CB@, @rgb(255, 192, 203)@, @hsl(350, 100%, 88%)@
pink :: Colour Double
pink :: Colour Double
pink = forall a. (Ord a, Floating a) => Colour a
Names.pink

-- | @#DDA0DD@, @rgb(221, 160, 221)@, @hsl(300, 47%, 75%)@
plum :: Colour Double
plum :: Colour Double
plum = forall a. (Ord a, Floating a) => Colour a
Names.plum

-- | @#B0E0E6@, @rgb(176, 224, 230)@, @hsl(187, 52%, 80%)@
powderblue :: Colour Double
powderblue :: Colour Double
powderblue = forall a. (Ord a, Floating a) => Colour a
Names.powderblue

-- | @#800080@, @rgb(128, 0, 128)@, @hsl(300, 100%, 25%)@
purple :: Colour Double
purple :: Colour Double
purple = forall a. (Ord a, Floating a) => Colour a
Names.purple

-- | @#FF0000@, @rgb(255, 0, 0)@, @hsl(0, 100%, 50%)@
red :: Colour Double
red :: Colour Double
red = forall a. (Ord a, Floating a) => Colour a
Names.red

-- | @#BC8F8F@, @rgb(188, 143, 143)@, @hsl(0, 25%, 65%)@
rosybrown :: Colour Double
rosybrown :: Colour Double
rosybrown = forall a. (Ord a, Floating a) => Colour a
Names.rosybrown

-- | @#4169E1@, @rgb(65, 105, 225)@, @hsl(225, 73%, 57%)@
royalblue :: Colour Double
royalblue :: Colour Double
royalblue = forall a. (Ord a, Floating a) => Colour a
Names.royalblue

-- | @#8B4513@, @rgb(139, 69, 19)@, @hsl(25, 76%, 31%)@
saddlebrown :: Colour Double
saddlebrown :: Colour Double
saddlebrown = forall a. (Ord a, Floating a) => Colour a
Names.saddlebrown

-- | @#FA8072@, @rgb(250, 128, 114)@, @hsl(6, 93%, 71%)@
salmon :: Colour Double
salmon :: Colour Double
salmon = forall a. (Ord a, Floating a) => Colour a
Names.salmon

-- | @#F4A460@, @rgb(244, 164, 96)@, @hsl(28, 87%, 67%)@
sandybrown :: Colour Double
sandybrown :: Colour Double
sandybrown = forall a. (Ord a, Floating a) => Colour a
Names.sandybrown

-- | @#2E8B57@, @rgb(46, 139, 87)@, @hsl(146, 50%, 36%)@
seagreen :: Colour Double
seagreen :: Colour Double
seagreen = forall a. (Ord a, Floating a) => Colour a
Names.seagreen

-- | @#FFF5EE@, @rgb(255, 245, 238)@, @hsl(25, 100%, 97%)@
seashell :: Colour Double
seashell :: Colour Double
seashell = forall a. (Ord a, Floating a) => Colour a
Names.seashell

-- | @#A0522D@, @rgb(160, 82, 45)@, @hsl(19, 56%, 40%)@
sienna :: Colour Double
sienna :: Colour Double
sienna = forall a. (Ord a, Floating a) => Colour a
Names.sienna

-- | @#C0C0C0@, @rgb(192, 192, 192)@, @hsl(0, 0%, 75%)@
silver :: Colour Double
silver :: Colour Double
silver = forall a. (Ord a, Floating a) => Colour a
Names.silver

-- | @#87CEEB@, @rgb(135, 206, 235)@, @hsl(197, 71%, 73%)@
skyblue :: Colour Double
skyblue :: Colour Double
skyblue = forall a. (Ord a, Floating a) => Colour a
Names.skyblue

-- | @#6A5ACD@, @rgb(106, 90, 205)@, @hsl(248, 53%, 58%)@
slateblue :: Colour Double
slateblue :: Colour Double
slateblue = forall a. (Ord a, Floating a) => Colour a
Names.slateblue

-- | @#708090@, @rgb(112, 128, 144)@, @hsl(210, 13%, 50%)@. Same as 'slategrey'.
slategray :: Colour Double
slategray :: Colour Double
slategray = forall a. (Ord a, Floating a) => Colour a
Names.slategray

-- | @#708090@, @rgb(112, 128, 144)@, @hsl(210, 13%, 50%)@. Same as 'slategray'.
slategrey :: Colour Double
slategrey :: Colour Double
slategrey = forall a. (Ord a, Floating a) => Colour a
Names.slategrey

-- | @#FFFAFA@, @rgb(255, 250, 250)@, @hsl(0, 100%, 99%)@
snow :: Colour Double
snow :: Colour Double
snow = forall a. (Ord a, Floating a) => Colour a
Names.snow

-- | @#00FF7F@, @rgb(0, 255, 127)@, @hsl(150, 100%, 50%)@
springgreen :: Colour Double
springgreen :: Colour Double
springgreen = forall a. (Ord a, Floating a) => Colour a
Names.springgreen

-- | @#4682B4@, @rgb(70, 130, 180)@, @hsl(207, 44%, 49%)@
steelblue :: Colour Double
steelblue :: Colour Double
steelblue = forall a. (Ord a, Floating a) => Colour a
Names.steelblue

-- | @#D2B48C@, @rgb(210, 180, 140)@, @hsl(34, 44%, 69%)@
tan :: Colour Double
tan :: Colour Double
tan = forall a. (Ord a, Floating a) => Colour a
Names.tan

-- | @#008080@, @rgb(0, 128, 128)@, @hsl(180, 100%, 25%)@
teal :: Colour Double
teal :: Colour Double
teal = forall a. (Ord a, Floating a) => Colour a
Names.teal

-- | @#D8BFD8@, @rgb(216, 191, 216)@, @hsl(300, 24%, 80%)@
thistle :: Colour Double
thistle :: Colour Double
thistle = forall a. (Ord a, Floating a) => Colour a
Names.thistle

-- | @#FF6347@, @rgb(255, 99, 71)@, @hsl(9, 100%, 64%)@
tomato :: Colour Double
tomato :: Colour Double
tomato = forall a. (Ord a, Floating a) => Colour a
Names.tomato

-- | @#40E0D0@, @rgb(64, 224, 208)@, @hsl(174, 72%, 56%)@
turquoise :: Colour Double
turquoise :: Colour Double
turquoise = forall a. (Ord a, Floating a) => Colour a
Names.turquoise

-- | @#EE82EE@, @rgb(238, 130, 238)@, @hsl(300, 76%, 72%)@
violet :: Colour Double
violet :: Colour Double
violet = forall a. (Ord a, Floating a) => Colour a
Names.violet

-- | @#F5DEB3@, @rgb(245, 222, 179)@, @hsl(39, 77%, 83%)@
wheat :: Colour Double
wheat :: Colour Double
wheat = forall a. (Ord a, Floating a) => Colour a
Names.wheat

-- | @#FFFFFF@, @rgb(255, 255, 255)@, @hsl(0, 100%, 100%)@
white :: Colour Double
white :: Colour Double
white = forall a. (Ord a, Floating a) => Colour a
Names.white

-- | @#F5F5F5@, @rgb(245, 245, 245)@, @hsl(0, 0%, 96%)@
whitesmoke :: Colour Double
whitesmoke :: Colour Double
whitesmoke = forall a. (Ord a, Floating a) => Colour a
Names.whitesmoke

-- | @#FFFF00@, @rgb(255, 255, 0)@, @hsl(60, 100%, 50%)@
yellow :: Colour Double
yellow :: Colour Double
yellow = forall a. (Ord a, Floating a) => Colour a
Names.yellow

-- | @#9ACD32@, @rgb(154, 205, 50)@, @hsl(80, 61%, 50%)@
yellowgreen :: Colour Double
yellowgreen :: Colour Double
yellowgreen = forall a. (Ord a, Floating a) => Colour a
Names.yellowgreen

-- | @#663399@, @rgb(102, 51, 153)@, @hsl(270, 50%, 40%)@
rebeccapurple :: Colour Double
rebeccapurple :: Colour Double
rebeccapurple = forall b.
(Ord b, Floating b) =>
Word8 -> Word8 -> Word8 -> Colour b
sRGB24 Word8
102 Word8
51 Word8
153

-- |
-- This 'AlphaColour' is entirely transparent and has no associated
-- color channel (i.e., @rgba(0, 0, 0, 0.0)@ or @hsla(0, 0%, 0%, 0.0)@).
transparent :: AlphaColour Double
transparent :: AlphaColour Double
transparent = forall a. Num a => AlphaColour a
Colour.transparent