module Graphics.Gloss.Rendering ( -- * Picture data type Picture (..) , Point, Vector, Path -- * Colors , Color , makeColor , makeColorI , makeRawColor , makeRawColorI , rgbaOfColor , clampColor -- * Bitmaps , Rectangle(..) , BitmapData, bitmapSize , BitmapFormat(..), PixelFormat(..), RowOrder(..) , bitmapOfForeignPtr , bitmapDataOfForeignPtr , bitmapOfByteString , bitmapDataOfByteString , bitmapOfBMP , bitmapDataOfBMP , loadBMP -- * Rendering , displayPicture , renderPicture , withModelview , withClearBuffer , RS.initState , RS.State) where import Graphics.Gloss.Internals.Rendering.Common import Graphics.Gloss.Internals.Rendering.Picture import Graphics.Gloss.Internals.Data.Picture import Graphics.Gloss.Internals.Data.Color import qualified Graphics.Gloss.Internals.Rendering.State as RS -- | Set up the OpenGL context, clear the buffer, and render the given picture -- into it. -- -- This is the same as `renderPicture` composed with `withModelview` -- and `withClearBuffer`. If you want to manage your own OpenGL context then -- you can just call `renderPicture`. -- -- Using this function assumes that you've already opened a window -- and set that to the active context. If you don't want to do your own window -- management then use the @gloss@ package instead. displayPicture :: (Int, Int) -- ^ Window width and height. -> Color -- ^ Color to clear the window with. -> RS.State -- ^ Current rendering state. -> Float -- ^ View port scale, which controls the level of detail. -- Use 1.0 to start with. -> Picture -- ^ Picture to draw. -> IO () displayPicture windowSize colorClear state scale picture = withModelview windowSize $ withClearBuffer colorClear $ renderPicture state scale picture