TeaHS-0.3: Tea/ImageSaving.hs
-- |Includes the ImageSaving class, for types with savable image content, its
-- instances, and monadic helper functions.
module Tea.ImageSaving ( ImageSaving (save)
, saveM
) where
import Control.Monad.Trans
import Graphics.UI.SDL (saveBMP, Surface)
import Tea.Tea
import Tea.Screen
import Tea.Bitmap
-- |A class instantiated over all types that can save their image content to a
-- BMP file
class ImageSaving v where
-- |Save a BMP image of the providing ImageSaving type to the filename
-- specified
save :: v -> String -> Tea s Bool
save v = liftIO . saveBMP (image_saving_buffer v)
image_saving_buffer :: v -> Surface
-- |A monadic convenience function that takes a Tea action instead of a buffer to save.
saveM :: (ImageSaving v) => Tea s v -> String -> Tea s Bool
saveM m s = m >>= flip save s
instance ImageSaving Screen where
image_saving_buffer = screenBuffer
instance ImageSaving Bitmap where
image_saving_buffer = buffer