module LiveCoding.Gloss.PictureM
( module LiveCoding.Gloss.PictureM
, module X
) where
import Control.Monad.Trans.Class
import Control.Monad.Trans.Reader as X
import Control.Monad.Trans.Writer.Strict
import Graphics.Gloss
import Graphics.Gloss.Interface.IO.Game
import LiveCoding
type PictureT m = ReaderT [Event] (WriterT Picture m)
type PictureM = PictureT IO
runPictureT
:: Monad m
=> Cell (PictureT m) a b
-> Cell m ([Event], a) (Picture, b)
runPictureT = runWriterC . runReaderC'
addPicture :: Monad m => Cell (PictureT m) Picture ()
addPicture = arrM $ lift . tell