-----------------------------------------------------------------------------
-- |
-- Module      :  Palette.Ty[es
-- Copyright   :  (c) 2013 Jeffrey Rosenbluth
-- License     :  BSD-style (see LICENSE)
-- Maintainer  :  jeffrey.rosenbluth@gmail.com
--
-- Types used in Palette modules
--
-----------------------------------------------------------------------------

module Data.Colour.Palette.Types
       (
         Kolor
       , Hue(..)
       , Luminosity(..)
       , ColorDefinition(..)

       ) where

import           Data.Colour

-- | A convenient alias.
type Kolor = Colour Double

-- | Used to select the hue range in 'randomColor'.
data Hue
  = HueMonochrome
  | HueRed
  | HueOrange
  | HueYellow
  | HueGreen
  | HueBlue
  | HuePurple
  | HuePink
  | HueRandom
  deriving (Int -> Hue -> ShowS
[Hue] -> ShowS
Hue -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Hue] -> ShowS
$cshowList :: [Hue] -> ShowS
show :: Hue -> String
$cshow :: Hue -> String
showsPrec :: Int -> Hue -> ShowS
$cshowsPrec :: Int -> Hue -> ShowS
Show, Hue -> Hue -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Hue -> Hue -> Bool
$c/= :: Hue -> Hue -> Bool
== :: Hue -> Hue -> Bool
$c== :: Hue -> Hue -> Bool
Eq)

-- | Used to select the luminosity range in 'randomColor'.
data Luminosity
  = LumBright
  | LumLight
  | LumDark
  | LumRandom
  deriving (Int -> Luminosity -> ShowS
[Luminosity] -> ShowS
Luminosity -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Luminosity] -> ShowS
$cshowList :: [Luminosity] -> ShowS
show :: Luminosity -> String
$cshow :: Luminosity -> String
showsPrec :: Int -> Luminosity -> ShowS
$cshowsPrec :: Int -> Luminosity -> ShowS
Show, Luminosity -> Luminosity -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Luminosity -> Luminosity -> Bool
$c/= :: Luminosity -> Luminosity -> Bool
== :: Luminosity -> Luminosity -> Bool
$c== :: Luminosity -> Luminosity -> Bool
Eq)

data ColorDefinition = ColorDefinition
  { ColorDefinition -> Maybe (Int, Int)
hueRange    :: Maybe (Int, Int)
  , ColorDefinition -> [(Int, Int)]
lowerBounds :: [(Int, Int)]
  }