-- ChalkBoard Options -- October 2009 -- Kevin Matlage, Andy Gill module Graphics.ChalkBoard.Options where import Graphics.ChalkBoard.CBIR( BufferId ) import Data.Binary import Control.Monad data Options = NoFBO | DebugFrames | DebugAll -- ^ not supported (yet!) | DebugBoards [BufferId] -- ^ not supported (yet!) | BoardSize Int Int -- ^ default is 400x400. | FullScreen -- ^ not supported (yet!) deriving (Eq, Show) instance Binary Options where put (NoFBO) = put (0 :: Word8) put (DebugFrames) = put (1 :: Word8) put (DebugBoards buffs) = put (2 :: Word8) >> put buffs put (BoardSize w h) = put (3 :: Word8) >> put w >> put h put (FullScreen) = put (4 :: Word8) get = do tag <- getWord8 case tag of 0 -> return $ NoFBO 1 -> return $ DebugFrames 2 -> liftM DebugBoards get 3 -> liftM2 BoardSize get get 4 -> return $ FullScreen