{-# OPTIONS_HADDOCK hide #-}

module Graphics.Gloss.Internals.Interface.ViewState.Reshape
        (callback_viewState_reshape, viewState_reshape)
where
import Graphics.Gloss.Internals.Interface.Callback
import Graphics.Gloss.Internals.Interface.Backend
import Graphics.Rendering.OpenGL                        (($=))
import qualified Graphics.Rendering.OpenGL.GL           as GL


-- | Callback to handle keyboard and mouse button events
--      for controlling the viewport.
callback_viewState_reshape :: Callback
callback_viewState_reshape
        = Reshape (viewState_reshape)


viewState_reshape :: ReshapeCallback
viewState_reshape stateRef (width,height)
 = do
        -- Setup the viewport
        --      This controls what part of the window openGL renders to.
        --      We'll use the whole window.
        --
        GL.viewport     $= ( GL.Position 0 0
                           , GL.Size (fromIntegral width) (fromIntegral height))
        postRedisplay stateRef