module Graphics.PDF.Color
(
Color(..)
, strokeColor,fillColor,rgbSpace, setAlpha,resetAlpha
)
where
import Graphics.PDF.LowLevel
import Text.Printf
data Color = Rgb Float Float Float
instance Show Color where
show (Rgb r g b) = "rgb" ++ (show r) ++ (show g) ++ (show b)
newState :: Float -> PdfObject
newState a = pdfDictionary [("Type",PdfName "ExtGState"),
("CA",PdfFloat a),
("ca",PdfFloat a)
]
strokeColor :: Color -> PdfCmd
strokeColor c = case c of
Rgb r g b -> (PdfSC r g b,[])
fillColor :: Color -> PdfCmd
fillColor c = case c of
Rgb r g b -> (PdfSF r g b,[])
setAlpha :: Float -> PdfCmd
setAlpha a = (PdfAlpha dictName,[(PdfState,dictName,PdfUnknownPointer dictName),
(PdfAnyObject,dictName,newState a)])
where
dictName = printf "alpha%f" a
resetAlpha :: PdfCmd
resetAlpha = (PdfResetAlpha,[])
rgbSpace :: PdfCmd
rgbSpace = (PdfRgbSpace,[])