-- | Functions used to control the colors in a PDF document module Graphics.PDF.Color (-- * Colors -- ** Data types Color(..) -- ** Operators , strokeColor,fillColor,rgbSpace, setAlpha,resetAlpha ) where import Graphics.PDF.LowLevel import Text.Printf -- | Color data type data Color = Rgb Float Float Float -- ^ RGB Color instance Show Color where show (Rgb r g b) = "rgb" ++ (show r) ++ (show g) ++ (show b) -- | Create a new state dictionary for an alpha value newState :: Float -> PdfObject newState a = pdfDictionary [("Type",PdfName "ExtGState"), ("CA",PdfFloat a), ("ca",PdfFloat a) ] -- | Change the stroke color in a PDF document strokeColor :: Color -> PdfCmd strokeColor c = case c of Rgb r g b -> (PdfSC r g b,[]) -- | Change the fill color in a PDF document fillColor :: Color -> PdfCmd fillColor c = case c of Rgb r g b -> (PdfSF r g b,[]) -- | Change the alpha setting for transparency in the document setAlpha :: Float -> PdfCmd setAlpha a = (PdfAlpha dictName,[(PdfState,dictName,PdfUnknownPointer dictName), (PdfAnyObject,dictName,newState a)]) where dictName = printf "alpha%f" a -- | Reset alpha value to opaque for stroke and fill colors resetAlpha :: PdfCmd resetAlpha = (PdfResetAlpha,[]) -- | Set color space to RGB. Must always be used before starting to use any color. rgbSpace :: PdfCmd rgbSpace = (PdfRgbSpace,[])