-- | Function used to control the fonts in a PDF document

module Graphics.PDF.Font
 (-- * Font
  -- * Font type
  Font(..)
  -- ** Font selection
  ,chooseFont
 )
 where
 
import Graphics.PDF.LowLevel


-- | List of supported fonts
data Font = TimesRoman
          | TimesBold
          | TimesItalic
          | Helvetica
          | HelveticaBold
          | HelveticaOblique
          | HelveticaBoldOblique
          | Courier
          | CourierBold
          | CourierOblique
          | CourierBoldOblique
          | Symbol
          | ZapfDingbats
          
instance Show Font where
 show TimesRoman = "Times-Roman"
 show TimesBold = "Times-Bold"
 show TimesItalic = "Times-Italic"
 show Helvetica = "Helvetica"
 show HelveticaBold = "Helvetica-Bold"
 show HelveticaOblique = "Helvetica-Oblique"
 show HelveticaBoldOblique = "Helvetica-BoldOblique"
 show Courier = "Courier"
 show CourierBold = "Courier-Bold"
 show CourierOblique = "Courier-Oblique"
 show CourierBoldOblique = "Courier-BoldOblique"
 show Symbol = "Symbol"
 show ZapfDingbats = "ZapfDingbats"
 
type Size = Int

-- | Create a new font dictionary
newFont :: String -> PdfObject
newFont name= pdfDictionary [("Type",PdfName "FontDescriptor"),
                         ("Subtype",PdfName "Type1"),
                         ("BaseFont",PdfName name)
                        ]

-- | Select new font in the document             
chooseFont :: Font -> Size -> PdfCmd
chooseFont font fontSize  = (PdfBT fontName fontSize,[(PdfFont,fontName,PdfUnknownPointer fontName),
                              (PdfAnyObject, fontName, newFont fontName)
                              ]) 
                            where
                              fontName = show font