content: {-# OPTIONS_HADDOCK hide #-}
  
  -- | Implements functions to dump portions of the OpenGL state to stdout.
  --      Used for debugging.
  module Graphics.Gloss.Internals.Interface.Debug
          ( dumpFramebufferState
          , dumpFragmentState )
  where
  import qualified Graphics.Rendering.OpenGL.GL   as GL
  import Graphics.Rendering.OpenGL                (get)
  
  -- | Dump internal state of the OpenGL framebuffer
  dumpFramebufferState :: IO ()
  dumpFramebufferState
   = do
          auxBuffers      <- get GL.auxBuffers
          doubleBuffer    <- get GL.doubleBuffer
          drawBuffer      <- get GL.drawBuffer
  
          rgbaBits        <- get GL.rgbaBits
          stencilBits     <- get GL.stencilBits
          depthBits       <- get GL.depthBits
          accumBits       <- get GL.accumBits
  
          clearColor      <- get GL.clearColor
          clearStencil    <- get GL.clearStencil
          clearDepth      <- get GL.clearDepth
          clearAccum      <- get GL.clearAccum
  
          colorMask       <- get GL.colorMask
          stencilMask     <- get GL.stencilMask
          depthMask       <- get GL.depthMask
  
          putStr  $  "* dumpFramebufferState\n"
                  ++ "  auxBuffers         = " ++ show auxBuffers         ++ "\n"
                  ++ "  doubleBuffer       = " ++ show doubleBuffer       ++ "\n"
                  ++ "  drawBuffer         = " ++ show drawBuffer         ++ "\n"
                  ++ "\n"
                  ++ "  bits       rgba    = " ++ show rgbaBits           ++ "\n"
                  ++ "             stencil = " ++ show stencilBits        ++ "\n"
                  ++ "             depth   = " ++ show depthBits          ++ "\n"
                  ++ "             accum   = " ++ show accumBits          ++ "\n"
                  ++ "\n"
                  ++ "  clear      color   = " ++ show clearColor         ++ "\n"
                  ++ "             stencil = " ++ show clearStencil       ++ "\n"
                  ++ "             depth   = " ++ show clearDepth         ++ "\n"
                  ++ "             accum   = " ++ show clearAccum         ++ "\n"
                  ++ "\n"
                  ++ "  mask       color   = " ++ show colorMask          ++ "\n"
                  ++ "             stencil = " ++ show stencilMask        ++ "\n"
                  ++ "             depth   = " ++ show depthMask          ++ "\n"
                  ++ "\n"
  
  
  -- | Dump internal state of the fragment renderer.
  dumpFragmentState :: IO ()
  dumpFragmentState
   = do
          blend           <- get GL.blend
          blendEquation   <- get GL.blendEquation
          blendFunc       <- get GL.blendFunc
  
          putStr  $  "* dumpFragmentState\n"
                  ++ "  blend              = " ++ show blend              ++ "\n"
                  ++ "  blend equation     = " ++ show blendEquation      ++ "\n"
                  ++ "  blend func         = " ++ show blendFunc          ++ "\n"
                  ++ "\n"
  