gloss-relative-0.1.0.0: src/Graphics/Gloss/Relative/Internal/Dimension.hs
module Graphics.Gloss.Relative.Internal.Dimension where
import qualified Graphics.Gloss as Gloss
import Graphics.Gloss.Data.Display
import Graphics.Gloss.Interface.Environment
import Control.Monad
-- | A dimension is pair @(width,height)@.
-- When used as a screen size, the position @(0,0)@ is considered to be at the center.
type Dimension = (Float,Float)
-- | A screen size screen size is a 'Dimension' in pixels, where the position @(0,0)@ is at the center.
type ScreenSize = (Int,Int)
-- | Gets the dimension of a Gloss 'Display'.
getDisplayScreenSize :: Display -> IO ScreenSize
getDisplayScreenSize (InWindow _ dim _) = return dim
getDisplayScreenSize (FullScreen) = getScreenSize
getDisplayDimension :: Display -> IO Dimension
getDisplayDimension = liftM screenSizeToDimension . getDisplayScreenSize
screenSizeToDimension :: ScreenSize -> Dimension
screenSizeToDimension (w,h) = (realToFrac w,realToFrac h)
dimensionToScreenSize :: Dimension -> ScreenSize
dimensionToScreenSize (w,h) = (ceiling w,ceiling h)