GLUtil-0.7.5: src/Graphics/GLUtil/Viewport.hs
-- | Helpers for working with OpenGL viewports.
module Graphics.GLUtil.Viewport where
import Control.Monad.IO.Class
import Graphics.Rendering.OpenGL
-- | @withViewport pos sz m@ runs the action @m@ after setting the
-- viewport with the given 'Position' and 'Size'. The viewport is
-- reset to its original state after the action is run, and the result
-- of the action is returned.
withViewport :: MonadIO m => Position -> Size -> m a -> m a
withViewport p s m = do oldVP <- liftIO $ do oldVP <- get viewport
viewport $= (p,s)
return oldVP
r <- m
liftIO $ viewport $= oldVP
return r