module Graphics.PS.GS ( GS(..)
                      , LineCap(..)
                      , LineJoin(..)
                      , Color(..)
                      , defaultGS, greyGS ) where

data LineCap = ButtCap 
             | RoundCap 
             | ProjectingSquareCap
               deriving (Eq, Show, Enum)

type LineWidth = Double

data LineJoin = MiterJoin 
              | RoundJoin 
              | BevelJoin
                deriving (Eq, Show, Enum)

data Color = RGB Double Double Double
             deriving (Eq, Show)

data GS = GS Color LineWidth LineCap LineJoin ([Int], Int) Double
          deriving (Eq, Show)

-- | Default GS of indicated color.
defaultGS :: Color -> GS
defaultGS c = GS c 1.0 ButtCap MiterJoin ([], 0) 10.0

-- | Default GS of indicated shade of grey.
greyGS :: Double -> GS
greyGS g = defaultGS (RGB g g g)

{--
blackGS :: GS
blackGS = greyGS 0
--}