----------------------------------------------------------------------------- -- | -- Module : Graphics.UI.SDL.TTF.Management -- Copyright : (c) David Himmelstrup 2005 -- License : BSD-like -- -- Maintainer : lemmih@gmail.com -- Stability : provisional -- Portability : portable -- ----------------------------------------------------------------------------- module Graphics.UI.SDL.TTF.Management ( tryOpenFont , openFont , closeFont , tryOpenFontRW , openFontRW , tryOpenFontIndex , openFontIndex ) where import Graphics.UI.SDL.TTF.Types import Graphics.UI.SDL.General (unwrapMaybe) import Graphics.UI.SDL.Types import Foreign import Foreign.C -- void TTF_CloseFont(TTF_Font *font) foreign import ccall unsafe "&TTF_CloseFont" ttfCloseFontFinal :: FunPtr (Ptr FontStruct -> IO ()) mkFinalizedFont :: Ptr FontStruct -> IO Font mkFinalizedFont = newForeignPtr ttfCloseFontFinal foreign import ccall unsafe "TTF_CloseFont" ttfCloseFont :: Ptr FontStruct -> IO () closeFont :: Font -> IO () closeFont font = withForeignPtr font ttfCloseFont -- TTF_Font *TTF_OpenFont(const char *file, int ptsize) foreign import ccall unsafe "TTF_OpenFont" ttfOpenFont :: CString -> CInt -> IO (Ptr FontStruct) tryOpenFont :: String -> Int -> IO (Maybe Font) tryOpenFont path ptsize = withCString path $ \cPath -> ttfOpenFont cPath (fromIntegral ptsize) >>= maybePeek mkFinalizedFont openFont :: String -> Int -> IO Font openFont path ptsize = unwrapMaybe "TTF_OpenFont" (tryOpenFont path ptsize) -- TTF_Font *TTF_OpenFontRW(SDL_RWops *src, int freesrc, int ptsize) foreign import ccall unsafe "TTF_OpenFontRW" ttfOpenFontRW :: Ptr RWopsStruct -> CInt -> Int -> IO (Ptr FontStruct) tryOpenFontRW :: RWops -> Bool -> Int -> IO (Maybe Font) tryOpenFontRW rw freesrc ptsize = withForeignPtr rw $ \rwPtr -> ttfOpenFontRW rwPtr (fromBool freesrc) ptsize >>= maybePeek mkFinalizedFont openFontRW :: RWops -> Bool -> Int -> IO Font openFontRW rw freesrc ptsize = unwrapMaybe "TTF_OpenFontRW" (tryOpenFontRW rw freesrc ptsize) -- TTF_Font *TTF_OpenFontIndex(const char *file, int ptsize, long index) foreign import ccall unsafe "TTF_OpenFontIndex" ttfOpenFontIndex :: CString -> CInt -> Int -> IO (Ptr FontStruct) tryOpenFontIndex :: String -> Int -> Int -> IO (Maybe Font) tryOpenFontIndex file ptsize index = withCString file $ \cFile -> ttfOpenFontIndex cFile (fromIntegral ptsize) (fromIntegral index) >>= maybePeek mkFinalizedFont openFontIndex :: String -> Int -> Int -> IO Font openFontIndex file ptsize index = unwrapMaybe "TTF_OpenFontIndex" (tryOpenFontIndex file ptsize index) -- TODO: -- -- TTF_Font *TTF_OpenFontIndexRW(SDL_RWops *src, int freesrc, int ptsize, long index)