    {-# 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